“训练一个万亿参数的大模型,需要180张80GB显存的A100 GPU——但这样的‘豪华配置’,普通团队根本用不起。”这是当前大模型领域的真实困境:模型参数呈指数级增长,GPU显存却“跑不赢”,导致训练时内存频频“爆仓”。近日,我国国防科技大学团队在《Frontiers of Information Technology & Electronic Engineering》发表综述论文,系统梳理了“GPU内存墙”的破解之道——从模型参数到训练状态,再到中间计算结果,逐一“挤”出内存空间,让大模型训练更高效、更普惠。

问题有多棘手?模型参数两年涨240倍,GPU显存只翻10倍
过去几年,大模型的“膨胀速度”堪称“失控”:从BERT的3.4亿参数到GPT-3的1750亿,再到如今超万亿参数的模型,每两年参数规模增长约240倍。但GPU显存的增长却像“蜗牛爬”——2016年P100仅12GB,2023年H200也才141GB,7年只翻了10倍。

这种“参数疯涨、显存龟速”的反差,让训练大模型成了“内存噩梦”。比如训练GPT-3,仅模型参数就需要650GB显存,加上训练时的梯度、动量等状态(约1950GB),再算上中间计算的激活值(366GB),总需求超2900GB。而单张A100 GPU只有80GB显存,必须靠多卡并行,但卡越多,卡间通信又成了新瓶颈——就像用很多小水管接水,水还没流到就漏了大半。

怎么“挤内存”?三招破解参数、状态、激活“三大消耗户”
论文指出,GPU内存主要被三部分“吃干抹净”:模型参数(如权重)、训练状态(如梯度)、中间激活值(前向计算的中间结果)。科学家针对这三个“消耗户”,分别研发了“瘦身”策略:

第一招:给模型参数“分房住”
传统数据并行让每张GPU复制完整模型,参数太多时单卡根本存不下。于是科学家用“分块”思路:

模型并行:把模型按层或算子拆分,比如把Transformer的注意力层和全连接层分到不同GPU(如NVIDIA的Megatron-LM),每张卡只存一部分参数,像“把一本厚书拆成几册,每人看一章”。
流水线并行:把模型当工厂流水线分段,前一段算完传给下一段(如Google的GPipe),减少单卡内存压力。
混合并行:结合数据并行、模型并行和流水线并行,像“三维空间”分配任务(如微软的DeepSpeed),让内存压力“多向分流”。
第二招:给训练状态“减负”
训练时,优化器(如Adam)需要存梯度、动量等状态,这部分内存是模型参数的3倍。

ZeRO优化器:把梯度、动量等状态按卡数均分,8张卡时每张卡只存1/8(类似“分摊任务”),单卡内存需求直接降为原来的1/N。
PatrickStar:动态管理模型状态,把暂时不用的“搬”到CPU,需要时再“搬”回来,充分利用CPU和GPU的异构内存,像“把闲置物品暂存仓库,用的时候再取”。
第三招:给中间结果“省着用”
前向计算的中间激活值(如每个神经元的输出)占内存也不小。科学家用两种方法“省内存”:

重计算:删掉暂时不用的激活值,需要时再重新算一遍(类似“需要时再做饭,别提前备菜”)。
交换:把用不上的激活值“存”到CPU或硬盘,需要时再“读”回GPU(类似“把换季衣服收进箱子,穿的时候再拿”)。
未来挑战:平衡速度与内存,让大模型训练更“丝滑”
尽管已有多种方法,但论文也坦言技术瓶颈:多卡并行时,卡间传数据的时间可能比计算还长;为省内存,部分优化器(如Adafactor)可能影响模型收敛;动态调整内存时,还容易出现“内存碎片”,导致可用空间被分割成小块。

未来,科学家计划从三方面突破:研发新型并行策略(如结合序列并行和混合精度),优化训练状态管理(让优化器既省内存又稳定),提升重计算和交换效率(减少“搬数据”的时间)。

从“内存爆仓”到“精准控存”,这些技术不仅让万亿参数模型训练成为可能,更让大模型研发从“巨头专属”走向“更多人可及”。或许不久的将来,一个小团队用几张GPU,也能训练出自己的“定制大模型”——而这,正是破解“GPU内存墙”的终极意义。

来源: 信息与电子工程前沿FITEE