文章内容主要摘自:https://zhuanlan.zhihu.com/p/624740065
1. 前言
最近,OpenAI推出的ChatGPT展现出了卓越的性能,引发了大语言模型(Large Language Model, LLM)的研究热潮。大规模语言模型的“大”体现在两个方面:模型参数规模大,训练数据规模大。以GPT3为例,GPT3的参数量为1750亿,训练数据量达到了570GB。进而,训练大规模语言模型面临两个主要挑战:显存效率和计算效率。
现在业界的大语言模型都是基于transformer模型的,模型结构主要有三大类:
- encoder-decoder(代表模型是T5)、
- encoder-only(代表模型是BERT,也叫Masked-Language Model,MLM)以及
- decoder-only,具体的,decoder-only结构又可以分为Causal LM(因果语言模型-自回归的预测,代表模型是GPT系列)和Prefix LM(代表模型是GLM,UniLM)。归因于GPT系列取得的巨大成功,大多数的主流大语言模型都采用Causal LM结构。
-
因此,针对decoder-only框架,为了更好地理解训练训练大语言模型的显存效率和计算效率,本文分析采用decoder-only框架来分析transformer模型的模型参数量、计算量、中间激活值、KV cache。
Transformer 原始架构和decoder-only架构的GPT对比:
为了方便分析,先定义好一些数学符号。记transformer模型的层数为 l l l ,隐藏层维度为 h h h ,注意力头数为 a a a 。词表大小为 V V V ,训练数据的批次大小为 b b b ,序列长度为 s s s 。
2. 模型参数量
decoder-only架构的大模型有两部分组成,输入&输出的词嵌入层(大部分模型词嵌入层共享参数)以及堆叠 l l l层的transformer块。
tran