2. 硬件基础与选型
聊到AI训练,硬件选型是绕不开的第一道坎。我见过不少团队,算法调得漂漂亮亮,结果一上集群训练,性能直接腰斩。说白了,很多时候不是代码的问题,是硬件没选对,或者没用好。
这一章,咱们就掰开揉碎,聊聊主流的训练硬件。我会结合我这些年踩过的坑,给你一些实在的建议。
一、NVIDIA GPU:A100 与 H100 的硬核对比
目前做大规模训练,NVIDIA 的 GPU 几乎是标配。A100 和 H100 是两代主力。很多人问我:“直接上 H100 是不是就完事了?” 我的回答是:不一定。
1. A100:成熟稳重的“老将”
A100 基于 Ampere 架构。我个人习惯把它看作“性价比之王”。它在 FP16、TF32 下的算力非常扎实。我去年做一个百亿参数的大模型预训练,用的就是 A100 集群。
它的核心优势在于:
- 显存大:80GB HBM2e,很多大模型可以直接塞进单卡。
- MIG 技术:可以把一张卡切成多个小实例,适合多任务混部。我在项目里就用它来同时跑推理和训练,资源利用率提升不少。
- NVLink 与 NVSwitch:卡间通信带宽高达 600 GB/s,多卡并行时很稳。
2. H100:为 Transformer 而生的“新贵”
H100 基于 Hopper 架构。它最大的变化,是引入了 Transformer Engine。说白了,就是硬件层面专门优化了 Transformer 模型的计算。
它有几个关键升级:
- FP8 精度:这是 H100 的杀手锏。训练速度比 A100 的 FP16 快 2-3 倍。但要注意,FP8 对数值稳定性要求更高,需要配合混合精度训练库(如 Transformer Engine)使用。
- 第四代 NVLink:带宽提升到 900 GB/s。我记得第一次测多卡通信时,延迟直接降了 30%。
- DPX 指令集:专门加速动态规划算法。虽然对普通训练影响不大,但在某些场景(如基因组学)有奇效。
3. 核心参数对比
| 特性 | NVIDIA A100 (80GB) | NVIDIA H100 (80GB) |
|---|---|---|
| 架构 | Ampere | Hopper |
| Tensor Core (FP16) | 312 TFLOPS | ~1000 TFLOPS (稀疏) |
| Tensor Core (FP8) | 不支持 | ~2000 TFLOPS |
| 显存带宽 | 2 TB/s | 3.35 TB/s |
| NVLink 带宽 | 600 GB/s | 900 GB/s |
| Transformer Engine | 无 | 有 |
| 典型功耗 | 400W | 700W |
你想想看,H100 的 FP8 算力是 A100 的 6 倍多。但功耗也高了近一倍。所以选型时,还得考虑机柜的散热和电力容量。
二、CPU 与内存:别让它们拖后腿
很多人只盯着 GPU,忽略了 CPU 和内存。我在项目中遇到过,GPU 利用率只有 30%,一查,发现是 CPU 在忙着做数据预处理,根本喂不饱 GPU。
1. CPU 选型要点
- 核心数 vs 频率:训练任务中,CPU 主要负责数据加载、预处理和通信。我建议选 高核心数 的 CPU(如 AMD EPYC 或 Intel Xeon),而不是追求单核高频。
- PCIe 通道数:GPU 需要直连 CPU 的 PCIe 通道。如果通道数不够,多卡通信会受限。我记得有一次,用了廉价主板,8 张卡只能跑出 6 张的性能。
- NUMA 亲和性:把 GPU 和 CPU 绑定在同一个 NUMA 节点上,能减少跨节点访问的延迟。这个细节,很多新手会忽略。
2. 内存容量与带宽
内存容量决定了你能加载多大的模型和数据集。一般来说,每张 GPU 至少配 2-4 倍显存大小的系统内存。比如 80GB 显存的 A100,系统内存最好有 256GB 以上。
带宽也很关键。DDR5 内存的带宽比 DDR4 高 50% 左右。如果你做大规模数据并行训练,内存带宽不足会成为瓶颈。
三、网络与存储:集群的“血管”
单机训练再快,也快不过集群。但集群的瓶颈,往往出在网络和存储上。
1. 网络:InfiniBand vs RoCE
- InfiniBand:专为高性能计算设计。延迟低(1-2μs),带宽高(200-400 Gbps)。我做大模型分布式训练时,首选 InfiniBand。它支持 RDMA,能直接读写远端内存,省去了 CPU 拷贝的开销。
- RoCE (RDMA over Converged Ethernet):基于以太网的 RDMA。成本比 InfiniBand 低,但需要交换机支持 PFC(优先级流控制),配置复杂。我曾经在 RoCE 网络上踩过坑,丢包导致训练中断,排查了好几天。
我的建议是:如果预算允许,训练集群用 InfiniBand。推理集群可以用 RoCE,成本更低。
2. 存储:吞吐量 vs IOPS
训练数据通常很大(TB 甚至 PB 级)。存储系统需要高吞吐量来快速加载数据。
- 并行文件系统:如 Lustre、GPFS。适合大文件、高吞吐场景。我之前的项目用 Lustre,读取 10TB 数据只需几分钟。
- 对象存储:如 MinIO、Ceph。适合小文件、高并发场景。但延迟较高,不适合频繁读写 checkpoint。
- 本地 NVMe SSD:作为缓存层。把热数据放在本地 SSD 上,能大幅减少网络存储的压力。我习惯在每个节点上配 2-4 块 NVMe SSD,效果很好。
四、TPU 与 NPU:不一样的“加速器”
除了 GPU,Google 的 TPU 和华为的 NPU 也是重要的选择。它们各有千秋。
1. Google TPU:为 TensorFlow 而生
TPU 是 Google 自研的 ASIC 芯片。它最大的特点是 矩阵乘法单元(MXU),专门加速矩阵运算。
- 优势:在 TensorFlow/JAX 框架下,TPU 的算力利用率极高。我见过一个 ResNet-50 训练任务,TPU v4 比 A100 快 30%。
- 劣势:生态封闭。只能用 Google Cloud,且对 PyTorch 支持较差。如果你团队主要用 PyTorch,选 TPU 要慎重。
2. 华为 NPU (昇腾):国产化的选择
昇腾 910B 是目前国产 AI 芯片的代表。它的算力接近 A100,但生态还在完善中。
- 优势:自主可控,适合信创项目。华为提供了 CANN 计算框架,兼容 PyTorch 和 TensorFlow。
- 劣势:算子库不如 CUDA 丰富。我试过迁移一个模型,有几个自定义算子需要重写,花了不少时间。
五、知识体系总览
下面这张图,是我梳理的硬件选型核心逻辑。你可以把它当作一个决策参考。
硬件选型没有银弹。A100 适合预算有限、追求稳定;H100 适合追求极致性能、愿意尝鲜;TPU 适合 Google 生态重度用户;NPU 适合国产化需求。我的建议是:先明确你的模型规模、框架偏好和预算,再倒推硬件配置。别为了追新而追新,够用、好用才是王道。