大模型

Ikko Lv4

大模型参数量和显存的换算关系

1B参数对应多少G显存?

B和G都是十亿(1000M或1024M)的意思,M是100万的意思,平时说模型参数有xB就是说有x十亿个参数,平时说显存有多少G/M是说有多少G/M个字节(byte),1个字节=8比特(bit),那么,1B模型参数对应多少G内存和参数的精度有关,如果是全精度训练(fp32),一个参数对应32比特,也就是4个字节,参数换算到显存的时候要乘4,也就是1B模型参数对应4G显存,如果是fp16或者bf16就是乘2,1B模型参数对应2G显存。

训练时的显存开销

除了模型参数本身外,训练时的显存开销还有这几个部分:

  • 梯度:一个参数对应一个梯度值,所以梯度所占显存是参数的1倍
  • 优化器状态:取决于优化器的具体类型,如果是裸SGD就不需要额外显存开销,如果是带一阶动量(momentum)的SGD就是1倍,如果是Adam的话就要在momentum的基础上加上二阶动量,优化器状态所占显存就是参数的2倍。

小结:假设我们全参数微调训练一个参数量为1b(十亿参数)的大模型,优化器为Adam,精度为fp32,忽略数据和hidden states部分的显存占用,那么显存占用为:参数的4G+梯度的4G+优化器状态的8G,共16G。如果是bf16精度训练则要减半,就是8G。如果是混合精度训练则根据各部分的精度调整计算过程。

按照Zomi PPT 中的说法:大模型混合精度训练过程中,使用 BF16 进行前向传递,FP32 反向传递梯度信息;优化器更新模型参数时,使用 FP32 优化器状态、FP32 的梯度来更新模型参数。

在一次训练迭代中,每个可训练参数都对应 1 个梯度,2个优化器状态(Adam)。设模型参数量为 φ(FP16),那么梯度的参数量为 2φ(FP32),Adam 优化器的参数量为 4φ(FP32)。

训练总内存 = 模型内存(φ) + 梯度内存(2φ) + 优化器内存(4φ) + 激活内存(Xφ) + 其他内存(1.X φ)

激活值的数据占了显存的大头

LLAMA-13B 模型权重为 25GB,8倍为200GB,200GB/64GB≈3.2,理论上可以放在单机八卡的一个 NPU 节点。为什么 LLAMA-13B 一般最小资源需要两个节点 16卡?

image-20250318102003888

image-20250318102026582

激活值

激活值是神经网络前向传播时,各层神经元经过非线性函数(如ReLU)处理后的输出张量。例如:

  • 卷积层输出的特征图(Feature Maps)
  • 全连接层的中间结果
  • 注意力机制中的注意力矩阵(如Transformer)

在反向传播计算梯度时,需根据链式法则复用前向传播的激活值。

推理时的显存开销

神经网络推理(Inference)阶段,没有优化器状态和梯度信息,也不需要保存中间激活。因此推理阶段占用的显存要远远远小于训练阶段。

模型推理阶段,占用显存大头是模型参数,一次推理过程中,每个可训练参数都对应 1 个梯度,设模型参数量为 φ,使用 float16 来进行推理,模型参数占用的显存大概是 2φ bytes 。

训练总内存 = 模型内存(φ) + 其他内存(0.X φ)

MFU(Model FLOPS Utilization)

定义: 即模型算力利用率,是指模型一次前反向计算消耗的矩阵算力与机器(如GPU)算力的比值。重要性: 它直接反映了模型在训练过程中对计算资源的有效利用程度。在大模型训练中,提高MFU是优化训练效率的关键手段之一。

image-20250318103310346

MFU的值受到多种因素的影响,包括但不限于:

模型架构: 不同架构的模型在分布式训练中的算力利用率可能存在显著差异。例如,Transformer架构的模型由于其并行性和矩阵运算密集的特点,通常能够在分布式训练中实现较高的MFU。

分布式训练策略: 包括数据并行、模型并行、流水线并行等不同的并行策略,以及这些策略的具体实现方式(如梯度累积、张量并行等),都会对MFU产生重要影响。

硬件环境: GPU型号、数量、网络连接速度、显存大小等硬件因素都会限制分布式训练的性能和算力利用率。

软件优化: 包括编译器优化、库函数优化、自动混合精度训练等软件层面的优化措施,也能在一定程度上提升MFU。

数据集和批次大小: 数据集的大小和复杂性,以及训练时使用的批次大小,都会影响每次迭代中的计算量和算力利用率。

  • Title: 大模型
  • Author: Ikko
  • Created at : 2026-03-19 12:08:12
  • Updated at : 2026-03-24 00:41:33
  • Link: http://ikko-debug.github.io/2026/03/19/大模型/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments