2. 基础知识
在动手搭建AI训练推理集群之前,必须先厘清一组基础概念:集群中的计算单元是什么、它们如何协同工作、推理与训练在工程上的差异,以及当前主流的硬件与软件生态。只有把这些概念映射到具体的物理设备和软件框架上,后续的部署操作才有依据。
2.1 核心计算单元:GPU、TPU 与加速器
AI集群的算力底座是各类加速器。虽然CPU也能运行AI模型,但面对大规模矩阵运算时效率极低。当前主流加速器分为三类:
- GPU(图形处理器):由数千个CUDA核心(NVIDIA)或流处理器(AMD)组成,采用SIMT(单指令多线程)架构,特别适合并行矩阵乘法与卷积运算。NVIDIA数据中心GPU(如A100、H100、H200)通过NVLink与NVSwitch实现卡间高速互联,是当前AI集群最普遍的选择。
- TPU(张量处理器):Google自研的ASIC芯片,专为TensorFlow/PyTorch的张量操作设计。TPU v4/v5通过ICI(Inter-Chip Interconnect)光互联组成Pod,单Pod算力可达ExaFlops级。TPU仅通过云服务提供,无法本地采购。
- 其他加速器:包括AWS Trainium/Inferentia、华为昇腾910B、寒武纪思元590等。这些芯片在特定生态(如昇腾CANN、寒武纪Neuware)下性能优异,但通用性不如CUDA生态。
选型判断:若追求生态成熟度与调试便利性,NVIDIA GPU是首选;若预算受限且模型以自研架构为主,可考虑国产加速器;若完全使用Google Cloud且模型基于JAX/TensorFlow,TPU是性价比之选。
2.2 分布式训练与推理引擎
单卡显存有限(如H100为80GB),无法容纳大模型参数与中间激活值。分布式训练将模型切分到多卡/多节点上协同计算。根据并行策略,可分为:
| 并行策略 | 切分维度 | 典型场景 | 通信开销 |
|---|---|---|---|
| 数据并行(DP) | 训练数据按batch切分 | 模型可放入单卡显存 | 梯度同步(AllReduce) |
| 张量并行(TP) | 权重矩阵按行/列切分 | 单层参数超过单卡显存 | 每层前向/反向各一次AllReduce |
| 流水线并行(PP) | 网络层按阶段切分 | 模型层数极深(如GPT-4) | 仅阶段边界传输激活值 |
| 序列并行(SP) | 序列长度维度切分 | 长序列输入(如文档级NLP) | Ring Attention通信 |
实际训练中通常采用混合并行(如3D并行:DP+TP+PP)。而推理引擎则聚焦于模型部署阶段的优化,与训练框架不同,推理引擎更关注低延迟、高吞吐与显存效率。主流推理引擎包括:
- vLLM:采用PagedAttention管理KV Cache,通过Continuous Batching提高吞吐,适合在线LLM服务。
- TensorRT-LLM:NVIDIA官方推理引擎,支持FP8/INT4量化、In-Flight Batching,与CUDA深度绑定。
- DeepSpeed-Inference:提供自动张量并行与内核融合,适合与DeepSpeed训练无缝衔接。
- ONNX Runtime:跨平台通用推理引擎,适合CPU/GPU混合部署。
# 典型训练框架与推理引擎对应关系
训练阶段: PyTorch + DeepSpeed/FSDP → 产出模型权重
转换阶段: 权重转换脚本 → 导出为ONNX或TensorRT引擎
推理阶段: vLLM/TensorRT-LLM → 加载引擎文件 → 提供OpenAI兼容API
2.3 主流软件栈全景
AI集群软件栈自底向上分为五层,理解各层职责是排障的基础。下图展示了从硬件到应用层的完整栈结构:
软件栈各层之间存在严格的依赖关系。例如,NCCL(NVIDIA Collective Communications Library)依赖CUDA运行时与驱动版本;vLLM要求CUDA≥11.8且GPU架构≥Ampere。部署集群时,建议使用NVIDIA官方提供的PyTorch容器镜像(如nvcr.io/nvidia/pytorch:24.01-py3),该镜像已预装匹配的CUDA、cuDNN、NCCL与常用框架,避免版本地狱。
2.4 案例:8卡A100集群的典型配置
以一个标准的单节点8卡A100(80GB)训练服务器为例,其软硬件配置如下:
硬件:
- 8 × NVIDIA A100 80GB PCIe (NVLink桥接为4对)
- 2 × Intel Xeon 8380 CPU (80核)
- 1TB DDR5 ECC内存
- 2 × 3.84TB NVMe SSD (RAID1,存数据集)
- 1 × ConnectX-6 HDR InfiniBand网卡 (200Gb/s)
软件:
- Ubuntu 22.04 LTS (内核5.15)
- NVIDIA Driver 535.104.05
- CUDA 12.2 (nvcc --version)
- cuDNN 8.9.4
- NCCL 2.19.3
- Python 3.10 + PyTorch 2.1.0
- DeepSpeed 0.12.0
验证集群通信是否正常,可使用以下命令:
# 检查GPU可见性
nvidia-smi -L
# 输出应列出8个GPU的UUID
# 测试NCCL通信(需在容器内)
python -c "import torch; torch.distributed.init_process_group('nccl', init_method='tcp://127.0.0.1:23456', world_size=8, rank=0); print('NCCL OK')"
# 检查NVLink拓扑
nvidia-smi topo -m
2.5 常见误区与复盘
误区1:混淆“训练框架”与“推理引擎”。PyTorch训练出的模型不能直接用于生产推理。训练框架关注反向传播与梯度更新,推理引擎关注算子融合与KV Cache管理。正确流程是:训练 → 导出(TorchScript/ONNX) → 编译优化(TensorRT) → 部署。
误区2:忽略NCCL版本兼容性。NCCL与CUDA小版本不匹配会导致AllReduce挂起或性能骤降。例如NCCL 2.18要求CUDA≥12.1。排查时使用
nccl-tests工具验证带宽:all_reduce_perf -b 128M -e 8G -f 2,若带宽低于理论值50%,需检查网卡模式(IB vs RoCE)与路由设置。
复盘要点:在规划集群时,先画出软件栈依赖树,标注每个组件的版本号。建议使用容器化方案(Docker+K8s)锁定环境,避免因驱动升级导致集群不可用。对于多节点集群,务必提前规划IP地址、主机名映射与SSH免密登录,这些基础操作往往比模型调参更影响部署效率。
理解上述概念后,下一步即可进入实际环境准备:包括操作系统优化、GPU驱动安装、容器运行时配置与分布式通信验证。这些操作将直接建立在本文所述的软硬件栈之上。