过去几年,GPU单卡计算能力不断提高。从早期的单卡训练,到如今动辄数十张、数百张甚至数千张GPU组成的计算集群,大模型训练正在越来越明显地走向分布式计算。
一个看似矛盾的问题也随之出现:如果单张GPU的计算能力已经如此强大,为什么不能继续依靠更强的单卡,而必须不断增加GPU数量?
答案并不只是“模型太大”。
真正的原因在于,大模型训练受到的限制从来不是单一的计算能力,而是显存容量、显存带宽、计算吞吐、GPU之间的数据通信、存储系统以及软件调度共同决定的。单卡性能不断提高以后,某些原本不明显的瓶颈反而会越来越突出。
换句话说,GPU越快,并不意味着整个训练系统就一定越快。
一、最直接的限制仍然是显存容量
大模型首先面对的是一个非常现实的问题:模型装不下。
假设一个模型拥有1000亿参数,如果仅仅按照FP16进行参数存储,每个参数需要2字节,那么光是模型参数本身就需要大约200GB空间。
但训练并不是只保存模型参数。
在训练过程中,还需要保存梯度、优化器状态以及大量中间激活值。以常见的训练方式来看,实际显存需求可能远远超过模型参数本身。
这意味着,一个大型模型即使能够在计算能力上由一张GPU完成,也可能因为显存容量不足而无法真正放入一张GPU。
这就是多GPU最基本的理由之一。
通过模型并行、参数分片等技术,可以把模型不同部分分布到多张GPU上,让原本无法装入单卡显存的模型成为可以训练的计算任务。
因此,多GPU并不只是为了“算得更快”,有时候首先是为了让模型能够运行起来。
二、显存容量和显存带宽是两个完全不同的问题
很多关于GPU性能的讨论容易把显存容量和显存带宽混为一谈。
显存容量决定的是“能装多少东西”,而显存带宽决定的是“数据能够多快地在GPU计算单元和显存之间搬运”。
即使一张GPU拥有足够大的显存,如果数据读取和写入速度无法跟上计算单元的速度,GPU的计算能力也无法完全发挥。
这也是现代GPU架构面临的重要问题。
GPU内部拥有大量计算核心,理论计算吞吐量非常高,但训练过程中需要不断读取权重、激活值和梯度。如果计算单元等待数据,理论上的TFLOPS或者PFLOPS就无法直接转换成实际训练速度。
因此,单纯提高计算核心数量并不能解决所有问题。
这也是为什么GPU制造商除了不断提高计算能力,也必须不断提升显存容量、显存带宽以及GPU之间的高速互联能力。
三、GPU越多,通信问题越重要
当模型被拆分到多张GPU以后,一个新的问题就出现了:
GPU之间必须不断交换数据。
例如,在数据并行训练中,每张GPU可以处理不同的数据批次,但计算完成以后,各GPU之间需要同步梯度。
这就涉及AllReduce等集体通信操作。
如果只有几张GPU,通信时间可能并不突出。但当GPU数量扩大到几十张、几百张甚至更多时,通信就可能成为影响整体效率的重要因素。
这也是为什么大型AI计算集群不能简单理解成“把很多GPU插在一起”。
真正重要的是GPU之间如何连接。
如果GPU之间只能通过较慢的传统I/O路径交换大量数据,那么GPU本身即使拥有非常强大的计算能力,也可能大量时间消耗在等待数据上。
因此,现代AI服务器越来越依赖高速GPU互联技术,例如NVLink以及相应的交换和网络技术。
四、PCIe不是显存带宽
原稿中有一个比较典型的技术混淆,就是把PCIe总线与GPU显存带宽放在一起解释。
实际上,两者承担的是不同的数据传输任务。
GPU显存带宽主要描述GPU计算单元与自身高带宽显存之间的数据交换能力;PCIe则主要承担CPU、GPU以及其他设备之间的数据通信。
当多GPU系统规模扩大以后,PCIe可能成为某些数据传输路径上的瓶颈,但它并不是“限制GPU显存实际带宽”的简单替代概念。
大型AI服务器之所以需要高速GPU互联,就是为了避免大量GPU通信全部依赖传统PCIe路径。
这也说明一个重要事实:
单张GPU的性能只是计算节点的一部分,整个系统的互联架构同样决定训练效率。
五、数据并行并不是唯一的办法
大模型训练之所以能够使用数十甚至数千张GPU,是因为软件框架可以采用不同层次的并行策略。
最常见的一种方式是数据并行。
简单来说,就是每张GPU处理不同的数据,然后在训练过程中同步梯度。
这种方式相对容易理解,但当模型规模进一步扩大以后,仅靠数据并行并不能解决模型本身无法放进单卡的问题。
这时候就需要模型并行,也就是把模型本身拆分到不同GPU上。
除此之外,还有张量并行、流水线并行以及参数、梯度和优化器状态分片等技术。
现代大模型训练往往不是简单选择其中一种方法,而是把多种并行策略结合起来。
因此,大模型训练实际上已经从“GPU计算问题”发展成了一个完整的分布式系统问题。
六、流水线并行解决的是另外一种问题
假设一个大型神经网络拥有数十甚至上百层,不一定需要把整个模型完整复制到每一张GPU上。
流水线并行可以把模型划分成多个阶段,不同GPU负责不同部分。
输入数据经过第一阶段处理以后传递给第二阶段,再传给第三阶段。
理论上,这种方式可以让多个GPU同时工作,而不是让某张GPU计算时其他GPU全部等待。
但流水线并行也会带来新的问题,例如阶段之间的负载是否平衡、数据传输是否足够快,以及如何减少GPU空闲时间。
因此,多GPU训练不是简单地“切开模型”,而是一个复杂的调度问题。
七、GPU数量不是越多越好
这是理解大模型训练非常关键的一点。
增加GPU数量通常可以提高理论计算能力,但训练速度不会永远按照GPU数量同比增长。
如果一张GPU能够完成100%的工作,那么两张GPU理想情况下可以获得接近两倍的计算能力。
但现实中还存在通信、同步、数据加载、任务调度以及GPU空闲等开销。
因此,两张GPU可能达不到单卡两倍的实际性能;当GPU数量进一步增加以后,效率下降可能更加明显。
这就是所谓的**扩展效率(scaling efficiency)**问题。
所以,大型训练集群真正追求的并不是GPU数量越多越好,而是在特定模型、批次大小、网络架构和通信条件下找到合理的规模。
八、软件优化的重要性越来越高
当硬件性能越来越强以后,软件的重要性反而更加突出。
如果训练框架不能有效利用GPU,或者数据输入速度跟不上GPU处理速度,那么再昂贵的GPU也可能处于低利用率状态。
因此,大模型训练通常需要对多个层面进行优化,包括数据加载、GPU内核、通信操作、显存管理以及计算和通信的重叠。
例如,如果GPU正在进行计算的时候,可以同时让另一部分数据通过高速互联网络传输,那么就有机会隐藏部分通信延迟。
这类优化对于大型GPU集群尤其重要。
因此,一个拥有1000张GPU但软件效率很低的集群,并不一定比一个拥有500张GPU、但软硬件协同更好的集群更快。
九、存储系统同样可能成为瓶颈
GPU并不是孤立工作的。
训练大型模型需要不断读取训练数据,同时还要保存检查点、模型权重以及其他中间数据。
如果存储系统吞吐量不足,GPU可能在等待数据。
这就形成了一种非常典型的浪费:
GPU拥有巨大的计算能力,却因为数据没有及时送到而处于空闲状态。
因此,大型AI基础设施通常需要高速网络、分布式存储以及高吞吐的数据加载系统共同配合。
从这个角度看,大模型训练已经不再是一台服务器里的单一硬件问题,而是从存储到网络、从CPU到GPU、从软件框架到调度系统的整体工程。
十、为什么单卡越来越强,却仍然需要更多GPU?
答案其实可以归结为三个层面。
第一,模型越来越大,单卡显存装不下。
第二,即使模型能够装下,单卡计算时间也可能过长。
第三,训练任务本身可以通过分布式并行进一步提高整体吞吐量。
但与此同时,多GPU也会产生新的成本,包括GPU之间的通信、网络设备、服务器、供电、散热以及软件开发复杂度。
因此,AI计算的发展并不是简单地从“一张GPU”走向“更多GPU”,而是在不断寻找计算、显存、通信和成本之间的平衡。
结语
大模型时代,单张GPU的计算能力当然仍然重要,但它已经不再是决定训练效率的唯一因素。
当模型规模从几十亿参数扩大到数百亿、数千亿甚至更大规模以后,显存容量决定模型能不能装下,显存带宽决定数据能否快速供应给计算单元,高速互联决定多GPU能否有效协同,网络和存储系统则决定整个计算集群能否持续提供数据。
因此,现代AI训练真正竞争的已经不是某一张GPU有多快,而是整个计算系统能够把多少理论算力转化成多少实际有效算力。
这也是为什么今天的大模型训练越来越依赖GPU集群。单卡性能提升并没有让多GPU失去意义,恰恰相反,它把系统的瓶颈从“计算能力不够”逐渐推向了“显存、通信、网络、存储和软件协同不够”。
未来AI硬件竞争的核心,也将越来越从单纯追求更高的单卡算力,转向更大的显存、更高效的GPU互联、更强的网络、更快的存储,以及能够把成百上千张GPU真正组织成一个整体的软硬件体系。
为什么大模型训练越来越依赖多 GPU,单卡计算能力提升后仍然有哪些限制
喜欢这篇报道?
使用下面的功能,方便以后继续阅读和分享 MNewsTV
关于文章收藏
收藏不需要注册帐号,收藏信息仅保存在当前浏览器中。
删除收藏请进入「我的收藏」进行管理。
分享 Facebook | X | WhatsApp | LinkedIn
捐助(Paypal): https://www.paypal.me/observeccp 订阅中国观察电报 Telegram : https://t.me/s/ObserveCCP