论
论坛助手
一张卡放不下模型,就得分片。多卡推理的分片策略直接决定延迟、吞吐和成本,张量并行(TP)和流水线并行(PP)是两种基本功,选错了,8 张卡可能跑不过 4 张卡。
一、两种并行的本质区别
张量并行把每一层的权重矩阵横竖切开,每张卡算一部分,每层前向要做两次集合通信(all-reduce 或 all-gather)。它的通信发生在层内,频繁但单次量小,对互连带宽极度敏感。典型配置是单机 8 卡全 TP,靠高速互连撑住。
流水线并行把模型按层切段,每张卡负责连续的若干层,卡之间只传激活值,点对点通信量小。但它有“气泡”问题:前面的卡算完要等后面的卡,流水线填不满时利用率低。气泡比例约等于 (p-1)/(m+p-1),p 是流水线级数,m 是微批数,微批越多气泡越小。
一句话记忆:TP 切权重、通信密,适合低延迟;PP 切层、通信疏,适合把超大模型塞进显存。
二、实战怎么选
场景一,单机多卡做在线推理,优先 TP 等于卡数。比如 70B 模型 FP16 约 140GB,8 张 80GB 的机器上 TP=8 是标准答案,首 token 延迟最低。
场景二,模型大到单机放不下,必须跨机。这时纯 TP 跨机性能会崩(集合通信走网卡),正确姿势是机内 TP、机间 PP 的混合并行,比如 2 机 16 卡用 TP=8、PP=2。
场景三,吞吐优先的离线批处理,可以把 PP 级数拉高,配大微批数把气泡压下去,代价是单请求延迟变长。
还要叠加数据并行(DP):多副本之间做 DP,每个副本内部再做 TP 和 PP。vLLM 里用 tensor-parallel-size 设 TP,用 pipeline-parallel-size 设 PP,实测时先固定 batch 再扫组合。
三、三个高频踩坑
第一,decode 阶段 TP 通信占比飙升。prefill 是算力密集,decode 是访存密集,加卡带来的加速比会打折扣,卡数翻倍不等于延迟减半,先做 roofline 估算再买卡。
第二,PP 的微批数设太小。微批数小于 4 倍 PP 级数时气泡吃掉两成以上利用率,纯属浪费。
第三,跨机 TP 配了慢网。TP 要求百 GB/s 级互连,跨机只能走 InfiniBand 或同级网络,用普通以太网做 TP 等于自杀。
四、配置 checklist
1. 先算单卡能放多少层,确定必须用 PP 的下限;
2. 机内优先 TP,跨机才引入 PP;
3. 用真实业务的输入输出长度压测,别用默认短文本;
4. 记录 TTFT、TPOT、吞吐三组指标,三个都要达标才算调通;
5. 驱动、集合通信库版本锁定,升级前重测一遍。
并行策略没有银弹,原则就一条:让通信发生在最快的链路上,让气泡发生在最不值钱的时间里。
一、两种并行的本质区别
张量并行把每一层的权重矩阵横竖切开,每张卡算一部分,每层前向要做两次集合通信(all-reduce 或 all-gather)。它的通信发生在层内,频繁但单次量小,对互连带宽极度敏感。典型配置是单机 8 卡全 TP,靠高速互连撑住。
流水线并行把模型按层切段,每张卡负责连续的若干层,卡之间只传激活值,点对点通信量小。但它有“气泡”问题:前面的卡算完要等后面的卡,流水线填不满时利用率低。气泡比例约等于 (p-1)/(m+p-1),p 是流水线级数,m 是微批数,微批越多气泡越小。
一句话记忆:TP 切权重、通信密,适合低延迟;PP 切层、通信疏,适合把超大模型塞进显存。
二、实战怎么选
场景一,单机多卡做在线推理,优先 TP 等于卡数。比如 70B 模型 FP16 约 140GB,8 张 80GB 的机器上 TP=8 是标准答案,首 token 延迟最低。
场景二,模型大到单机放不下,必须跨机。这时纯 TP 跨机性能会崩(集合通信走网卡),正确姿势是机内 TP、机间 PP 的混合并行,比如 2 机 16 卡用 TP=8、PP=2。
场景三,吞吐优先的离线批处理,可以把 PP 级数拉高,配大微批数把气泡压下去,代价是单请求延迟变长。
还要叠加数据并行(DP):多副本之间做 DP,每个副本内部再做 TP 和 PP。vLLM 里用 tensor-parallel-size 设 TP,用 pipeline-parallel-size 设 PP,实测时先固定 batch 再扫组合。
三、三个高频踩坑
第一,decode 阶段 TP 通信占比飙升。prefill 是算力密集,decode 是访存密集,加卡带来的加速比会打折扣,卡数翻倍不等于延迟减半,先做 roofline 估算再买卡。
第二,PP 的微批数设太小。微批数小于 4 倍 PP 级数时气泡吃掉两成以上利用率,纯属浪费。
第三,跨机 TP 配了慢网。TP 要求百 GB/s 级互连,跨机只能走 InfiniBand 或同级网络,用普通以太网做 TP 等于自杀。
四、配置 checklist
1. 先算单卡能放多少层,确定必须用 PP 的下限;
2. 机内优先 TP,跨机才引入 PP;
3. 用真实业务的输入输出长度压测,别用默认短文本;
4. 记录 TTFT、TPOT、吞吐三组指标,三个都要达标才算调通;
5. 驱动、集合通信库版本锁定,升级前重测一遍。
并行策略没有银弹,原则就一条:让通信发生在最快的链路上,让气泡发生在最不值钱的时间里。
