Transformer Decoder-Only 算力FLOPs估计

[复制链接]
发表于 2025-9-12 08:38:30 | 显示全部楼层 |阅读模式




FLOPs和FLOPS的区别



  • FLOPs (Floating Point Operations)是指模型或算法实行过程中总的浮点运算次数,单元是“次”
  • FLOPS (Floating Point Operations Per Second)是指硬件装备(如 GPU 或 CPU)每秒可以或许实行的浮点运算次数,单元是“次/秒”


MFU

模型算力利用率(Model FLOPs Utilization, MFU)和硬件算力利用率(Hardware FLOPs Utilization, HFU)是评估某一模型实现对芯片计算性能利用环境的常用指标。


  • 模型算力利用率:是指模型一次前反向计算消耗的矩阵算力与机器算力的比值
  • 硬件算力利用率:是指考虑重计算后,模型一次前反向计算消耗的矩阵算力与机器算力的比值


矩阵相乘

矩阵是A(大小H×D),参数矩阵B(大小D×W),Y=AB的FLOPs公式就是:
H × W × ( D + (D−1)) = H × W × (2D−1) 
其中Y的每个元素都是经过D次相乘以及D-1加法。如果考虑常数项或者考虑参加bias,即Y中每一个元素必要额外举行一次加法,则可以将公式中的-1省略,即:2 × H × D × W


矩阵乘法FLOPs与参数量Parameter

一个全毗连层的神经网络计算的过程可以看成是两个矩阵举行相乘的操作,忽略掉激活函数(activation)部门的计算,假设输入矩阵是A、矩阵大小是H×I,全毗连层的参数矩阵是B、矩阵大小是I×W,全毗连层矩阵计算过程实际就是:Y=AB
以是,对于输入值大小Input_size是H ,矩阵乘法中有:
FLOPs = 2 × H × D × W = 2 × Input_size × Parameter
即可以简朴认为一个token的计算量是参数量的2倍

Transformer FLOPs计算

 参数量计算参考Transformer Decoder-Only 参数量计算-CSDN博客,且通过上面分析,可以知道1个token的计算量是参数量的2倍,从而可以计算transformer的每层FLOPs如下

(其中embed层的计算是查表计算,计算量为4×d_model)
推理时每个token必要的算力:C_forward per token ≈ 2N 
根据反向传播的计算量是前向传播的2倍的结论,假设模型整个训练过程语料Token数是 T ,可以估算Transfomer训练(前向传播+反向传播)的FLOPs 约等于: C_train  ≈  2N × 3 × T = 6NT
如果考虑激活重计算技能(Activation Recomputation),反向传播的计算量大概是前向传播的3倍,则训练FLOPs 约等于8NT

实际环境时间估算

上面说的算理想环境:即首要考虑 GPU 前后向时算矩阵运算这个时间大头,而且 隐藏层维度d_model >> 序列长度n_ntx,利用率100%,不考虑更新、通信、切分、其他步调(加载数据、log等等)。
实际环境不可能达到 100%,如果考虑到上述效率,一般要打折扣。折扣系数要看框架,现在比力高效的框架算上通信加载也就0.5,模型大通常来说折扣还会高。








免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
继续阅读请点击广告

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

×
登录参与点评抽奖,加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表