大模型推理平台架构设计(vLLM + 分层架构 + 弹性扩缩)
一、背景
大模型推理追求高吞吐、低延迟。vLLM 等推理引擎通过 PagedAttention、continuous batching 大幅提升吞吐。在 K8s 上需设计分层可弹性伸缩的推理平台。
二、环境信息
- K8s + GPU 节点(A100/L20)
- 推理引擎:vLLM 0.4.x
- 模型存储:对象存储(S3) 或 PVC(共享文件系统)
- 路由:Ingress / Gateway
三、操作要点
分层架构
1 2 3
| 接入层 :Ingress / API Gateway(鉴权、限流、路由) 推理层 :vLLM Deployment(多副本, 模型层 :模型权重(initContainer 从 S3 拉取,或挂载 PVC/Ceph)
|
vLLM 部署片段
1 2 3 4 5 6
| containers: - name: vllm image: vllm/vllm-openai:latest args: ["--model", "Qwen2-72B", "--tensor-parallel-size", "4", "--gpu-memory-utilization", "0.9", "--max-model-len", "8192"] resources: { limits: { nvidia.com/gpu: 4 } }
|
弹性伸缩
1 2
| kubectl autoscale deployment vllm --cpu-percent=70 --min=2 --max=8
|
四、验证方式
1 2 3
| curl http://<svc>/v1/completions -H "Content-Type: application/json" -d '{"model":"Qwen2-72B","prompt":"你好","max_tokens":32}' kubectl get hpa kubectl top pods
|
五、常见问题
- 显存不足 OOM:调小
--gpu-memory-utilization 或 --max-model-len,或增加 TP 卡数
- 模型加载慢 / 冷启动:预热副本、模型权重放本地 PVC
- 单副本瓶颈:增加副本 + 网关负载均衡;超长上下文需更多显存
- 版本回滚:用 Deployment 滚动更新与 revisionHistoryLimit 保留历史