开个小网站要怎么做,网站创建桌面快捷方式,南昌seo排名,怎么建设一个国外的网站文章目录 scaling law一个token的计算量幂律关系幂律规律实际指导 scaling law
幂律法则#xff1a;对大模型数据量、参数量、算力之间的最优分配
不仅仅是对语言大模型#xff0c;对主要基于tranformer的多模态大模型基本都有效
对于Decoder-only结构模型(GPT架构)#… 文章目录 scaling law一个token的计算量幂律关系幂律规律实际指导 scaling law
幂律法则对大模型数据量、参数量、算力之间的最优分配
不仅仅是对语言大模型对主要基于tranformer的多模态大模型基本都有效
对于Decoder-only结构模型(GPT架构)计算量C(Flops)模型参数量N(除去Embedding部分)数据大小D(tokens数)三者的关系为 C ≈ 6 N D C≈6ND C≈6ND
decoedr层数 l l lattention隐层维度 d d dattention feedforward层维度 d f f d_{ff} dff一般来说 d f f 4 ∗ d d_{ff}4*d dff4∗d模型参数量N忽略embeddingnorm和bias transformer每层包括self-attention和MLP两部分 self-attention参数为 W Q , Q K , W V , W O W_Q,Q_K,W_V,W_O WQ,QK,WV,WO每个矩阵的维度均为 R d × d R^{d×d} Rd×d整体参数量是 4 d 2 4d^2 4d2MLP的参数为 W 1 ∈ R d × d f f , W 2 ∈ R d f f × d W_1 \in R^{d×d_{ff}}, W_2 \in R^{d_{ff}×d} W1∈Rd×dff,W2∈Rdff×d整体参数量是 2 ∗ d ∗ d f f 2 ∗ d ∗ 4 d 8 d 2 2*d*d_{ff}2*d*4d8d^2 2∗d∗dff2∗d∗4d8d2 故每层的参数量为 4 d 2 8 d 2 12 d 2 4d^28d^212d^2 4d28d212d2全部的 l l l层的参数量为 12 l d 2 12ld^2 12ld2即 N 12 l d 2 N12ld^2 N12ld2
一个token的计算量
前向 一个参数对应于两次浮点运算一次乘法、一次加法即计算量为2N次计算量 反向 反向求导需要对w和x分别求导故计算量是前两的两倍即4N 最终的计算量是6N
一个token的计算量是6N那么D个tokens的计算量就是6ND
以模型的损失L作为性能的判断标准L越小模型性能越强
幂律关系
D与L的幂律关系 限制训练数据D大小在比较大的语言模型上训练使用早停策略停止训练的实际(一旦测试及损失停止下降就停止训练)。换句话说只限制了数据集大小D模型参数N和计算量C没有限制。模型性能L和D由如下的幂律关系数据集不断增大L越来越小但D增大到一定程度时L降低的效果就不会明显 L ( D ) ( D c D ) α D L(D)(\frac{D_c}{D})^{\alpha_D} L(D)(DDc)αD
N与L的幂律关系 在不限制数据集的情况下训练具有不同参数量的大语言模型直至测试及损失达到收敛。换句话说只限制了模型参数量N而数据集D和计算量C没有收到限制。模型性能L和N之间存在如下的幂律关系。( N c 、 α N N_c、\alpha_N Nc、αN均为常数。需要注意的是模型参数量N不包含静态编码的矩阵 W e m b W_{emb} Wemb)模型参数不断增大L越来越小但N增大到一定程度时L降低的效果就不会明显 L ( N ) ( N c N ) α N L(N)(\frac{N_c}{N})^{\alpha_N} L(N)(NNc)αN
基于预算、时间、能源等各方面考虑计算量C肯定是有一个大致的固定值的C6ND为了获得最好的性能就要衡量N和D分别是多少C与L的幂律关系 在计算量C受限的情况下通过关系是 C ≈ 6 N B C≈6NB C≈6NB可以遍历不同参数量大小的模型参数学习迭代 6 N B \frac{6}{NB} NB6次后停止。在这个过程中保持批量大小B不变然后可以悬着效果最好的一个模型。接着就得到了模型性能L和C之间的幂律关系其中 C c , α C C_c,\alpha_C Cc,αC均为常数 L ( C ) ( C r C ) α C L(C)(\frac{C_r}{C})^{\alpha_C} L(C)(CCr)αC
幂律规律 上图中左侧时模型测试集损失与算力log的曲线图右侧是具体的数据
计算量是 1 × 1 0 20 1×10^{20} 1×1020时性能最强即损失最小的模型量N约为1B计算量是 1 × 1 0 21 1×10^{21} 1×1021时性能最强即损失最小的模型量N约为3B计算量是 1 × 1 0 22 1×10^{22} 1×1022时性能最强即损失最小的模型量N约为10B总结规律时当计算量或算力扩大十倍时性能最强模型的参数量约扩大三倍即当计算量是 1 × 1 0 23 1×10^{23} 1×1023时性能最强即损失最小的模型量N约为30B。(此规律仅限于基于transformer结构的模型)当确定了算力C性能最强模型的参数量N那么训练所需的数据量D也可以估计个大概基于此规律可以以小算力的情况下进行实现将内部涉及的参数规律求解出来然后再在大算力上进行扩展训练
模型在不同数据集的测试集上的损失存在差别但整体都时呈现上述分析的幂律关系的 不同模型架构可能也符合幂律关系如上图中的LSTMs同样参数量时transformers的性能比LSTMs更好
实际指导
同样参数量模型的越深比越宽性能更好
固定住计算量随着计算量的增大对应的最优模型参数量也越来越大对应的最优数据量也越来越大在对数域看就是成线性关系。当在小计算量配置下通过实现获得了上图中的右侧的两张线型图就可以指导大模型训练过程
假设当前收集到了1.4T tokens的数据就能通过上图中最右侧图反推出所需的计算量进而就可以通过上述图中间的图推出应该训练参数量多大的模型对应计算量C、模型参数量N和数据量D其中知道了一个值就能反推出另外两个值
上图中当计算量扩大10倍时不同公司对数据和模型的分配有区别
openai是数据扩大1.8倍模型扩大5.5倍deepmain是数据和模型都扩大3.16倍原因是模型架构有差别如激活函数、位置编码、数据质量等差异上述的最优算力分配((性价比最优)是指在训练的时候计算量固定时对应的最优的模型大小和数据大小如果不固定计算量在固定的参数量N固定数据量D持续增大即计算量C持续增大时模型的测试集损失也会逐渐降低的只是性价比变低了 假设同样的计算量性价比最优的配比是用1T的数据训练一个20B的模型但其实也能使用3T的数据训练一个7B的模型这样做的原因有二 一是便于推理时能部署模型的显卡型号更多如果时20B或更大的50B的模型其性能最好但服务开发时并没有合适的显卡进行部署二是模型过大推理的效率很低速度很慢对于openai因为其不开源并且有大显存的卡进行部署所以其可以进尽可能遵循scaling law的指导训练对应尺寸的模型Meta开源的LLaMa系列模型因为其开源性质就要考虑开源社区的开发者能用手头的显卡进行部署的问题所以其观点是给定模型的目标性能后并不需要用最优的计算效率在最快的实践训练好模型而应该在更大规模的数据上训练一个相对更小模型这样模型在推理阶段的成本更低根据scaling law10B模型只需要200B的数据但LLaMa作者发现7B的模型性能在1T的数据训练后性能还能提升LLaMa就是以训练的低效换取推理时的高效
幂律规律有失灵的情况即大模型中的涌现前期算力增加模型性能是按上述分析的规律逐渐提高但是当算力提高到一定程度后模型性能会突然陡增目前来话幂律规律只在涌现发生前有效当具体算力提升到多少会发生涌现目前还不知道只能通过实践后统计发现但一定会发生涌现