弹性伸缩
Elastic Scaling
运行时动态增减推理节点,实现集群弹性伸缩
子问题
1.节点加入与退出协调
2.权重在线迁移
3.进程组动态重配置
4.负载感知伸缩策略
5.CUDA Graph 与 torch.compile 缓存在拓扑变更后的失效重建
6.EngineCore 间伸缩通知时序不一致的同步协调
7.KV Cache 显存在新旧拓扑间的同步与对齐
各项目的解法1 solutions
Signals
横向对比
| 维度 | vLLM |
|---|---|
| 伸缩触发 | HTTP API /scale_elastic_ep,支持 drain_timeout |
| 状态机模型 | 4 种 IntEnum 状态机(ScaleUp/Down × Existing/New),progress() 轮询推进 |
| 通信组管理 | StatelessGroupCoordinator 独立于 WORLD group,standby 双轨预建+原子切换 |
| 权重迁移 | batch_isend_irecv P2P 批量传输,发送者-接收者均匀配对 |
| 流量保护 | ASGI 中间件全局 bool flag,伸缩期间 503 拒绝所有请求 |
| 同步机制 | 两阶段 TCPStore barrier,5 秒超时后退让一轮 forward 再重试 |
| 专家重均衡 | EPLB reshuffle,支持 rank_mapping 指定缩容后专家迁移目标 |
最佳实践
1.使用standby节点减少扩容延迟
2.批量传输权重降低迁移开销
3.用两阶段 TCPStore barrier 解决异步通知的时序差问题
4.伸缩期间通过 ASGI 中间件返回 503 保证操作原子性
5.发送者-接收者均匀配对避免单节点传输瓶颈