llama.cpp Docker 部署1 条命令出 API3 步加固到生产级【免费下载链接】llama.cppLLM inference in C/C项目地址: https://gitcode.com/GitHub_Trending/ll/llama.cpp想用 llama.cpp Docker 部署跑 LLM 推理又不想被依赖版本和 CUDA 不匹配折腾这份教程解决的就是这件事不装 Python、不编译容器拉起来就是可调用的 HTTP 推理 API。适合手里已有 GGUF 模型、从本机试用到长期挂服务都覆盖。验收标准一条curl /health 返回 ok补全请求首 token 在 1 秒内。一条命令起 CPU 推理服务镜像选 server tag里面只有 llama-server 一个可执行文件体积最小纯 CPU 试用完全够。⚠️ 唯一前提模型文件必须是 GGUF 格式内存紧张就挑低精度量化。这条命令一次完成挂模型、开端口、起服务三件事省掉 clone 仓库和手动编译docker run -d --name llama-server \ -p 宿主机端口:8080 \ -v 你的模型目录:/models \ ghcr.io/ggml-org/llama.cpp:server \ -m /models/你的模型文件.gguf \ --host 0.0.0.0 --port 8080模型加载完成后用这条命令确认服务真正就绪curl http://localhost:宿主机端口/health✅ 返回 {status:ok} 之后浏览器直接打开 http://localhost:宿主机端口/llama-server 自带聊天页先随便聊两句确认输出正常。想调性能只动下面这两个参数参数含义建议值-c上下文窗口上限内存消耗跟着它走4096吃紧就降-t参与推理的 CPU 线程数物理核心数以 7B Q4_K_M 为例普通桌面 CPU 上通常能跑出几到几十个 token/s明显偏慢就先 top 看线程有没有吃满。GPU 没生效先查这行日志CPU 速度不够时把 tag 换成 server-cuda命令加 --gpus all前提是宿主机装好 nvidia-container-toolkitdocker run -d --name llama-server-gpu \ --gpus all \ -p 宿主机端口:8080 \ -v 你的模型目录:/models \ ghcr.io/ggml-org/llama.cpp:server-cuda \ -m /models/你的模型文件.gguf \ --host 0.0.0.0 --port 8080 \ --n-gpu-layers 99--n-gpu-layers 99 表示把尽量多的层甩进显存启动后跑这条命令确认 CUDA 真的初始化了docker logs llama-server-gpu 21 | grep -i cuda✅ 日志里出现 CUDA 设备信息和层分配、单 token 速度比 CPU 快数倍才算生效。显存装不下被 OOM 杀掉时把 99 逐步调低7B Q4_K_M 在 8GB 显存基本能全放进去。AMD 和 Vulkan 卡只换 tagAMD 卡用 server-rocm仅 amd64 平台同样带 --gpus all 和 --n-gpu-layersIntel、Vulkan 等其余 tag 的完整清单见 docs/docker.md。Compose 三行配齐重启和轮转要长期挂着一次性命令就不够了重启策略、日志轮转、健康检查一次写进 Compose 文件模型目录照旧挂载services: llama-server: image: ghcr.io/ggml-org/llama.cpp:server restart: unless-stopped ports: [宿主机端口:8080] volumes: [./models:/models] logging: driver: json-file options: {max-size: 10m, max-file: 3} command: -m /models/你的模型文件.gguf --host 0.0.0.0 --port 8080 healthcheck: test: [CMD, curl, -f, http://localhost:8080/health] interval: 30s retries: 3日志限 10MB 只留 3 份防止撑爆磁盘健康检查显式声明后以后换镜像 tag 也不怕行为漂移。启动并确认状态变 healthydocker compose up -d docker compose ps✅ ps 里 STATUS 显示 (healthy) 就齐活了平时追日志用 docker compose logs -f。跑通后怎么调两个最常用接口原生补全接口适合自己拼好 prompt 让模型续写返回结构最简curl http://localhost:宿主机端口/completion \ -H Content-Type: application/json \ -d {prompt: 用一句话介绍 llama.cpp, n_predict: 64, stream: false}已有 OpenAI SDK 的代码想复用把 base URL 打到 OpenAI 兼容接口就行其余不动curl http://localhost:宿主机端口/v1/chat/completions \ -H Content-Type: application/json \ -d {messages: [{role: user, content: 你好}], max_tokens: 64}两条都能直接拿到 JSON 文本能正常出 token 就说明链路通了。 容器里模型一直在做矩阵乘法下面这些参数不影响计算量只决定每次算完概率后怎么挑下一个 token参数含义建议值temperature采样随机性越高越发散创作 0.7问答 0.1top_p核采样阈值只在累计概率 p 内挑0.9n_predict / max_tokens最多生成 token 数限死别吃满上下文stream是否逐 token 流式返回前端体验选 truerepeat_penalty惩罚重复内容1.1故障速查卡住先对号入座这 6 个现象最可能原因修复动作容器秒退日志说找不到模型容器内路径写错检查 -v 挂载容器内统一用 /models/...日志只有 CPU backend宿主机没装 nvidia-container-toolkit装 toolkit 后 docker run --gpus all 镜像 nvidia-smi 验证启动 OOM 被杀上下文过长或 GPU 层数过多调小 -c / --n-gpu-layers或换低精度量化API 返回 401服务端设了 key 请求没带启动加 --api-key请求头带同一个 key别的机器访问不到只绑了 127.0.0.1 或防火墙拦截--host 0.0.0.0 并在防火墙放行端口前几分钟响应极慢模型还在加载等日志出现加载完成再发请求服务跑稳之后看三个方向接 /metrics 端点给 Prometheus 抓指标要横向扩容就在前面加 nginx 给多个实例做负载均衡换模型时把新 .gguf 放进挂载目录、改 -m 重启容器即可。【免费下载链接】llama.cppLLM inference in C/C项目地址: https://gitcode.com/GitHub_Trending/ll/llama.cpp创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考