先给选型结论:大模型能装进一张卡的显存、追求简单稳定的,选单卡;模型装不下、或单卡吞吐撑不住并发要求的,才上多卡。多卡不是「更多等于更快」,通信开销、并行方式、故障半径都会随卡数变化,把这三件事想明白,单卡多卡就不再纠结。
一个常见误区先纠正:两张卡的速度不是一张卡的两倍。卡与卡之间要通信、要同步,这部分开销随卡数增长,卡越多,每张卡摊到的有效算力越少。文心一言、豆包这类服务之所以用大规模集群还能保持响应速度,是因为并行策略、网络拓扑、调度器都做过深度协同设计,普通团队照抄卡数抄不来那个效果。
先说选法:一张卡还是多张卡
判断顺序分三步。第一步算显存:模型权重加键值缓存加运行缓冲,能不能塞进一张卡——塞得下,多卡就先不考虑。第二步算吞吐:单卡能扛住的并发够不够业务高峰用——够用就单卡,简单稳定好维护。第三步算延迟要求:即便吞吐够,若单个长请求的生成速度太慢,也可能需要多卡分摊计算来压缩单请求耗时。三步走完,答案自然清楚。
通信开销从哪里来
多卡推理时,每一步计算都可能需要卡间交换数据:参数分片要汇总,激活值要传递,同步点越多通信越频繁。通信走的是卡间互联或网络,带宽远低于卡内显存带宽,一旦通信占比高,卡就在互相等。这就是加卡不加速的主因。缓解思路是让通信尽量少、尽量重叠在计算里,但这受模型结构和并行策略约束,不是调个参数的事。
张量并行与流水线并行的分工
多卡协作主要有两种切法。张量并行把单层的计算矩阵切开,多卡同时算同一层,卡间通信非常密集,适合卡间互联带宽高的紧凑机器。流水线并行把模型按层切段,前一段的输出喂给后一段,像工厂流水线,通信少但有空转空档,适合跨机器的大模型部署。实际的大规模部署往往两种混用:机内走张量并行,机间走流水线并行。通用原理讲到这里即可,各框架的具体实现细节以官方技术报告为准。
张量并行、流水线并行以及两者混用,差别集中在三处。
| 切法 | 怎么切 | 卡间通信 | 适合的部署 |
|---|---|---|---|
| 张量并行 | 把单层的计算矩阵切开,多卡同时算同一层 | 非常密集 | 卡间互联带宽高的紧凑机器 |
| 流水线并行 | 把模型按层切段,前一段的输出喂给后一段 | 少,但有空转空档 | 跨机器的大模型部署 |
| 两种混用 | 机内走张量并行,机间走流水线并行 | 机内密集、机间稀疏 | 实际的大规模部署 |
故障半径与维护复杂度
单卡的故障半径小:一张卡坏,只影响它上面跑的实例,换卡重启即可。多卡的故障半径大:并行任务里一张卡掉线,整组计算作废,恢复动作复杂。维护同理——多卡环境的驱动版本、互联固件、拓扑配置都要保持一致,任何一处漂移都可能引发性能劣化。多卡换来的能力,是用这些复杂度换的。
单卡与多卡对照表
- 装得下:显存够用选单卡,简单稳定好维护
- 装不下:先看量化能否救,再考虑多卡
- 并行:机内张量并行通信密,机间流水线并行通信稀
- 故障:单卡半径小恢复快,多卡一损俱损
卡数定了之后还有一连串决策。买的还是租的,账本在自建机房和租 GPU 差在哪?里摊得很开;量化能把显存需求压下来多少,见量化部署和原精度有什么区别?取舍;框架对并行的支持差异,看推理框架之间是怎么比的?分界点在哪;卡多了之后接口成本怎么变,API 调用和本地推理差在哪?成本模型算得清楚;请求入口怎么组织,参考直连和经网关有什么区别?适用场景分开讲。
关于单卡多卡再多问三句
- 两张小卡和一张大卡怎么选?:装得下优先一张大卡,省掉全部通信开销和维护复杂度;装不下才考虑多卡方案。
- 多卡一定要多台机器吗?:不一定,单机多卡是最常见的起步形态,卡间互联带宽高、通信代价小。
- 怎么确认并行配置合理?:看每张卡的利用率曲线,各卡负载均衡、通信等待占比低,就是合理状态;某张卡长期空转则要调切分方式。


