Scaling Law解析

文章目录

  • scaling law
    • 一个token的计算量
    • 幂律关系
    • 幂律规律
    • 实际指导

scaling law

幂律法则:对大模型数据量、参数量、算力之间的最优分配

  • 不仅仅是对语言大模型,对主要基于tranformer的多模态大模型基本都有效

对于Decoder-only结构模型(GPT架构),计算量C(Flops),模型参数量N(除去Embedding部分),数据大小D(tokens数),三者的关系为 C ≈ 6 N D C≈6ND C6ND

  • decoedr层数: l l l
  • attention隐层维度: d d d
  • attention feedforward层维度: d f f d_{ff} dff,一般来说 d f f = 4 ∗ d d_{ff}=4*d dff=4d
  • 模型参数量N,忽略embedding,norm和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 4d2
      • MLP的参数为 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} W1Rd×dff,W2Rdff×d,整体参数量是 2 ∗ d ∗ d f f = 2 ∗ d ∗ 4 d = 8 d 2 2*d*d_{ff}=2*d*4d=8d^2 2ddff=2d4d=8d2
    • 故每层的参数量为 4 d 2 + 8 d 2 = 12 d 2 4d^2+8d^2=12d^2 4d2+8d2=12d2,全部的 l l l层的参数量为 12 l d 2 12ld^2 12ld2,即 N = 12 l d 2 N=12ld^2 N=12ld2
      在这里插入图片描述

一个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肯定是有一个大致的固定值的,C=6ND,为了获得最好的性能,就要衡量N和D分别是多少
  • C与L的幂律关系
    • 在计算量C受限的情况下,通过关系是 C ≈ 6 N B C≈6NB C6NB,可以遍历不同参数量大小的模型,参数学习迭代 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 law,10B模型只需要200B的数据,但LLaMa作者发现,7B的模型性能在1T的数据训练后性能还能提升
      • LLaMa就是以训练的低效换取推理时的高效
        在这里插入图片描述

幂律规律有失灵的情况,即大模型中的涌现,前期算力增加,模型性能是按上述分析的规律逐渐提高,但是当算力提高到一定程度后,模型性能会突然陡增,目前来话,幂律规律只在涌现发生前有效,当具体算力提升到多少会发生涌现,目前还不知道,只能通过实践后统计发现,但一定会发生涌现

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/795170.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解决Vue中仓库持久化的问题,不借助插件用原生JS实现仓库持久化。了解仓库的插件机制、监听的时机

1、演示 前言:目前Vue有两种仓库,一种是Vuex,一种是Pinia,懂得都懂,这里就不详细介绍这两者的区别了 2、什么是持久化 仓库里面的数据是需要跨越页面周期的,当页面刷新之后数据还在,在默认情况下…

【网站项目】平面设计课程在线学习平台系统

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

定风波:苏轼

定风波:苏轼 该片围绕诗文、书画、美食、旅游、民生等主题,多维度描绘苏东坡的为官之道、志趣审美和精神世界,深入解读苏东坡在21世纪的价值。 生平 1.出生于眉山 2.进京参加会考 3.母亲去世,回乡奔丧 4.开始担任官职 5.恰逢王…

《债务与国家的崛起》西方民主制度的金融起源 - 三余书屋 3ysw.net

债务与国家的崛起:西方民主制度的金融起源 你好,今天我们来聊聊由英国知名经济与金融历史学家詹姆斯麦克唐纳所著的《债务与国家的崛起》这本书。19世纪世界历史上发生了一次巨变,即“大分流”。当时西方通过工业革命实现了科技和经济的飞速…

Java 学习和实践笔记(51):二分法查找(折半检索)

二分法查找(折半检索)又叫binary search. 要在一堆数据中查找是否存在某一个已知数,二分法查找的步骤: 第一步,对数据实现排序 第二步,将该数与排序后的数据集的中间一个数进行比较 第三步,…

SAP S/4HANA的常见部署方式

SAP S/4HANA是SAP面向企业数字化转型推出一代商务ERP 套件,与传统的SAP ERP系统相比,它基于内存计算和先进的数据处理技术,提供更快的数据处理速度、实时分析和更好的用户体验。SAP S/4HANA可以根据企业的需求以多种部署方式进行实施&#xf…

Java项目实战笔记--基于SpringBoot3.0开发仿12306高并发售票系统--(二)项目实现-第二篇-前端模块搭建及单点登录的实现

本文参考自 Springboot3微服务实战12306高性能售票系统 - 慕课网 (imooc.com) 本文是仿12306项目实战第(二)章——项目实现 的第二篇,详细讲解使用Vue3 Vue CLI 实现前端模块搭建的过程,同时其中也会涉及一些前后端交互的实现&am…

分享webgl魔幻星球

界面截图 webgl 是在网页上绘制和渲染三维图形的技术,可以让用户与其进行交互。divcss、canvas 2d 专注于二维图形。 对公司而言,webgl 可以解决他们在三维模型的显示和交互上的问题;对开发者而言,webgl 可以让我们是实现更多、更…

[从零开始学习Redis | 第九篇] 深入了解Redis数据类型

前言: 在现代软件开发中,数据存储和处理是至关重要的一环。为了高效地管理数据,并实现快速的读写操作,各种数据库技术应运而生。其中,Redis作为一种高性能的内存数据库,广泛应用于缓存、会话存储、消息队列…

栈的ADT实现——有空间限制的栈

1、研究有空间限制的栈的原因 当我们使用很多软件时都有类似“undo”功能,比如Web浏览器的回退功能、文本编辑器的撤销编辑功能。这些功能都可以使用Stack实现,但是在现实中浏览器的回退功能也好,编辑器的撤销功能也好,都有一定的数量限制。因此我们需要的不是一个普通的Sta…

齐护机器人方位传感器指南针罗盘陀螺仪

一、方位传感器原理及功能说明 齐护方位传感器是一款集成了三轴磁传感器芯片的方位传感器模块。适用于无人机、机器人、移动和个人手持设备中的罗盘(指南针)、导航和游戏等高精度应用。模块可以感应XYZ平面角度外,还可实现1至2的水平面角度罗…

【精品教程】护网HVV实战教程资料合集(持续更新,共20节)

以下是资料目录,如需下载,请前往星球获取: 01-HW介绍.zip 02-HTTP&Burp课程资料.zip 03-信息收集_3.zip 04-SQL注入漏洞_2.zip 05-命令执行漏洞.zip 06-XSS漏洞.zip 07-CSRF.zip 08-中间件漏洞.zip 09-SSRF.zip 10-XXE.zip 11-Java反序列…

用栈实现队列-使用两个栈来实现队列,则使我们插入的元素依照先入先出原则即可

一、用栈实现队列 https://leetcode.cn/problems/implement-queue-using-stacks/ (一)分析题目 (二)编写代码 typedef char STDataType; typedef struct Stack {STDataType* a; //int top; //相当于数组下标,注意…

idea 中 大于等于,不等于、小于等于等等这些符号发生了改变问题解决方法

1.问题描述 idea 中&#xff01;变为 ≠、 >变成了≥、<变成了 ≤ 等问题的解决办法 展示效果如下截图 解决方法

Spark 部署与应用程序交互简单使用说明

文章目录 前言步骤一&#xff1a;下载安装包Spark的目录和文件 步骤二&#xff1a;使用Scala或PySpark Shell本地 shell 运行 步骤3:理解Spark应用中的概念Spark Application and SparkSessionSpark JobsSpark StagesSpark Tasks 转换、立即执行操作和延迟求值窄变换和宽变换 S…

设计模式总结-外观模式(门面模式)

外观模式 模式动机模式定义模式结构外观模式实例与解析实例一&#xff1a;电源总开关实例二&#xff1a;文件加密 模式动机 引入外观角色之后&#xff0c;用户只需要直接与外观角色交互&#xff0c;用户与子系统之间的复杂关系由外观角色来实现&#xff0c;从而降低了系统的耦…

leetcode.面试题 02.07. 链表相交

题目 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点&#xff0c;返回 null 。 图示两个链表在节点 c1 开始相交&#xff1a; 思路 假a在链表A上移动,b在链表B上移动&#xff0c;a移动完在B上开始&…

mysql中主键索引和联合索引的原理解析

mysql中主键索引和联合索引的原理解析 一、主键索引二、什么是联合索引? 对应的B树是如何生成的?1、建立索引方式2、什么是最左前缀原则?3、回表4、为什么要遵守最左前缀原则才能利用到索引?5、什么是覆盖索引?6、索引扫描底层原理7、order by为什么会导致索引消失&#x…

OA系统:把复杂流程和操作简单化,十分考验设计对业务的理解。

面向企业端的管理系统功能是越来越臃肿&#xff0c;每个厂商都想把功能做的大而全&#xff0c;如果不这么做就会给你留下市场空挡给竞争对手&#xff0c;在这种复杂化不可逆转的情形下&#xff0c;如何用操作简单化呢&#xff0c;本文给出几点建议。 1. 简化流程&#xff1a; …

opencv使用问题记录一二

opencv介绍 opencv是一个计算机视觉处理软件库&#xff0c;拥有强大的功能和高效的性能。 但是由于早期版本的原因&#xff0c;存在一些与目前主流使用不兼容的问题 问题与解决 RGB通道顺序 一般图片处理类库的通道顺序就是RGB&#xff0c;但是opencv的是反过来的&#xf…