二、硬件选型与资源规划:GPU选型、显存计算、CPU与内存配置、网络带宽需求

聊到硬件选型,很多同学第一反应就是「无脑上A100」。嗯,这个想法我特别理解。毕竟A100名声在外,谁不想一步到位呢?但说实话,我在实际项目中踩过不少坑,发现硬件选型这事儿,真不是越贵越好。

你想想看,如果只是跑个7B的小模型微调,上H100就是杀鸡用牛刀。反过来,要是搞千亿参数训练,拿几块L40S硬扛,那更是自讨苦吃。所以今天我就把这几款主流GPU的底裤扒干净,再聊聊显存、CPU、内存和网络该怎么配。

2.1 GPU选型:A100、H100、L40S怎么选?

这三款卡我都亲手摸过,各有各的脾气。先看一张对比表,心里有个底:

型号 显存 显存带宽 FP16算力 互联带宽 典型功耗
A100 80G 80GB HBM2e 2.0 TB/s 312 TFLOPS 600 GB/s (NVLink3) 400W
H100 80G 80GB HBM3 3.35 TB/s 989 TFLOPS 900 GB/s (NVLink4) 700W
L40S 48G 48GB GDDR6 864 GB/s 182 TFLOPS 无NVLink 350W

看到H100的700W功耗没?我第一次部署时,机房运维大哥直接打电话过来:「兄弟,你这功率顶我三台普通服务器了!」所以选型时,供电和散热必须提前算进去。

2.1.1 A100 80G:老黄牛型选手

A100是我用得最久的卡。它最大的优点是——稳。我有个项目跑了整整8个月,A100愣是一次没崩过。显存80G,对于70B以下模型的训练和推理,基本够用。

适合场景:

  • 7B~13B模型的微调(单卡或双卡)
  • 70B模型的推理(需要量化,比如INT8)
  • 预算有限但需要稳定性的团队
我的小技巧: 如果预算只够买4块A100,别犹豫,直接上。比买2块H100更实用,因为多卡并行时,显存总量才是硬道理。

2.1.2 H100 80G:性能猛兽

H100的FP16算力是A100的三倍多。我第一次跑LLaMA-70B训练时,H100比A100快了将近2.5倍。但代价也很明显——贵,而且功耗高。

适合场景:

  • 千亿参数模型的预训练
  • 需要极致推理速度的在线服务
  • 不差钱的大厂或研究机构
注意: H100的NVLink4带宽高达900GB/s,但前提是你得配NVSwitch。我曾经见过有人买了8块H100,结果用PCIe直连,性能直接腰斩。钱花了,效果没出来,你说冤不冤?

2.1.3 L40S 48G:性价比之选

L40S这块卡,说实话,刚出来时我挺看不上。48G显存,还没NVLink,能干啥?但后来有个客户预算有限,硬着头皮上了L40S,结果发现推理场景下表现意外地好。

适合场景:

  • 7B以下模型的推理(单卡无压力)
  • 轻量级微调(LoRA等PEFT方法)
  • 视频生成、图像生成等非LLM任务

我的建议: 如果你主要做推理,L40S的性价比其实很高。48G显存跑INT4量化的70B模型,刚刚好。但千万别用它做大规模训练,没有NVLink,多卡通信会卡死你。

2.2 显存计算:你的模型到底吃多少?

显存计算这事儿,我见过太多人翻车了。有人买了8块A100,结果模型加载时直接OOM。为什么会这样?因为大家只算了模型参数占用的显存,忘了算优化器状态和梯度。

咱们来算一笔账。以LLaMA-70B为例,加载到显存需要多少?

模型参数:70B × 2字节(FP16)= 140GB
梯度:70B × 2字节 = 140GB
优化器状态(Adam):70B × 4字节 × 2 = 560GB
总计:140 + 140 + 560 = 840GB

看到没?光优化器状态就占了560GB。这就是为什么训练大模型时,显存总是不够用。我有个项目,一开始用FP32训练,显存直接爆了。后来换成混合精度(FP16+FP32),显存占用降了将近一半。

显存占用速查表(以FP16为例):

模型规模 推理(单卡) 训练(单卡,含优化器) 推荐GPU
7B 14GB 56GB 1×A100 80G / 1×L40S
13B 26GB 104GB 2×A100 80G
70B 140GB 560GB 8×A100 80G
130B 260GB 1040GB 8×H100 80G
避坑指南: 我曾经在70B模型推理时,忘了算KV Cache的显存。对于长序列(比如4096 tokens),KV Cache能吃掉20-30GB显存。所以实际部署时,建议留出20%的显存余量。

2.3 CPU与内存配置:别让CPU拖后腿

很多人只盯着GPU,CPU和内存随便配。我告诉你,这绝对是个坑。CPU负责数据预处理、加载、调度,如果CPU太弱,GPU就得干等着「吃草」。你想想看,几万块的GPU闲着,几百块的CPU在吭哧吭哧干活,这合理吗?

我的配置建议:

  • CPU核心数: 至少32核(64线程以上更佳)。我习惯用AMD EPYC或Intel Xeon Gold系列。
  • 内存容量: 至少是显存总量的2倍。比如8卡A100(640GB显存),内存建议1TB以上。
  • 内存频率: DDR5 4800MHz以上,别省这点钱。

为什么内存要这么大?因为数据加载时,整个数据集可能都放在内存里。我有个项目,数据集200GB,内存只有512GB,结果数据加载时频繁swap,训练速度直接掉到原来的三分之一。

注意: 如果使用CPU进行模型推理(比如用llama.cpp),内存带宽就特别重要。DDR4和DDR5的差距,在推理速度上能差出30%以上。

2.4 网络带宽需求:多卡通信的命脉

网络带宽这事儿,我刚开始做分布式训练时完全没概念。觉得只要网线插上了,能通就行。结果第一次跑8卡训练,发现GPU利用率只有30%。查了半天,原来是网络带宽不够,梯度同步卡住了。

为什么会这样?因为分布式训练时,每张卡算完梯度后,需要把所有卡的梯度汇总(AllReduce操作)。如果网络慢,GPU就得干等着。

不同场景的网络需求:

场景 推荐网络 带宽 说明
单机多卡(≤8卡) NVLink + PCIe 4.0 600-900 GB/s 机内通信,NVLink是首选
多机多卡(小规模) InfiniBand HDR 200 Gb/s 2-4台机器,IB直连
多机多卡(大规模) InfiniBand NDR 400 Gb/s 8台以上,必须上IB
推理服务 RoCE v2 或 25GbE 25-100 Gb/s 推理对网络要求相对低

我个人习惯,只要是多机训练,一律上InfiniBand。虽然贵,但省心。我曾经试过用100GbE跑4机32卡训练,结果网络延迟高得离谱,训练效率比单机8卡还慢。后来换成IB HDR,问题才解决。

总结一下: 网络带宽是分布式训练的「高速公路」。路窄了,车再好也跑不快。预算允许的话,InfiniBand是首选。实在不行,RoCE v2也能凑合,但要做好调优的心理准备。

2.5 一个完整的配置示例

最后,我给出一个实际项目的配置单,供你参考:

项目:70B模型微调(LoRA)+ 推理服务
GPU:4 × A100 80G(NVLink互联)
CPU:AMD EPYC 7742(64核128线程)
内存:1TB DDR5 4800MHz
网络:InfiniBand HDR(200Gb/s)
存储:NVMe SSD 4TB(数据)+ 20TB HDD(备份)
功耗:约3000W(含服务器其他部件)

这套配置,我用了快两年,稳得很。当然,如果你预算有限,可以把GPU换成L40S,但训练速度会慢不少。嗯,硬件选型就是这样——没有最好的,只有最合适的。