18 并行策略
18.1 切分方式
模型装不进一张卡时有四种切法,各自的通信代价完全不同。并行解决容量或吞吐问题,同时创造了一个分布式系统:多卡不是把单卡性能相加,模型怎样切、状态放在哪里、每一步交换什么、请求怎样路由,都会产生新的通信与调度成本。
| 切法 | 英文 | 切什么 | 通信代价 |
|---|---|---|---|
| 张量并行 | Tensor Parallel | 把每一层内部的矩阵横向切开 | 每层都要同步,极高,只适合机内高速互联 |
| 流水并行 | Pipeline Parallel | 把不同层分给不同卡 | 只在层边界传递,低,可跨机;引入流水线空洞和阶段不均 |
| 数据并行 | Data Parallel | 整份模型复制多份,请求分流 | 无跨卡通信,但显存翻倍 |
| 专家并行 | Expert Parallel | 把 MoE 的专家分到不同卡 | 只传被路由到的 token,中等;有负载不均风险 |
选择的起点是问题而不是技术:单卡装不下、单副本吞吐不足、单请求延迟过高,还是专家容量太大。工程惯例是把高频的张量并行留在单节点高速互联内,再用流水并行或副本扩到节点间;这是有用的起点,不是所有拓扑的全局最优。核决策树三步收敛:第一步问单卡在目标精度下装不装得下权重与最小运行状态,装不下才需要 TP、PP、量化或更大显存;第二步问单副本满不满足单请求延迟,不满足时加副本只提高总吞吐,不改善单请求;第三步按目标到达率算需要多少副本,并把冷启动和故障余量计入。副本数不是静态除法:单副本低负载能扛的请求率,在高并发下因排队和批次变化未必线性放大,应从目标长度分布实测每副本有效吞吐,再留升级、故障和突发余量。
18.2 专家并行
MoE 架构改变了推理的成本结构:显存按总参数算,算力按激活参数算。混合专家模型把前馈层拆成许多个专家,每个 token 只路由到其中少数几个。以 2026 年 7 月开放权重的 Kimi K3 为例:总参数 2.8 万亿,从 896 个专家中每次激活约 1040 亿参数。核这意味着算力开销只有同等规模稠密模型的约二十五分之一,但全部 2.8 万亿参数都必须常驻显存,随时可能被路由到。专家并行的代价是 token 分发的全互联通信和专家负载不均,这两项要在真实流量下实测。
18.3 分离部署
PD 分离把 prefill 和 decode 放到不同的机器上,因为它们要的硬件不一样。回到 15.2 的结论:prefill 吃算力,decode 吃带宽,混在同一批卡上跑会互相干扰,一个长 prefill 会把正在 decode 的请求卡住,造成出字抖动。分离部署把两类任务放到独立资源池,prefill 算完后把 KV 缓存通过高速链路传给 decode 节点。DistServe 和 Splitwise 都验证了这个方向:为两个阶段独立选硬件、并行和容量,按各自的服务目标配置。核
分离不是免费的,它新增三个接口:prefill 池的出口、KV 传输路径、decode 池的入口。收益成本账要算清楚:
| 收益 | 新成本 |
|---|---|
| 长 prefill 不再直接阻塞 decode | KV 状态要跨池传输 |
| 两池可独立扩容和选并行 | 两边容量比例可能失配 |
| 可为阶段选择不同硬件或精度 | 跨池排队、失败和一致性更复杂 |
提示词短、KV 很大或网络较慢时,传输可能抵消收益;长 prefill 对交互 decode 干扰严重、两阶段负载稳定可预测时,分离更可能成立。官方文档也把 PD 收益描述为依工作负载而定,核任何声称分离一定更快的说法都要回到具体负载验证。
18.4 异构组合
PD 分离打开了一扇门:两个池可以用不同厂商的芯片。既然 prefill 要算力、decode 要带宽,两者的最优硬件本来就不同,用高端卡做 decode、其他型号做 prefill 就是自然的组合。这在受限市场里有直接的现实意义:把稀缺的高端卡用在最吃紧的环节,其余环节用能拿到的产能补齐。录音里描述的国内做法是 B300 配国产卡做 PD 分离,已在两地建成集群并投入交付。录待该说法未经我方核实,但技术路径本身成立,行业里有多家在做同方向尝试。这条主张的完整核验拆法见第 40 章:它至少包含四个子命题(两阶段可分离执行、KV 跨节点传输开销可控、两池队列可配平、故障和版本不一致不破坏服务),任何一项失败,端到端收益都可能消失。
异构组合是第 1.2 节那个结论的技术支撑:token 这一层已经标准化,下面用什么卡客户看不见也不关心。这让运营方在硬件受限时保有腾挪空间,也让国产芯片有了逐步进入的通道。
18.5 路由反馈
路由不只是轮询地址。只按请求数轮询,会把 100 token 和 100K token 的请求当成同样工作量;只选最短队列,又可能破坏前缀缓存的局部性。生产路由器至少读取副本队列、估计 token 数、KV 使用率、模型版本、健康和地域,并持续用真实的首字延迟、出字间隔和失败结果校正,不能一次配置后静态运行。前缀感知路由把相同前缀的请求送到已有缓存的副本,省去重复 prefill,代价是容易形成热点,相关开源功能仍标为预览状态,缓存局部性与负载均衡的取舍是公开承认的。核路由策略的验收要构造副本性能不同、缓存命中与不命中、长短混合、单副本降速、滚动升级和热点租户等场景,观察每个副本的队列、命中、延迟和选择原因,而不是只看集群平均;复杂策略若不能稳定超过轮询基线,增加的观测、调参和故障面就没有得到回报。控制平面自身也会故障:状态采集过期时,系统是回退轮询、用最后一次状态还是停止接流量,要提前设计安全模式。
18.6 池间配比
PD 分离后两个池的容量必须同时够用:prefill 池偏小,请求在首 token 前排队;decode 池偏小,首字很快但之后生成卡顿。按卡数一半一半没有依据,配比应来自输入输出 token 比例、阶段服务时间、到达率与各自的服务目标。KV 传输还要纳入排队模型:状态字节随层数和上下文增长,网络除了平均带宽还要看并发传输和 P99 时延,一个 prefill 节点同时向多个 decode 节点发送大量 KV,可能让下游首 token 抖动。故障域也被重新画过。统一副本失败只影响一组请求;PD 结构里 prefill 池、KV 通道或 decode 池任何一处出问题,整条链路都可能中断。这里要提前定义四件事:prefill 已完成但尚未交接时状态归谁、重复 prefill 允不允许、decode 失败后能不能转移、计量怎样避免重复。
修订记录
| 日期 | 改了什么 | 为什么 | 谁 |
|---|---|---|---|
| 2026-08-04 | 按章导入,正文与插图保持原样 | 原稿结构清晰,重写反而损失信息 | 工程 |