GOCLAWLLM ENGINEERING
GoClaw 首页

14. 服务、部署与可观测性

系统工程3~5 小时
学习目标
  1. 把 checkpoint 暴露为本地 API
  2. 定义延迟、吞吐和可用性指标
  3. 理解鉴权、限流、灰度与回滚
前置知识
  • 完成模型推理实验
  • HTTP 与进程基础

本章产物可测试的本地服务、错误用例和生产差距清单。

14.1 本地开发服务

MLX-LM:

mlx_lm.server \
  --model mlx-community/Qwen3-8B-4bit \
  --host 127.0.0.1 \
  --port 8080

llama.cpp:

llama-server \
  -hf Qwen/Qwen3-8B-GGUF:Q4_K_M \
  -ngl 99 \
  -c 8192 \
  --host 127.0.0.1 \
  --port 8081

这类本地 server 便于学习 OpenAI-compatible API,但不要未经鉴权直接暴露公网。

14.2 生产推理要解决什么

14.3 延迟和吞吐的冲突

等待更多请求组 batch:

应按服务等级目标设计:

交互聊天:重视 TTFT 和 TPOT
离线批处理:重视总 token/s 和成本
高并发 API:重视 P50/P95/P99、拒绝率和队列长度

平均值会隐藏长尾,生产环境必须看分位数。

14.4 vLLM

vLLM 提供离线批量推理和 OpenAI-compatible server,其重点包括高效 KV Cache 管理、连续批处理和多 GPU 支持。

当前 vLLM 文档通过独立的 vLLM-Metal 插件提供 Apple Silicon 路线;该插件使用 MLX 作为计算后端,功能和安装约束应以插件文档为准。如果学习目标是 CUDA 数据中心推理,仍需在 Linux + NVIDIA 环境单独练习 tensor parallel、NCCL 和 CUDA 内核。

概念命令:

vllm serve Qwen/Qwen3-0.6B

实际安装和设备参数变化较快,执行前使用本手册末尾的官方 vLLM Quickstart。

14.5 可观测性

最低限度记录:

日志要脱敏。不要把用户隐私、访问令牌或完整机密 prompt 随意写入日志。

14.6 动手:把 TinyGPT 暴露为可测量的本地 API

实验 08|Local Serving 资源:已完成实验 04;时间:约 5 分钟;产物:健康检查、生成响应、错误响应和延迟记录。

先确保 checkpoint 存在,再启动只监听本机的服务:

python code/09_serve_tiny_gpt.py \
  --checkpoint artifacts/checkpoints/tiny-gpt-base.pt \
  --host 127.0.0.1 \
  --port 8080

另开终端检查健康状态:

curl -fsS http://127.0.0.1:8080/healthz

响应应包含 status=ok 与实际 device。请求生成:

curl -fsS \
  -H 'Content-Type: application/json' \
  -d '{"prompt":"注意力","max_new_tokens":40,"temperature":0.8}' \
  http://127.0.0.1:8080/v1/generate

响应除了文本,还包含 prompt token、生成 token、总耗时和 token/s。随后必须测试错误路径:空请求、词表外 prompt、超大 max_new_tokens 和不存在的路由。

这个教学服务故意没有实现生产能力。进入部署前,需要补齐:

验收标准:API 能正常返回并不等于服务完成;还要证明错误输入可诊断、指标口径明确、只监听预期网络接口,并能说明为什么不能直接暴露公网。


本章依据

原理性结论以原始论文、官方文档或公开教材为依据。论文中的实验结果只适用于其声明的模型、数据、硬件和评估设置。

  1. KV Cache 内存管理和 vLLM 高吞吐服务。

  2. 迭代级调度和选择性批处理。

  3. 指标、日志和分布式追踪的开放可观测性标准。

  4. 官方文档vLLM Quickstart

    当前服务命令、支持平台以及 Apple Silicon 的插件边界。