单机多卡适合单卡显存不够但整体算力需求在百卡以内的场景,跨机组网在千卡以上训练时是唯一选择,但通信开销和工程复杂度会让小规模场景得不偿失。
先搞清楚它们在解决什么问题
分布式训练面对的基本矛盾只有两个:单卡显存放不下,或者单卡算力跑太慢,单机多卡与跨机组网都是围绕这两件事展开的。
单机多卡指的是在一台物理服务器内插多张GPU,通过PCIe或NVLink互联,通常一张主板装4到8张卡,跨机组网则是把多台服务器通过高速网络(InfiniBand、RoCE或高速以太网)连成一个集群,形成几十到几千张卡的规模。
业内人士常说一句话:四卡以内靠直觉,八卡拼拓扑,千卡拼网络。 这句话基本概括了边界所在。
单机多卡和跨机训练性能对比:通信开销差一个数量级
单机多卡的核心优势:卡间互联带宽秒杀网卡
在一台8卡服务器里,如果是NVLink全互联架构(比如A100/H100的DGX形态),卡间通信带宽可以达到600GB/s甚至900GB/s,这比任何跨机网络都快。
跨机组网走的是RDMA网卡,当前主流是200Gbps到400Gbps(约25GB/s到50GB/s),遇到拥塞实际吞吐还会打折扣,也就是说,单机卡间通信速度是跨机通信的十几倍。
这个数字意味着什么?当模型需要频繁同步梯度时,单机多卡几乎感觉不到通信延迟,而跨机组网每次allreduce都像过收费站。
规模上,单机多卡撑死几十卡
一台8卡服务器配4台,就是32卡,这基本是单机时代的舒适区上限,如果你试图用一台服务器加PCIe扩展坞堆到16卡甚至更多,PCIe带宽会成为新瓶颈,加上供电、散热、机箱尺寸的限制,单机多卡的物理天花板大约在8卡到16卡之间。
要达到百卡以上规模,跨机组网是唯一路线,这是从工程可实施性上划出的硬边界。
| 对比维度 | 单机多卡 | 跨机组网 |
|---|---|---|
| 卡间通信带宽 | 600GB/s(NVLink) | 25-50GB/s(RDMA) |
| 规模化上限 | 8-16卡 | 数千到数万卡 |
| 硬件成本(起步) | 一台服务器+GPU | 多台服务器+交换机+光模块 |
| 运维复杂度 | 一台机器,单系统 | 多机协同,故障面扩大 |
| 典型使用场景 | 单模型微调、小规模训练 | 大模型预训练、千卡集群 |
软件层面的坑:单机多卡也有“隐形限制”
很多团队以为买了8卡机器就能实现八倍速,
- PyTorch DDP在多卡环境跑默认配置,数据加载瓶颈比通信更先暴露
- TensorFlow MirroredStrategy在单机多卡下需要手动设置跨设备通信方式
- 显存碎片化问题在多卡环境下更严重,多卡不等于显存直接相加(CUDA上下文、通信缓冲区各自占显存)
实操建议:拿到一台8卡机器,先用 nvidia-smi topo -m 看卡间拓扑,菊花链拓扑比全互联拓扑带宽差不少,这时候某些任务反而不如拆成2台4卡机器。
单机多卡深度学习够用吗?这得看你训练什么模型
模型并行和流水线并行:单机多卡的用武之地
单机多卡最擅长的场景是模型并行,一张卡放不下的大模型层,可以切到多张卡上,因为模型并行需要在每一层前向/反向传播时频繁传输激活值,卡间通信速度十分关键,NVLink的高带宽正好应对这类通信密集型的并行策略。
实际走通的操作路径:
- 用
torchrun --nproc_per_node=8启动8卡训练 - 在模型定义中把
device_map="auto"交给加速框架自动分配 - 观察
nvidia-smi确认每张卡的显存使用率是否均衡,如果某张卡长期满载而其他卡闲置,说明切分策略有问题
对参数量在10B以下的中小模型,单机8卡配合ZeRO-Offload或DeepSpeed Stage 2,基本上可以覆盖绝大多数微调和训练需求,这也是像 LoRA微调这类任务的主流配置。
但注意:如果一张卡放不下单个Transformer层的权重(比如超大模型的embedding层),单机多卡也无能为力,因为模型切不到比一张卡更细的粒度,此时必须考虑跨机部署。
跨机组网的适用边界:从搜集群到千卡训练
什么时候必须上跨机组网
行业共识认为,当模型参数量超过单机显存总和的数倍时,或者训练时间以周为单位时,跨机组网是必要且划算的。 具体变现为以下信号:
- 一张H100(80GB)放不下7B模型的激活值时,基本到了跨机边界
- 训练一个13B参数模型从零预训练,8卡需要数十天,不符合研发节奏
- 分布式数据并行需要随着GPU数量线性扩展,而单机没有扩展空间
- 推理服务需要低延迟高吞吐,多机多卡配合张量并行以满足SLA
跨机组网通信开销怎么处理:懂这三点就能避坑
跨机组网最大的代价是通信,所以业界都在想办法对冲:
梯度压缩:ZeRO-3把参数、梯度、优化器状态都切分到各卡上,通信量从全量参数缩减为每个micro-batch只传一小部分,配合通信计算重叠,利用率能追平单机的80%以上。
通信拓扑优化:树形allreduce比环形传输收敛慢但更节省带宽,2D-Torus拓扑适合数据并行,Fat-Tree适合混合并行,没有万能的网络拓扑。
减少同步频率:梯度累积到较大batch再统一同步,牺牲一点收敛速度换训练吞吐,这在跨机组网里是最常见的优化手段。
愿意付多少组网成本,决定了你的边界在哪
跨机房组网对算力集群而言,成本最高的通常不是GPU本身,而是网络基础设施,一台8卡H100服务器的价格约在200万人民币以上,而与之配套的交换机、光模块、线缆成本可能再增加20%-30%。
千卡集群组网价格里包含的不仅是硬件采购,还有机房机架空间、功耗配额、制冷系统的综合成本。单机多卡更适合调用已有资源,跨机组网则需要立项采购、专项运维。
这也是为什么许多企业选择租用云厂商的GPU服务器而不是自建集群,按需扩缩容,避免网络设施的空置浪费。
硬件拓扑和软件框架:它们其实已经帮你选了方向
不同GPU型号对边界的重定义
NVIDIA的NVLink技术演进深刻影响了单机多卡与跨机组网的边界:
- V100时代:NVLink一代仅支持2卡互联,4卡以上需要走PCIe,单机多卡优势不明显
- A100时代:NVLink三代全互联,8卡通信带宽达600GB/s,单机多卡的黄金时代
- H100/H200时代:引入NVSwitch,8卡全互联带宽进一步提升,但单卡算力太强导致单机算力过剩,反而推动了跨机需求
- 消费级显卡(4090等):不支持NVLink,只能走PCIe,4卡以上通信带宽严重不足,跨机更不适合,所以4090机器通常只做推理
如果你用的是消费级显卡,单机多卡实际体验可能不如预期,因为它们卡间互联走PCIe,带宽只有NVLink的几十分之一,这时候单机多卡深度学习够用吗? 答案最多到2卡。
训练框架的眼界决定你能跑多远
PyTorch DDP默认在单机多卡上效果最好,一旦跨机就需要配置 init_method="tcp://..." 并确保机器间网络互通。
DeepSpeed的ZeRO-3原本为跨机场景设计,但在单机多卡环境下也能自动检测并使用NVLink优先通信,这意味着框架层面的支持程度也在影响边界选择。
实操步骤:
- 单机多卡优先使用
NCCL_P2P_LEVEL=NV限定点对点通信走NVLink - 跨机组网时设置
NCCL_SOCKET_IFNAME=ib0(InfiniBand接口)避免走慢速以太网 NCCL_DEBUG=INFO观察通信耗时占比,超过30%就该考虑换并行策略
本质是一道成本考题:时延敏感度决定答案
说到底,单机多卡解决的是一台机器内部的算力扩展问题,跨机组网解决的是多台机器间的算力协同问题。
大多数业务场景中,80%的模型训练任务不需要跨机组网,单机8卡配合高效的并行策略已经能处理大部分实际需求,只有当你面对的是超过百卡的预训练任务、千万级上下文窗口的推理服务,或者需要V100级别的集群支撑大型推荐模型时,跨机组网才是必然选项。
需要记住的边界要诀:
- 1-8卡:单机多卡最优,性价比最高,运维最省心
- 8-32卡:单机多卡和多机组网都能做,取决于单机是否支持NVLink全互联
- 32-100卡:跨机组网是主流,但需要精细设计网络拓扑
- 100卡以上:跨机组网是唯一选择,必须规划好通信库配置和故障恢复方案
与其问“哪个更好”,不如问“我的模型多大、训练预算多少、时间要求多紧”,这三个答案落地后,适用边界自然浮出水面。
单机多卡和跨机组网,各有什么注意事项
问:单机多卡跑深度学习时为什么卡间利用率不均?
答:先查数据加载线程数和CPU内存带宽是否够用,其次检查GPU利用率是否有周期性波动,多数情况下是DataLoader的num_workers设置太低,或者磁盘读取速度不足导致GPU空转等待数据。
问:跨机组网训练时通信开销怎么降低?
答:优先使用NCCL的P2P通信并开启CUDA Graph减少内核启动开销,同时考虑梯度累积和ZeRO-3的通信重叠模式,对于参数超过10B的模型,配合流水线并行能显著降低跨机通信频率。
问:单机多卡和跨机组网,适用边界到底在哪?
答:单张卡显存不够但单机8卡能装下模型,选单机多卡;模型大到8卡也装不下,或者训练任务需要线性扩展超过32卡,就只能选跨机组网,通信带宽的差距决定了小规模任务用单机多卡更划算,而大规模训练跨机组网虽然通信更慢,但总吞吐量上限更高。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/788270.html


