
作者 | Quentin Anthony、Stella Biderman、Hailey Schoelkopf
OneFlow编译
翻译 | 贾川、徐佳渝、杨婷
1
引言
Transformer语言模型的许多基本重要信息可以通过简单计算得出。不幸的是,这些计算公式在自然语言处理(NLP)社区中并不广为人知。AI非营利研究组织EleutherAI收集整理这些公式,并介绍这些公式的来源和重要性。
注:本文主要关注显存(VRAM)主导的训练成本。有关推理成本和时延方面的类似讨论,请参见此前发布的《大型语言模型的推理演算》。
(本文经授权后由OneFlow编译发布,译文转载请联系OneFlow获得授权。原文:https://blog.eleuther.ai/transformer-math/)
2
计算需求
Transformer模型的训练成本可通过以下基本公式计算得出:
C表示训练Transformer模型所需的计算量,以总浮点运算数为单位。
T表示训练模型所需的时间,以秒为单位。
P表示Transformer模型中的参数数量。
D表示数据集大小,以token为单位。
FLOP-seconds,单位为
GPU-hours,单位为[No.GPUs] x [Hours]
扩展定律(Scaling laws)论文通常使用PetaFLOP-days,或者
Actual FLOPs是一个值得注意的有用概念。GPU加速器白皮书通常会宣传它们的理论FLOPs,但在实际情况下这些值往往无法实现(特别是在分布式设置下)。下面的“计算成本”部分指出了在分布式训练设置中Actual FLOPs的常见报告值。
参数与数据集权衡(Tradeoffs)
这在特定意义上是最优的:假设使用1000个GPU运行1小时的成本与使用1个GPU运行1000小时的成本相同,如果你的目标是在最小化GPU训练成本的同时最大化模型性能,你就应该使用上面提到的公式。
计算成本的工程要点
-
GPT-NeoX在Normal Attention下实现了150 TFLOP/s/A100,而在Flash Attention下实现了180 FLOP/s/A100。这与其他高度优化的库在规模上是相符的,例如Megatron-DS的报告是在137至163 TFLOP/s/A100之间。
-
就经验来看,我们应该始终能够达到120 FLOP/s/A100的计算性能。如果计算性能低于115 FLOP/s/A100,那么很可能是模型或硬件配置出了问题。
-
使用高质量的互连技术(例如 InfiniBand),我们可以在数据并行维度上实现线性或亚线性扩展(sublinear scaling,即增加数据并行度应该近乎线性地增加总吞吐量)。下图展示了在Oak Ridge National Lab的Summit超级计算机上测试GPT-NeoX库的结果。注意:x 轴上是 V100,但文章中大部分数值示例针对的都是A100。

内存需求
推理
模型权重

-
int8, -
fp16 and bf16, -
fp32,
总推理内存
训练
模型参数
-
纯fp32, -
纯fp16,
-
混合精度(fp16/bf16 和 fp32),
优化器状态
-
对于vanilla AdamW, -
fp32参数副本:4字节/参数 -
动量:4字节/参数 -
方差:4字节/参数
-
对于像bitsandbytes这样的8位优化器, -
fp32参数副本:4字节/参数 -
动量:1字节/参数 -
方差:1字节/参数
-
对于具有动量的类SGD优化器, -
fp32参数副本:4字节/参数 -
动量:4字节/参数
梯度
-
fp32, -
fp16,
激活(Activations)和批量大小
激活重计算的工作原理是重新计算某些层的激活,而不是将它们存储在GPU内存中。内存的减少取决于我们在决定清除哪些层时所作的选择,但Megatron的选择性重计算方案如下图所示:

-
-
-
-
-
-
-
假设没有使用序列并行 -
假设激活存储在fp16中
总训练内存
分布式训练
分片(Sharded)优化器
如果要计算使用分片优化器进行训练所需的内存额外开销,则需要包含下图中的公式。有关分片优化的示例计算,请参见ZeRO论文中的下图(注意,

-
ZeRO-1,
-
ZeRO-2,
-
ZeRO-3,
3D并行
注意,此等式是近似值,原因如下:
(1)流水并行不会减少激活的内存占用;
(2)流水并行需要所有GPU存储全部传输中的micro-batches激活,这对于大型模型非常重要;
(3)GPU需要临时存储并行方案所需的额外通信缓冲区。
分片优化器 + 3D 并行

总结
试用OneFlow: github.com/Oneflow-Inc/oneflow/
本文分享自微信公众号 - OneFlow(OneFlowTechnology)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。