开发指南
生产部署架构
单机多卡
适用于 70B 等超大模型,使用 Tensor Parallelism:
vllm serve Qwen/Qwen2-72B-Instruct --tensor-parallel-size 4
多实例 + 负载均衡
- Nginx:
upstream配置多个推理服务后端 - Kubernetes:Deployment 多副本 + Service ClusterIP/LoadBalancer
与 Dify、LangChain 集成
将推理服务的 base_url 配置为自建端点即可:
- Dify:模型配置 → 自定义 OpenAI 兼容 API → 填入
http://your-serving-host:8000/v1 - LangChain:
ChatOpenAI(base_url="http://...", api_key="dummy")
性能优化
吞吐优化
- 增大 batch 大小:
--max-num-seqs(vLLM)提高并发批大小 - 量化:使用 AWQ、GPTQ 等量化模型降低显存,可跑更大 batch
- 连续批处理:vLLM 默认启用,无需额外配置
延迟优化
- 流式输出:降低 TTFT,用户更快看到首字
- 减少 max_tokens:按业务需要设置上限
- 预加载:保持服务常驻,避免冷启动
显存优化
- 量化:INT4 可显著降低显存,参见 模型量化
gpu-memory-utilization:vLLM 默认 0.9,可根据稳定性调整- max-model-len:减小上下文长度可节省显存
安全与访问控制
- 认证:生产环境建议加 API Key 或 OAuth,避免裸接口暴露
- 限流:防止单用户占满资源,可用 Nginx
limit_req、Kong、APISIX 等 - 输入过滤:对 prompt 做长度、敏感词、注入检测
- 输出过滤:可根据合规要求过滤输出内容
健康检查与运维
健康端点
curl http://localhost:8000/health
日志与监控
- 日志:记录请求 ID、模型、Token 数、耗时
- 指标:Prometheus 暴露
request_duration、queue_size等 - 告警:错误率、延迟 P99、GPU 利用率超阈值时告警
扩缩容实践
Kubernetes HPA
需暴露自定义指标(如 QPS、队列长度),配置 HPA 基于该指标扩缩容。
冷启动应对
- 预留最小副本数,避免流量突增时从 0 扩容
- 使用 K8s
minReplicas或云厂商预留实例
与微调、量化的协同
| 环节 | 说明 |
|---|---|
| 微调 | 微调后的模型导出为 Safetensors,供 vLLM/TGI 加载 |
| 量化 | 量化后的 GGUF、AWQ 等格式可由对应推理框架加载 |
| 推理服务 | 对外提供 API,供应用层调用 |