模型副本应该如何放置到 GPU 上?
简化版
模型副本放置是带约束的装箱与调度问题:先保证模型权重、KV Cache 和运行时余量能装入目标 GPU,再优化卡型匹配、NVLink/网络拓扑、缓存局部性、故障域、租户隔离和成本。能放下不代表能满足吞吐和延迟。
单卡模型优先完整副本,减少通信;需要张量并行时尽量放在同一高速互联域;跨节点只在容量或规模确有需要时使用。热点模型多副本分散到不同主机/机架,避免单点故障;路由则考虑队列、KV/前缀缓存命中和数据地域。
详细版
放置前先为每个副本建立资源画像:权重显存、目标并发下 KV、临时工作区、GPU 型号、并行度、启动时间和预期流量。节点画像包括可用显存、算力、互联拓扑、NUMA、本地权重缓存、故障域和成本。
hard constraints: memory, GPU capability, TP topology, region, isolation
soft objectives : latency, throughput, cache locality, availability, cost
调度采用硬约束先过滤,再对候选节点打分;发布后根据分桶 SLO、队列 Token、KV 水位和流量变化再平衡。迁移或扩副本具有权重加载冷启动,不能频繁追逐瞬时负载。
完整版教学
1. 为什么它不只是显存装箱
两个方案都能容纳权重,但一个可能跨慢速 PCIe 做张量并行,另一个位于同一 NVLink 域,延迟差异很大。副本还要承载 KV 和运行时峰值,不能把权重塞满整卡。
放置同时影响性能、可用性、缓存命中和成本,因此应区分硬约束与优化目标。
2. 副本资源画像包含什么
显存预算至少包括权重、KV、激活/临时缓冲、通信区、CUDA Graph 和安全余量:
required_vram = weights + target_kv + workspace + graph + margin
还要标注最低算力能力、支持精度、张量并行度、本地磁盘权重大小与启动耗时。
3. 节点画像为何重要
同型号 GPU 所处拓扑也可能不同。节点需记录 GPU 数量与空闲显存、NVLink/NVSwitch 连接、PCIe 层级、CPU NUMA、网卡和本地模型缓存。
调度器如果只看到“8 张 GPU”,可能把一个 TP=4 副本跨到两个弱互联域,通信开销显著增加。
4. 单卡还是多卡部署
模型能以目标精度单卡容纳且性能达标时,单卡副本通常更简单、故障域更小。大模型必须切分时,再选择张量、流水线或专家并行。
| 方式 | 优点 | 主要代价 |
|---|---|---|
| 单卡副本 | 无跨卡通信、扩缩简单 | 单卡容量受限 |
| 张量并行 | 降低单卡权重、低延迟协同 | 每层通信频繁 |
| 流水线并行 | 跨节点更可行 | 气泡与调度复杂 |
| 多完整副本 | 高可用、吞吐扩展 | 权重重复占用 |
并行方式应由模型大小和实测通信决定。
5. 拓扑感知如何落地
张量并行 Rank 优先放进同一 NVLink/NVSwitch 域,其次同主机 PCIe,最后才考虑跨节点高速网络。Pipeline Stage 可跨较慢边界,但仍需评估激活传输。
调度时把一组 GPU 作为 Gang 原子分配,避免只拿到部分资源后长期等待其余卡。
6. 为什么要留 KV 余量
副本权重固定,KV 随并发与长度增长。只按空闲显存放置会让副本启动成功,却在真实流量下立即 OOM。
应根据目标输入/输出长度高分位计算 KV 预算,并设置准入高水位。不同业务流量画像不同,相同模型副本的安全并发也可能不同。
7. 热点模型如何扩副本
热点模型需要多个完整副本分担流量。副本数近似由目标到达率除以单副本在 SLO 内的稳定服务率,再加故障余量。
replicas >= ceil(peak_arrival_rate / safe_replica_capacity) + failure_headroom
容量应来自真实长度压测,而非短 Prompt 的峰值 QPS。
8. 故障域怎样分散
多个副本若都在同一主机或机架,一个电源、交换机或节点故障会全部丢失。关键模型应跨主机、机架或可用区放置。
跨区域副本还能满足地域容灾与数据驻留,但流量不应为缓存命中而违反数据合规或引入不可接受网络延迟。
9. 缓存局部性如何利用
节点已有模型权重时,新副本冷启动更快;某副本已有会话 KV 或前缀缓存时,后续请求路由到它可降低 TTFT。
局部性是软目标,不能压过故障分散和负载均衡。过度粘性会让某副本排队,而其他副本空闲,需要设置等待阈值后打破粘性。
10. 多模型共置的取舍
低流量模型共置能提高利用率,但会争用显存带宽、计算和工作区。应给每个模型设置显存与并发上限,并压测最坏组合。
高敏感、高优先级或性能波动不可接受的模型使用独立池/MIG。不能只根据平均 GPU-Util 判断共置安全。
11. 异构 GPU 怎样匹配
不同卡型在显存、带宽、低精度算力和成本上不同。长上下文 Decode 可能更偏好高带宽/大显存,批量 Prefill 更偏好强计算。
模型量化和 Kernel 也可能只在特定架构高效。调度前用兼容标签硬过滤,再按单位成功请求成本选择卡型。
12. 再平衡为何不能太频繁
移动模型副本通常要重新加载几十 GB 权重、预热并转移流量。频繁响应短时波动会造成启动风暴和缓存失效。
扩缩容使用迟滞、冷却时间和预测流量;先把新副本预热到 Ready,再停止旧副本准入并排空请求。
13. 如何打分和验收
候选节点可按拓扑、可用 KV、本地缓存、故障分散和成本加权:
score = topology + capacity + cache_locality + failure_spread - cost
上线验收看分模型 TTFT/TPOT、队列、KV 水位、通信占比、冷启动、故障恢复和单位成功成本。模拟失去一台主机,确认剩余副本仍可承载降级目标。
好的放置不是把每张卡塞满,而是让模型在故障和流量波动下仍有可预测容量。
14. 常见误区与追问
- 误区:模型权重能放下就能部署。 KV、工作区和安全余量同样占显存。
- 误区:任意 GPU 组合都能做张量并行。 拓扑和通信带宽决定实际性能。
- 误区:同模型副本放同一主机最方便。 会扩大共同故障风险。
- 误区:缓存命中应压过所有目标。 不能牺牲负载均衡、隔离和合规。
- 误区:扩缩容可以紧跟瞬时 GPU 利用率。 冷启动与迁移成本会导致震荡。
- 追问:为何需要 Gang Scheduling? 多卡副本必须同时获得完整 GPU 集合才能启动。
- 追问:异构卡如何选? 以兼容性硬过滤,再比较目标流量下的 SLO 与单位成本。
15. 加强记忆
- 先画画像:模型资源与节点资源。
- 再做硬约束:显存、精度、地域、隔离、并行度。
- 再看拓扑:TP 优先高速互联域。
- 再留容量:KV、工作区和故障余量。
- 再分散风险:跨主机/机架放置完整副本。
- 再用局部性:权重和前缀缓存只能作为软目标。
- 最后验收:SLO、通信、冷启动、容灾和单位成本。