第17章 §05 · 扩展与部署 · 讲解稿¶
承接: Ch17 §04 边缘 → §05 大规模部署 篇幅: ~4000 字
一 · 一句话总览¶
大规模 LLM 部署 = K8s + Ray + 推理服务 + 监控。千卡 GPU 集群跑千亿模型, 弹性伸缩 + 多区域容灾 + 成本优化。
二 · 部署模式 3 大类¶
2.1 公有云¶
| 云厂商 | LLM 服务 |
|---|---|
| AWS | Bedrock + SageMaker JumpStart |
| GCP | Vertex AI + Model Garden |
| Azure | Azure OpenAI + AI Studio |
| Cloudflare | Workers AI (CPU 推理) |
2.2 私有云¶
- CoreWeave (GPU 专用云)
- Lambda Labs
- Together AI
- 中国: 阿里 PAI / 腾讯 TI / 百度 BML
2.3 混合云 + 边缘¶
- 数据敏感部分 → 私有云
- 弹性部分 → 公有云
- 延迟敏感 → 边缘
三 · 推理部署架构¶
3.1 单模型小流量¶
3.2 大模型 + 高流量¶
用户 → CDN/Edge
→ API Gateway (限流 / 认证)
→ 推理集群 (多个 vLLM Pod)
├─ Pod 1 (TP=4, 70B)
├─ Pod 2 (TP=4, 70B)
└─ Pod 3 (TP=4, 70B)
→ 监控 (Prometheus + Grafana)
3.3 多模型 + 多区域¶
四 · Kubernetes 部署 LLM¶
4.1 Helm Chart¶
# values.yaml
replicaCount: 3
image: vllm/vllm-openai:latest
model: meta-llama/Llama-3-70B-Instruct
tensorParallelSize: 4
gpuMemoryUtilization: 0.9
quantization: awq
resources:
limits:
nvidia.com/gpu: 4
memory: 200Gi
autoscaling:
enabled: true
minReplicas: 2
maxReplicas: 10
targetGPUUtilization: 70
4.2 Kserve + vLLM¶
apiVersion: serving.kserve.io/v1beta1
kind: InferenceService
metadata:
name: llm-service
spec:
predictor:
model:
modelFormat:
name: vllm
runtime: kserve-vllm
storageUri: s3://models/llama-3-70b
resources:
limits:
nvidia.com/gpu: "4"
五 · 模型网关¶
5.1 为什么需要网关¶
- 多模型路由 (A 模型 vs B 模型)
- 限流 / 配额 (按用户)
- Fallback (主模型宕机切备)
- A/B 测试 (灰度)
- Cost tracking (按调用计费)
5.2 LiteLLM¶
from litellm import completion
# 统一 API 调用多家模型
response = completion(
model="gpt-4",
messages=[{"role": "user", "content": "Hello"}],
api_key="...",
)
5.3 Portkey / Helicone / OpenRouter¶
- Portkey: 网关 + observability
- Helicone: LLM 监控
- OpenRouter: 多模型市场
六 · 弹性伸缩¶
6.1 KEDA + K8s HPA¶
KEDA (Kubernetes Event-Driven Autoscaling): - 基于 GPU 利用率 / 队列长度 / 延迟 - 弹性扩缩容到 0
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
name: llm-scaler
spec:
scaleTargetRef:
name: vllm-deployment
triggers:
- type: prometheus
metadata:
serverAddress: http://prometheus:9090
query: rate(http_requests_total[1m])
threshold: "100"
6.2 预测性扩容¶
- 基于历史 + 时间序列预测
- 提前扩容应对流量峰值
- 节省冷启动延迟
七 · 成本优化¶
7.1 成本维度¶
| 维度 | 优化方法 |
|---|---|
| GPU 成本 | Spot 实例 / 自研 NPU |
| 能耗 | 模型量化 / 蒸馏 |
| 请求数 | 缓存 / 批量 |
| 模型大小 | MoE / 蒸馏 |
| 延迟 | 调度 / 区域 |
7.2 Spot 实例 + 预emption 处理¶
7.3 模型路由 (按成本)¶
简单 query → Llama 3 8B ($0.05/1M token)
复杂 query → GPT-4 ($5/1M token)
代码 query → DeepSeek-Coder ($0.3/1M token)
八 · 容灾与多区域¶
8.1 主动-主动 (Active-Active)¶
- 多区域同时服务
- Anycast IP / DNS Geo-routing
- 区域故障 0 中断
8.2 主动-被动 (Active-Passive)¶
- 主区域 + 备区域
- 故障时切备 (5-30 分钟)
- 成本低
8.3 数据同步¶
- 模型权重跨区域同步 (S3 Cross-Region Replication)
- 配置 (ConfigMap) 全局一致
- KV cache 不跨区域
九 · 监控告警¶
9.1 4 层监控¶
| 层 | 工具 | 指标 |
|---|---|---|
| 业务 | Mixpanel / Amplitude | DAU / 转化 |
| 应用 | Langfuse / Phoenix | 延迟 / 错误率 |
| 模型 | Custom | Token/s / 队列 |
| 基础设施 | Prometheus + Grafana | GPU / 网络 |
9.2 关键告警¶
alerts:
- name: HighLatencyP99
condition: http_request_duration_p99 > 2s for 5m
severity: critical
- name: HighErrorRate
condition: error_rate > 1% for 5m
severity: critical
- name: GPUHighMemory
condition: gpu_memory_used > 90% for 10m
severity: warning
- name: ModelCostSpike
condition: daily_cost > budget * 1.5
severity: warning
十 · 一句话总结¶
LLM 部署 = K8s + vLLM + 网关 + 弹性 + 多区域 + 监控。千卡 GPU 集群 + 推理服务 + 智能路由 + 成本优化 让 LLM 服务达到互联网级别的可靠性。未来 Serverless LLM + Edge LLM = 普及。