2. 硬件环境准备:GPU选型建议与网络配置

多卡同步训练,说白了就是让一堆GPU一起干活。但硬件选不对,你连跑都跑不起来。我见过太多团队,算法写得漂亮,结果卡在硬件配置上,一卡就是两周。

这一章,咱们把GPU选型、拓扑连接、网络配置这三个硬骨头啃下来。

2.1 GPU选型:A100 vs H100 vs V100

先说说这三款主流GPU。我个人的经验是:选卡不是越贵越好,得看你的场景。

型号 显存 FP16算力 NVLink带宽 适合场景
V100 (32GB) 32GB HBM2 125 TFLOPS 300 GB/s 中小模型、预算有限
A100 (80GB) 80GB HBM2e 312 TFLOPS 600 GB/s 大模型训练、多卡并行
H100 (80GB) 80GB HBM3 989 TFLOPS 900 GB/s 超大模型、FP8训练

V100:老将了。32GB显存,跑个BERT-Large或者ResNet-152绰绰有余。我在2020年做NLP项目时用的就是V100,8卡同步训练,效果不错。但注意,V100不支持FP8,如果你要用混合精度训练,只能走FP16。

A100:目前最均衡的选择。80GB显存,能塞下GPT-2这种10亿参数级别的模型。我个人习惯用A100做主力卡,原因很简单——MIG(多实例GPU)功能太香了。你可以把一张A100切成7个实例,每个实例10GB显存,跑小模型时资源利用率拉满。

H100:新王登基。FP8算力接近1 PFLOPS,NVLink带宽900GB/s。但说实话,除非你跑千亿参数模型,否则H100的性价比不如A100。我有个朋友买了8张H100,结果发现网络带宽成了瓶颈,白白浪费了算力。

核心建议:

  • 预算有限 → V100 32GB
  • 主流选择 → A100 80GB
  • 不差钱且模型超大 → H100

2.2 NVLink与PCIe拓扑:别让数据卡在路上

GPU选好了,怎么连起来?这里有两个关键概念:NVLink 和 PCIe。

NVLink是NVIDIA自家的高速互联技术。说白了,就是给GPU之间修了一条高速公路。A100的NVLink带宽是600GB/s,H100更是到了900GB/s。而PCIe 4.0 x16只有32GB/s,差了将近20倍。

为什么会这样?因为多卡训练时,GPU之间要频繁交换梯度数据。如果走PCIe,数据就像堵在早高峰的环路上。我遇到过最夸张的情况:8卡V100走PCIe,同步一次梯度要3秒,训练速度还不如单卡。

避坑指南:我曾经在DGX Station上踩过坑。那台机器有4张V100,但只有两张卡之间有NVLink,另外两张走PCIe。结果训练时,NVLink对的两张卡跑得飞快,PCIe的两张卡拖后腿。最后我只能手动调整数据分配,让大模型跑在NVLink的卡上。

拓扑结构也很关键。常见的拓扑有:

  • 全连接拓扑:每张卡都通过NVLink直连。理想情况,但成本高。
  • 环形拓扑:卡1连卡2,卡2连卡3... 成本低,但延迟高。
  • 混合拓扑:部分卡NVLink,部分卡PCIe。最常见,但需要优化。

我个人建议:能用NVLink就别用PCIe。如果预算不够,至少保证同一台机器内的卡用NVLink连接,机器之间再用网络。

2.3 服务器集群网络配置:InfiniBand vs RoCE

单机多卡搞定了,接下来是跨机通信。这里有两个主流方案:InfiniBand 和 RoCE。

特性 InfiniBand RoCE
带宽 200/400 Gbps 100/200 Gbps
延迟 1-2 μs 5-10 μs
成本 高(专用交换机+网卡) 低(标准以太网)
兼容性 需要专用驱动 标准TCP/IP栈

InfiniBand:专业选手。延迟低到1微秒,带宽400Gbps。我去年帮一个客户搭集群,32张A100,全部走InfiniBand。训练一个1750亿参数的模型,通信开销只占5%。

RoCE:平民选手。基于以太网,成本只有InfiniBand的一半。但延迟高一些,而且对网络质量要求高。我建议:如果集群规模小于16卡,RoCE完全够用。

注意:RoCE需要开启PFC(优先级流控制)和ECN(显式拥塞通知)。我曾经因为没配PFC,导致网络丢包率高达1%,训练直接崩了。配好之后,丢包率降到0.001%。

网络拓扑也很重要。常见的方案:

  • Fat-Tree拓扑:每台服务器连接两个交换机,冗余且带宽高。
  • Dragonfly拓扑:适合超大规模集群,延迟更低。
  • 直连拓扑:小规模集群,简单粗暴。

我个人习惯用Fat-Tree。原因很简单:好排查问题。有一次集群训练变慢,我顺着Fat-Tree的链路一层层查,发现是某个交换机的光模块坏了。换掉之后,训练速度恢复。

2.4 一张图看懂硬件配置

下面这张图,是我自己画的。它把GPU选型、拓扑连接、网络配置串起来了。你想想看,从单卡到集群,每一步都有坑。

多卡同步训练硬件配置全景图 GPU选型 V100 32GB A100 80GB H100 80GB 拓扑连接 NVLink 全连接 环形拓扑 混合拓扑 网络配置 InfiniBand 200/400Gbps RoCE 100/200Gbps 从GPU选型到网络配置,每一步都影响训练效率

2.5 实战配置清单

最后,给出一份我常用的配置清单。你照着配,基本不会出大问题。

# 单机8卡A100配置
GPU: 8x NVIDIA A100 80GB
NVLink: 全连接拓扑,600GB/s
网络: 2x InfiniBand HDR 200Gbps
CPU: AMD EPYC 7742 64核
内存: 512GB DDR4
存储: 4x NVMe SSD RAID0

# 集群4节点配置
节点数: 4
每节点GPU: 8x A100 80GB
节点间网络: InfiniBand HDR 200Gbps
拓扑: Fat-Tree
交换机: 2x Mellanox QM8790

个人经验:配好之后,一定要跑一次 nccl-tests 验证带宽。我习惯用 all_reduce_perf 测试,如果带宽低于理论值的80%,说明有瓶颈。

嗯,硬件环境准备就这些。记住一句话:GPU是发动机,网络是传动轴,拓扑是底盘。哪个环节出问题,车都跑不快。

想要更多资料,联系可可