一、GPU集群概述:从单卡到万卡集群的演进之路

大家好,我是这次课程的主讲。今天咱们聊聊GPU集群的来龙去脉。

说实话,我入行那会儿,GPU还是个“游戏卡”。谁能想到,十几年后,它成了AI时代的算力基石。我自己经历过从单机单卡到千卡集群的搭建过程,踩过的坑真不少。今天就把这些经验掰开揉碎了讲给你听。

1.1 GPU计算的发展历程:从图形渲染到通用计算

GPU最初的设计目标很简单——画图快。但后来大家发现,这玩意儿做并行计算特别猛。

  • 2007年之前:GPU只能通过图形API(如OpenGL、DirectX)做通用计算。那时候写个矩阵乘法,得伪装成纹理渲染,别提多别扭了。
  • 2007年:NVIDIA推出CUDA。这是个里程碑。我记得第一次用CUDA写向量加法,看到几百倍加速比时,整个人都懵了——原来计算可以这么玩。
  • 2012年:AlexNet在ImageNet上大杀四方,用的就是两块GTX 580。从那时起,AI社区彻底拥抱了GPU。
  • 2016年至今:Volta、Ampere、Hopper架构相继问世。Tensor Core、NVLink、NVSwitch这些技术,让GPU从“计算单元”变成了“计算节点”。

核心观点:GPU的发展史,本质上是“专用化”与“通用化”的螺旋上升。CUDA让GPU通用化,Tensor Core又让它专用化——但这次是为AI专用。

1.2 GPU集群的典型架构:从单机到超大规模

你想想看,单卡再强,也跑不动千亿参数的大模型。所以我们需要集群。集群架构怎么搭?我把它分成三个层次。

1.2.1 单节点架构

一台服务器里插4块或8块GPU。关键看两点:

  • GPU间互联:NVLink直连还是走PCIe?我建议能上NVLink就上NVLink。之前有个项目,用PCIe跑分布式训练,通信开销占了40%时间。换成NVLink后,直接降到10%。
  • CPU与内存:别小看CPU。GPU要数据,得靠CPU喂。内存带宽不够,GPU就得空转。

1.2.2 机架级架构

一个机架放4-8台服务器。这里的关键是网络:

  • 计算网络:推荐InfiniBand或RoCE v2。带宽至少200Gbps。我曾经见过用千兆以太网跑分布式训练,一个AllReduce操作等了几十秒——那画面太美不敢看。
  • 存储网络:NFS或Lustre。注意,存储IOPS要够。不然数据加载就是瓶颈。

1.2.3 集群级架构

上百甚至上千个机架。这时候要考虑:

  • 网络拓扑:Fat-Tree、Dragonfly、Torus。各有优劣。我个人偏爱Fat-Tree,因为它带宽收敛比好控制。
  • 资源管理:Slurm、Kubernetes、YARN。选哪个?看场景。Kubernetes生态好,但Slurm在HPC领域更成熟。

下面这张图,是我自己画的集群架构概览。你看一眼就能明白整体结构。

GPU集群典型架构 用户层 训练脚本 | 推理服务 | 监控工具 | 作业提交 资源管理层 Slurm / Kubernetes / YARN | 调度策略 | 资源隔离 网络层 InfiniBand / RoCE v2 | Fat-Tree拓扑 | 200Gbps+ 带宽 计算层 GPU节点(8×A100/H100) | NVLink互联 | 高速本地存储 CPU: AMD EPYC / Intel Xeon | 内存: 512GB~2TB 存储层 Lustre / GPFS / NFS | 分布式存储 | 高IOPS

我的经验:搭建集群时,别只盯着GPU。网络和存储往往是瓶颈。我见过太多人花大价钱买H100,结果用千兆网卡——那真是“好马配破鞍”。

1.3 GPU在AI训练与推理中的核心作用

说白了,AI计算就是矩阵乘法。GPU天生就是干这个的。

1.3.1 训练阶段:算力为王

训练大模型,核心是三个字:快、稳、省。

  • 快:GPU的并行计算能力,让训练时间从几个月缩短到几天。以GPT-3为例,如果用CPU训练,估计得几年。用GPU集群,几周搞定。
  • 稳:分布式训练最怕什么?节点故障。我遇到过训练到一半,一块GPU挂了,整个任务回滚。后来我们加了检查点(checkpoint)机制,每半小时存一次状态。嗯,这招很土但很管用。
  • 省:GPU的能效比远高于CPU。同样是做浮点运算,GPU每瓦特能干的活是CPU的5-10倍。

关键数据:一块A100 GPU的FP16算力是312 TFLOPS。而一颗顶级CPU的FP16算力,大概只有2-3 TFLOPS。差了100倍。

1.3.2 推理阶段:延迟为王

训练可以等,推理不行。用户点一下“生成”,你总不能让他等一分钟吧?

推理对GPU的要求不太一样:

  • 低延迟:用TensorRT、ONNX Runtime做模型优化。我习惯把FP16模型转成INT8,精度损失不到1%,但速度能快2倍。
  • 高吞吐:用批处理(batching)合并请求。但注意,批大小不是越大越好。我试过把批大小从32提到64,结果显存爆了——嗯,这坑我替你踩过了。
  • 弹性伸缩:推理流量有波峰波谷。用Kubernetes做自动扩缩容,白天多开几个Pod,晚上缩回去。省钱又省心。

1.3.3 训练与推理的对比

维度 训练 推理
核心指标 吞吐量(样本/秒) 延迟(毫秒)
精度要求 FP32/FP16/BF16 FP16/INT8/INT4
显存需求 大(40GB~80GB+) 中等(8GB~40GB)
并行方式 数据并行+模型并行 请求级并行
典型框架 PyTorch DDP/FSDP TensorRT/vLLM
容错要求 高(检查点恢复) 低(快速重启)

注意:别把训练和推理的硬件混为一谈。训练需要大显存、高带宽。推理需要低延迟、高能效。我见过有人用A100做推理,结果成本高得离谱。其实用T4或者L4就够了。

小结

这一章我们聊了GPU集群的来龙去脉。从单卡到万卡集群,从训练到推理,GPU已经成了AI的“心脏”。

我个人觉得,理解GPU集群的关键在于:别只盯着GPU本身。网络、存储、调度、容错,每一个环节都可能成为瓶颈。你想想看,一块H100要3万美金,但如果你网络配不好,它只能发挥30%的性能——那这钱花得冤不冤?

下一章,我们会深入聊聊资源调度的具体技术。到时候我会分享一些我在实际项目中用过的调度策略和优化技巧。嗯,先卖个关子。

可可精品资料库