ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

llama.cpp Docker 部署指南:一条命令拉起 LLM 推理 API,附 GPU 与生产编排方案

llama.cpp Docker 部署指南:一条命令拉起 LLM 推理 API,附 GPU 与生产编排方案 llama.cpp Docker 部署指南一条命令拉起 LLM 推理 API附 GPU 与生产编排方案【免费下载链接】llama.cppLLM inference in C/C项目地址: https://gitcode.com/GitHub_Trending/ll/llama.cpp本文讲 llama.cpp Docker 部署llama.cpp 是纯 C/C 推理引擎不依赖 Python 环境一条docker run命令就能起一个随时可调用的 HTTP 推理 API。全文覆盖镜像选型、CPU 最小化部署、接口调用、GPU 加速与生产编排。选型速览先判断 llama.cpp 该拉哪个 Docker 镜像选镜像只取决于两件事机器上有没有 GPU、是什么 GPU以及这个服务是临时跑还是长期跑。把决策表放在前面对号确认后再动手显卡条件临时体验长期生产无 GPUserver镜像关键参数-c 4096、-t填物理核数server镜像 Compose补重启策略、日志轮转与健康检查NVIDIAserver-cuda镜像加--gpus all与--n-gpu-layers 99CUDA 镜像装进 Compose配置同上AMDserver-rocm镜像仅 amd64 平台用法与 CUDA 版一致ROCm 镜像装进 Composeserver这个 tag 的镜像里只有llama-server可执行文件体积最小纯推理场景完全够用fulltag 额外带模型转换与量化工具链临时跑服务用不上不必多拉。CPU 最小化部署llama.cpp 一条 docker run 命令跑通推理服务整个过程不碰源码不用 clone 仓库也没有本地编译环节宿主机 Docker 能跑就行。下面这条命令同时完成四件事——拉取官方server镜像、映射端口、挂载模型目录、启动 HTTP 服务docker run -d --name llama-server \ -p 8080:8080 \ -v /data/models:/models \ ghcr.io/ggml-org/llama.cpp:server \ -m /models/7b-instruct-q4_k_m.gguf \ --host 0.0.0.0 --port 8080每个参数都有明确用意-p 8080:8080把宿主机端口映射到容器内服务端口-v /data/models:/models把本地模型目录挂进容器模型文件不烧进镜像以后换模型只需替换挂载目录里的文件-m指定 GGUF 模型在容器内的路径--host 0.0.0.0让服务监听容器的所有网卡漏掉这个参数外部机器就访问不到。服务起来后做两个验证。第一健康检查curl http://localhost:8080/health返回{status:ok}即就绪。第二浏览器直接打开http://localhost:8080/llama-server 自带一个 Web 聊天页打开就能和模型对话无需自己写前端。⚠️ 动手前确认两点要跑的模型文件只能是 GGUF 格式llama.cpp 统一用它作为模型载体内存吃紧时优先挑低精度量化版本如 Q4_K_M。性能预期可作为参照7B 参数 Q4_K_M 量化在普通桌面 CPU 上通常能跑到几到几十个 token/s首 token 延迟在 1 秒以内算正常。明显慢于这个水平时先用top确认线程是否真正跑满再回头检查两个可调参数-c是上下文长度上限直接决定内存占用从 4096 起步、内存吃紧就往下调-t是 CPU 线程数填物理核心数即可。llama-server 怎么调接口/completion 与 /v1/chat/completions 两种调法服务暴露一组 HTTP 接口日常用得多的是两个。原生补全接口/completion——prompt 由自己拼好模型只负责续写curl http://localhost:8080/completion \ -H Content-Type: application/json \ -d {prompt: 介绍一下 llama.cpp, n_predict: 64, stream: false}OpenAI 兼容接口/v1/chat/completions——手上已有 OpenAI SDK 代码的话只需把 base URL 指过来其余逻辑一行不动curl http://localhost:8080/v1/chat/completions \ -H Content-Type: application/json \ -d {messages: [{role: user, content: 你好}], max_tokens: 64}容器里做的事情本质上是模型逐 token 做矩阵乘法下面的采样参数只决定每次乘法完成后如何从输出概率分布里挑出下一个 token参数含义建议值temperature控制采样随机性调高输出越发散创作类 0.7问答类 0.1top_p核采样阈值只在累计概率达到 p 的候选 token 范围内挑选0.9n_predict/max_tokens单次请求最多生成的 token 数按需限死别让它把上下文吃满stream是否逐 token 流式返回前端交互场景设 truerepeat_penalty对重复内容的惩罚强度1.1llama.cpp 怎么开 GPU 加速服务如何长期稳定运行NVIDIA 显卡换 server-cuda 镜像开 CUDA 推理相比 CPU 版只动两处镜像 tag 换成server-cuda启动参数加--gpus all前提是宿主机已安装 nvidia-container-toolkit再带上--n-gpu-layers 99把尽可能多的层卸载到显存docker run -d --name llama-server \ --gpus all \ -p 8080:8080 \ -v /data/models:/models \ ghcr.io/ggml-org/llama.cpp:server-cuda \ -m /models/7b-instruct-q4_k_m.gguf \ --host 0.0.0.0 --port 8080 \ --n-gpu-layers 99如果显存装不下、启动即 OOM就把 99 逐级往下调调到能顺利加载为止7B Q4_K_M 的权重基本能完整放进 8GB 显存。判断是否生效看两处启动日志里出现 CUDA 设备初始化单 token 速度比 CPU 快出数倍。AMD 显卡server-rocm 镜像仅 amd64镜像 tag 换成server-rocm--gpus all与--n-gpu-layers的用法和 NVIDIA 一致需要留意的是 ROCm 镜像只提供 amd64 平台。vulkan、intel 等其他后端对应的镜像 tag可以在 Docker 官方文档 里查到。长期运行Compose 编排 健康检查 日志轮转服务要长期在线就不该再依赖一次性命令。把配置固化进 Compose 文件重启策略、日志上限、健康检查一并落定services: llama-server: image: ghcr.io/ggml-org/llama.cpp:server restart: unless-stopped ports: [8080:8080] volumes: [/data/models:/models] logging: driver: json-file options: {max-size: 10m, max-file: 3} command: -m /models/7b-instruct-q4_k_m.gguf --host 0.0.0.0 --port 8080 healthcheck: test: [CMD, curl, -f, http://localhost:8080/health] interval: 30s retries: 3docker compose up -d启动服务docker compose logs -f实时跟踪日志。restart: unless-stopped让宿主机重启之后服务自动恢复日志驱动限制单文件 10MB、最多保留 3 份避免容器日志把磁盘写满。镜像内部其实已内置健康检查这里显式写一遍是为了升级镜像版本时行为不依赖默认值。跑不通时自查llama.cpp Docker 部署的 6 个高频故障服务起不来或行为不对时按下面这张表从高频到低频排查现象最可能的原因修复方式容器秒退日志提示找不到模型-v挂载之后容器内路径拼错核对挂载参数模型在容器内必须位于/models/下GPU 没生效日志里只有 CPU backend宿主机没装 nvidia-container-toolkit装好 toolkit 后执行docker run --gpus all 镜像 nvidia-smi验证启动 OOM进程被直接杀掉上下文过长或卸载到 GPU 的层数过多调小-c或降低--n-gpu-layers、改用低精度量化API 一律返回 401服务端启用了 key 而请求未携带启动时加--api-key key请求头里带上同一个 key其他机器访问不到端口服务只绑定 127.0.0.1或防火墙拦截用--host 0.0.0.0启动并在防火墙放行对应端口前几分钟响应极慢模型仍在加载阶段等日志出现加载完成后再发请求部署稳定之后监控接入与横向扩容llama-server 自带/metrics端点Prometheus 可以直接抓取做监控流量上来需要横向扩容时用 nginx 给多个实例做负载均衡或者把上面的 Compose 配置平移成 K8s Deployment 即可。【免费下载链接】llama.cppLLM inference in C/C项目地址: https://gitcode.com/GitHub_Trending/ll/llama.cpp创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表