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,多卡并行时很稳。
我的经验: 如果你的模型参数量在 100 亿以内,且预算有限,A100 依然是首选。别盲目追新。

2. H100:为 Transformer 而生的“新贵”

H100 基于 Hopper 架构。它最大的变化,是引入了 Transformer Engine。说白了,就是硬件层面专门优化了 Transformer 模型的计算。

它有几个关键升级:

  • FP8 精度:这是 H100 的杀手锏。训练速度比 A100 的 FP16 快 2-3 倍。但要注意,FP8 对数值稳定性要求更高,需要配合混合精度训练库(如 Transformer Engine)使用。
  • 第四代 NVLink:带宽提升到 900 GB/s。我记得第一次测多卡通信时,延迟直接降了 30%。
  • DPX 指令集:专门加速动态规划算法。虽然对普通训练影响不大,但在某些场景(如基因组学)有奇效。
避坑指南: 我曾经在 H100 上直接跑旧代码,发现性能提升不明显。后来才发现,必须用 CUDA 12.0+ 和 cuDNN 8.9+ 才能发挥 FP8 的优势。驱动和库的版本,一定要对齐。

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% 左右。如果你做大规模数据并行训练,内存带宽不足会成为瓶颈。

核心建议: 别在 CPU 和内存上省钱。一个均衡的配置,比单纯堆 GPU 更重要。

三、网络与存储:集群的“血管”

单机训练再快,也快不过集群。但集群的瓶颈,往往出在网络和存储上。

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,效果很好。
小技巧: 训练前,先把数据从远程存储预取到本地 SSD。这样训练过程中,IO 延迟几乎为零。

四、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 丰富。我试过迁移一个模型,有几个自定义算子需要重写,花了不少时间。
避坑指南: 如果你选择 NPU,一定要提前确认你的模型算子是否被 CANN 支持。否则,迁移成本可能比想象中高。

五、知识体系总览

下面这张图,是我梳理的硬件选型核心逻辑。你可以把它当作一个决策参考。

AI训练硬件选型 GPU (NVIDIA) A100 (Ampere) H100 (Hopper) FP8 / Transformer Engine CPU + 内存 高核心数 / NUMA亲和 网络 + 存储 InfiniBand / NVMe缓存 TPU / NPU TPU (Google Cloud) NPU (华为昇腾) 选型核心:算力、带宽、生态、成本

硬件选型没有银弹。A100 适合预算有限、追求稳定;H100 适合追求极致性能、愿意尝鲜;TPU 适合 Google 生态重度用户;NPU 适合国产化需求。我的建议是:先明确你的模型规模、框架偏好和预算,再倒推硬件配置。别为了追新而追新,够用、好用才是王道。