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.rhkb.cn/news/298533.html

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

相关文章

[技术闲聊]我对电路设计的理解(十)-示波器选取

电路出故障了,要解决问题就需要循证辩药,调试工具有多样,但对于硬件工程师来说,调试时的眼睛必是示波器无疑,波形样式、幅度、频率等都是疑难杂症散发出的信息,捕获流量密码,就能淘到金&#xf…

Ps:合并到 HDR Pro

Ps菜单:文件/自动/合并到 HDR Pro Automate/Merge to HDR Pro 合并到 HDR Pro Merge to HDR Pro命令可以将同一场景的具有不同曝光度的多个图像合并起来,从而捕获单个 HDR 图像中的全部动态范围。 合并到 HDR Pro 命令分两步进行。 首先,需要…

java -网络编程socket-聊天室-02

完整版代码 java -聊天室的代码: 用于存放聊天室的项目的代码和思路导图https://gitee.com/to-uphold-justice-for-others/java---code-for-chat-rooms.git 先引入线程的正统解释 线程(Thread)是程序执行流的最小单元。线程是操作系统分配CPU时间片的基…

【HTML】制作一个简单的三角形动态图形

目录 前言 开始 HTML部分 CSS部分 效果图 总结 前言 无需多言,本文将详细介绍一段HTML和CSS代码,具体内容如下: 开始 首先新建文件夹,创建两个文本文档,其中HTML的文件名改为[index.html],CSS的文件名…

Day83:服务攻防-开发组件安全JacksonFastJson各版本XStreamCVE环境复现

目录 J2EE-组件Jackson-本地demo&CVE 代码执行 (CVE-2020-8840) 代码执行 (CVE-2020-35728&#xff09; J2EE-组件FastJson-本地demo&CVE FastJson < 1.2.24 FastJson < 1.2.47 FastJson < 1.2.80 (利用条件比较苛刻) J2EE-组件XStream-靶场&CVE …

【JAVA】postman import certificates in project 导入证书pfx

1. 打开这个按钮 2. File ->Settings 3. 打开“certificates”, Add certificates 添加证书 4. 输入证书地址&#xff0c;然后选择证书文件pfx , 输入证书密码。点击添加就可以了。 特别提醒&#xff1a; 推荐本地自己证书验证软件&#xff0c;“KeyStore” 这个软件可以…

Revit模型进入虚幻引擎UE5教程

一、背景 小伙伴们是否有Revit进入虚幻引擎交互的需求呢&#xff1f; 二、实现功能 1.Revit进入虚幻UE5,包含模型属性&#xff0c;材质等 2.实现BIM构件点选&#xff0c;高亮&#xff0c;属性展示 3.实现BIM模型分层显示&#xff0c;爆炸等效果 三、教程地址 教程&#x…

软考 系统架构设计师系列知识点之数据库基本概念(1)

所属章节&#xff1a; 第6章. 数据库设计基础知识 第1节 数据库基本概念 数据&#xff08;Data&#xff09;是描述事务的符号记录&#xff0c;它具有多种表现形式&#xff0c;可以是文字、图形、图像、声音和语言等。信息&#xff08;Information&#xff09;是现实世界事物的…

力扣---删除链表的倒数第 N 个结点

给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5]示例 2&#xff1a; 输入&#xff1a;head [1], n 1 输出&#xff1a;[]示例 3&#xff1a…

IP归属地在互联网行业中的应用

摘要&#xff1a;IP&#xff08;Internet Protocol&#xff09;地址归属地是指互联网上某个IP地址所对应的地理位置信息。在互联网行业中&#xff0c;IP归属地具有重要的应用价值&#xff0c;包括网络安全、广告定向、用户定位等方面。IP数据云将探讨IP归属地在互联网行业中的应…

物联网实战--驱动篇之(一)EEPROM存储器(AT24C64)

目录 一、驱动概述 二、AT24C64简介 三、驱动编写 四、驱动应用 一、驱动概述 这是驱动篇的第一篇&#xff0c;所以先说明下驱动篇的作用和书写计划。之前的净化器项目已有提及&#xff0c;向ESP8266、SHT30这些都属于驱动设备&#xff0c;主芯片STM32是核心&#xff0c;相…

传输层 --- TCP (下篇)

目录 1. 超时重传 1.1. 数据段丢包 1.2. 接收方发送的ACK丢包 1.3. 超时重传的超时时间如何设置 2. 流量控制 3. 滑动窗口 3.1. 初步理解滑动窗口 3.2. 滑动窗口的完善理解 3.3. 关于快重传的补充 3.4. 快重传和超时重传的区别 4. 拥塞控制 4.1. 拥塞控制的宏观认识…

【MySQL】如何判断一个数据库是否出问题

在实际的应用中&#xff0c;其实大多数是主从结构。而采用主备&#xff0c;一般都需要一定的费用。 对于主备&#xff0c;如果主机故障&#xff0c;那么只需要直接将流量打到备机就可以&#xff0c;但是对于一主多从&#xff0c;还需要将从库连接到主库上。 对于切换的操作&a…

MySQL常见锁探究

MySQL常见锁探究 1. 各种锁类型1.1 全局锁1.2 表级锁1.2.1 表锁1.2.2 元数据锁&#xff08;MDL&#xff09;1.2.3 意向锁1.2.4 AUTO-INC 锁 1.3 行级锁1.3.1 Record Lock1.3.2 Gap Lock1.3.3 Next-Key Lock 2. MySQL是如何加锁的&#xff1f;2.1 什么 SQL 语句会加行级锁&#…

SketchUp Pro 2024 for mac 草图大师 专业的3D建模软件

SketchUp Pro 2024 for Mac是一款功能强大的三维建模软件&#xff0c;适用于Mac电脑。其简洁易用的界面和强大的工具集使得用户可以轻松创建复杂的3D模型。 软件下载&#xff1a;SketchUp Pro 2024 for mac v24.0.483 激活版下载 SketchUp Pro 2024 for Mac支持导入和导出多种文…

LangChain-08 Query SQL DB 通过GPT自动查询SQL

我们需要下载一个 LangChain 官方提供的本地小数据库。 安装依赖 SQL: https://raw.githubusercontent.com/lerocha/chinook-database/master/ChinookDatabase/DataSources/Chinook_Sqlite.sql Shell: pip install --upgrade --quiet langchain-core langchain-community la…

[C#]OpenCvSharp使用帧差法或者三帧差法检测移动物体

关于C版本帧差法可以参考博客 [C]OpenCV基于帧差法的运动检测-CSDN博客https://blog.csdn.net/FL1768317420/article/details/137397811?spm1001.2014.3001.5501 我们将参考C版本转成opencvsharp版本。 帧差法&#xff0c;也叫做帧间差分法&#xff0c;这里引用百度百科上的…

【Linux】线程概念及线程互斥

目录 线程概念 线程优点 线程缺点 线程异常 线程系统编程接口 线程创建及终止 线程等待 使用线程系统接口封装一个小型的C线程库并实现一个抢票逻辑 线程互斥 互斥量的接口 线程互斥实现原理 使用系统加锁接口封装LockGuard 实现自动化加锁 线程安全和可重入函数 …

前端与后端协同:实现Excel导入导出功能

&#x1f31f; 前言 欢迎来到我的技术小宇宙&#xff01;&#x1f30c; 这里不仅是我记录技术点滴的后花园&#xff0c;也是我分享学习心得和项目经验的乐园。&#x1f4da; 无论你是技术小白还是资深大牛&#xff0c;这里总有一些内容能触动你的好奇心。&#x1f50d; &#x…

c# wpf template itemtemplate+dataGrid

1.概要 2.代码 <Window x:Class"WpfApp2.Window8"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d"http://schemas.microsoft.com/expression/blend…