不懂技术与产品怎样做网站,深圳品牌折扣店,网络系统管理比赛,哪个网站做图找图片大模型的参数量和显存占用估算
现在业界的大语言模型都是基于transformer模型的#xff0c;模型结构主要有两大类#xff1a;encoder-decoder#xff08;代表模型是T5#xff09;和decoder-only#xff0c;具体的#xff0c;decoder-only结构又可以分为Causal LM#x…大模型的参数量和显存占用估算
现在业界的大语言模型都是基于transformer模型的模型结构主要有两大类encoder-decoder代表模型是T5和decoder-only具体的decoder-only结构又可以分为Causal LM代表模型是GPT系列和Prefix LM代表模型是GLM。针对decoder-only框架估算其参数量和显存占用。
参数量约为其中l指transformer层数h指隐藏层维度。
训练显存占用约为20*参数量单位B。20242444前两个数字是权重接着两个是梯度最后两个是优化器状态大小。每个可训练模型参数都会对应1个梯度并对应2个优化器状态。在混合精度训练中会使用float16的模型参数进行前向传递和后向传递计算得到float16的梯度在优化器更新模型参数时会使用float32的优化器状态、float32的梯度、float32的模型参数来更新模型参数。
推理显存占用约为2*参数量单位B。如果使用KV cache来加速推理过程KV cache也需要占用显存约为b是batchl是transformer层数h指隐藏层维度s是输入序列长度n是输出序列长度42*2k和v的cache每个cache fp16存储占用2B。
计算量FLOPs约为
计算量和参数量的关系近似认为在一次前向传递中对于每个token每个模型参数需要进行2次浮点数运算即一次乘法法运算和一次加法运算。一次训练迭代包含了前向传递和后向传递后向传递的计算量是前向传递的2倍。因此一次训练迭代中对于每个token每个模型参数需要进行6次浮点数运算。
训练时间估计参考下面的公式8是因为激活重计算技术来减少中间激活显存需要进行一次额外的前向传递即4*2次浮点数运算。 中间激活的显存占用大小约为其中b是batchs是序列长度a是注意力头数l是transformer层数h指隐藏层维度。在训练过程中中模型参数或梯度占用的显存大小只与模型参数量和参数数据类型有关与输入数据的大小是没有关系的。优化器状态占用的显存大小也是一样与优化器类型有关与模型参数量有关但与输入数据的大小无关。而中间激活值与输入数据的大小批次大小 和序列长度是成正相关的随着批次大小和序列长度的增大中间激活占用的显存会同步增大。
参考文章分析transformer模型的参数量、计算量、中间激活、KV cache