【论文阅读】Scaling Laws for Neural Language Models

news2024/12/26 11:06:34

前言

  • 本文简要介绍 Scaling law 的主要结论
  • 原文地址:Scaling Laws for Neural Language Models
  • 个人认为不需要特别关注公式内各种符号的具体数值,而更应该关注不同因素之间的关系,比例等

Summary

  • Performance depends strongly on scale, weakly on model shape

    • scale: 参数量 N N N, 数据量 D D D, 计算量 C C C
    • shape: 模型深度,宽度,self-attention head数目等
  • Smooth power laws: N , D , C N, D, C N,D,C 三个因素中,当其他两个不受限制时,模型性能与任意一个因素都有 power-law relationship

    在这里插入图片描述

  • Universality of overfitting:只要我们一起增大 N N N D D D, 性能就会可预测得提高。但是当其中一个被固定,另一个在增加时,性能就会下降。二者比例关系大致为 N 0.74 / D N^{0.74}/D N0.74/D,这意味着,每次将模型增大8倍,只需要将数据量增大6倍来避免性能下降(过拟合)

    在这里插入图片描述

  • Universality of training:在模型参数量不变的情况下,模型的表现是可以预测的。通过对早期的训练曲线进行推断,就能粗略估计训练更长时间后模型的表现

  • Transfer improves with text performance:当在分布不同的文本上评估模型时,结果与在验证集上的结果密切相关,损失的偏移量大致恒定。这说明用验证集的结果来作为评估指标是合理的

  • Sample efficiency:大模型能在更少的step内,更少的数据(图4)上达到相同的性能

    在这里插入图片描述

  • Convergence is inefficient:当计算量固定时,但是模型大小和数据量没有限制时,大模型在得到最佳性能时,还远远没有收敛。最大训练效率训练比训练小模型到收敛是更 sample efficient的,数据需求随着计算量增长比较慢 D ∼ C 0.27 D \sim C^{0.27} DC0.27

  • Optimal batch size: 最好的batch size与loss有 power-law 关系,也受到梯度噪声规模的影响

总的来说,LLM的性能随着模型大小,数据量和计算量的增大平滑,可预测地提升

Summary of Scaling Laws

当性能只受除了embedding层之外的模型参数N, dataset size D, compute budgec C_min三者之一限制时,自回归的 Transformer 模型的 test loss是可以用一个 power-law预测的。

  • 模型参数受限时:

    在这里插入图片描述

  • 数据量受限时:

    在这里插入图片描述

  • 计算量受限时:

    • 在这里插入图片描述

    在这里插入图片描述

power-law α N , α D , α C m i n \alpha_N, \alpha_D, \alpha_C^{min} αN,αD,αCmin 代表当我们增加模型参数,数据量,计算量时模型性能提升的程度(越大越好), N c , D c , C c m i n N_c, D_c, C_c^{min} Nc,Dc,Ccmin的具体值没有实际意义

  • 这里看到,提升数据量提升最大,其次是模型参数,最后才是计算量

batch size与模型在测试集上的表现 L L L 之间有一个 power-law

在这里插入图片描述

在这里插入图片描述

  • 模型参数和数据量的公式结合起来看,可知,当增大模型参数时,应该以 N α N α D ∼ N 0.74 N^{\frac{\alpha_N}{\alpha_D}} \sim N^{0.74} NαDαNN0.74 的比例增大数据量,这里有一个将二者结合的方程(图4.左):

    在这里插入图片描述

  • 在有限的更新步数 S S S 下,test loss与 N , S N,S N,S 的关系为(图4.右)

    在这里插入图片描述

    • S c ∼ 2.1 × 1 0 3 , α s ∼ 0.76 S_c \sim 2.1 \times 10^3, \alpha_s \sim 0.76 Sc2.1×103,αs0.76
    • S m i n ( S ) S_{min}(S) Smin(S) 是最小的可能的优化步数

当计算量 C C C 有限,其他因素不受限时,最佳的 N , B , S , D N,B,S,D N,B,S,D C C C 的关系是

在这里插入图片描述

在这里插入图片描述

  • 计算量增大时,最应该增大的是模型大小,而不是训练时间和数据量,这也说明,当模型变大时,其更加 sample efficient(用没那么大的数据量可以训出很大的模型)
  • 然而实际上,由于硬件限制,人们通常将小模型训练更长的时间而不是追求 compute-efficient

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

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

相关文章

windows安装netcat

netcat 就是 nc netcat官网:https://eternallybored.org/misc/netcat/ 将下载的netcat解压到C:\Program Files重命名为netcat (安装位置自定义) 配置一下环境变量,让nc命令可以在任何地方使用 在系统变量中加入netcat的启动路径 …

【面试题37】优化MYSQL数据库的方法有哪些

文章目录 一、前言二、优化的方向2.1 数据库设计优化2.2 查询优化2.3 硬件优化2.4 配置优化2.5. 定期维护和监控 三、MySQL查询优化的一些方向3.1 使用索引3.2 优化查询语句3.3 避免使用SELECT *3.4 分析查询计划3.5 设置合适的缓存大小3.6 分区表3.7 使用连接池3.8 定期优化数…

记录一组excel函数-将同一个id的多组数据整合到一格并用逗号隔开

初始数据如上图,用函数整理成下图 主要涉及两点:去重和集合 1.去重: 方法1: UNIQUE函数 使用方法:输入函数UNIQUE(范围1:范围2) 方法2:数据->删除重复项 使用方法:选中需要删除重复项的列&a…

Android :Activity生命周期

MainActivity .java import android.app.Activity; import android.os.Bundle; import android.util.Log; import java.util.function.LongToDoubleFunction; public class MainActivity extends Activity { //日志标记 private String TAG this.getClass().getSimpleNa…

Jenkins持续集成:使用Gerrit Trigger插件实现代码提交自动验证

Gerrit Trigger插件集成了Gerrit代码审查,当创建一个“patch set”时触发Jenkins构建,本文档介绍Gerrit Trigger插件配置及使用方法。 目录 安装Gerrit Trigger插件Gerrit 访问权限配置Jenkins Gerrit Server配置Gerrit Trigger配置 安装Gerrit Trigger插…

深入理解Linux网络——本机网络IO

文章目录 一、相关实际问题二、跨机网络通信过程1)跨机数据发送2)跨机数据接收3)跨机网络通信汇总 三、本机发送过程1)网络层路由2)网络设备子系统3)驱动程序 四、本机接收过程五、问题解答 系列文章&#…

什么是Heatmap(热图)图表?用DHTMLX可实现快速构建

DHTMLX Chart是DHTMLX最新发布的JavaScript UI小部件库的核心内容之一,这个图表小部件收到了几个重要的更新,但其中最引人注目的是一个新的数据可视化选项——日历热图。 DHTMLX专注于JavaScript和HTML5 UI小部件和库,以帮助开发人员更快地构…

【ThinkPHP】实现一个逆向工程生成model

ThinkPHP为了节省一些重复的步骤,写了个简单版的生成model的工具,逆向生成model代码,节省时间,专注写业务代码。 ThinkPHP中的命令行也提供了一些生成代码的命令: make:controller 创建控制器 make:model 创建模型 m…

spring复习:(17)ClassPathXmlApplicationContext

类继承图如下: 其中的父类AbstractRefreshableApplicationContext中定义了一个DefaultListableBeanFactory对象: Nullableprivate DefaultListableBeanFactory beanFactory;AbstractApplicationContext中定义了obtainFreshBeanFactory方法 protected ConfigurableL…

你知道mp3转换器怎么用吗?分享在线音频转换mp3怎么弄

飒飒:嘿,你有没有想过如何将在线音频转换为mp3格式? 潇潇:是的,我确实有过这个需求。在网上找到了一些工具和方法,可以帮助我们完成这个任务。 飒飒:那太好了!你能告诉我一些详细的…

HTML中用户注册倒计时案例

一、代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </head><…

el-table 动态合并不定项多级表头

我们的需求是根据不同的厂配不同的多级表头,每个表头有需要合并的项,并且不确定 如图所示 对表格进行循环操作,此处不赘述,最下方有全部代码 表头是单独写在js方便后期更改,然后引入js文件,然后根据情况去调取 // 获取表头getHeader(nv) {this.factoryCodes nv;this.heade…

KingFusion通过动态库的方式连接KingIOServer数据

哈喽&#xff0c;大家好&#xff0c;我是雷工&#xff01; 本节主要测试KingFusion通过动态库接入KingIOServer数据&#xff0c;实现快速订阅、回写实时数据及客户端展示的操作。 说明&#xff1a; 1、Windows版本:KingFunsion与KingIOServer数据交互时&#xff0c;使用动态库…

python中应用requests库模拟postman请求携带token,使用get和post方法请求头携带token

背景&#xff1a; 实际开发中&#xff0c;Python程序中需要调用后台接口&#xff0c;充当前端&#xff0c;后端规定请求头需要携带token 封装的get和post类: class RequestMethodCarryJson:"""定义请求类型以json方式传递参数"""def __init__…

欧姆龙NJ1P2 Fins Udp通讯

NJ1P2 Tcp连接不成功&#xff0c;咨询客服说不支持Fins Tcp&#xff0c;所以改成Udp方式。 Udp连接&#xff1a; locateIp IPAddress.Parse(txtLocateIP.Text); locatePoint new IPEndPoint(locateIp, Convert.ToInt32(txtLocatePort.Text)); udpCl…

刷题记录02

题目1 解析: 遍历字符串&#xff0c;使用cur去记录连续的数字串&#xff0c; 如果遇到不是数字字符&#xff0c;则表示一个连续的数字串结束了&#xff0c; 则将数字串跟之前的数字串比较&#xff0c;如果更长&#xff0c;则更新更长的数字串更新到ret。 具体代码: import jav…

线上阿里云短信盗刷问题实录

背景 营销系统中有定时任务处理将待支付订单变更为已取消,执行时间五分钟一次.业务执行处理异常会发送短信给相关开发人员进行短信提醒.从下午一点二十五开始,开发人员间隔五分钟就会收到业务执行异常的短信提醒.最初因为测试或是正式环境中确实有异常的业务,才会出现这个情况,…

C++结合EasyX写扫雷(new)

【游戏】C结合EasyX写扫雷&#xff08;时隔半年后重写&#xff09; 上一次写扫雷这一次实现思路设置全局变量Grid类Grid类的成员函数启动画面死循环监听鼠标事件 全部代码其他 上一次写扫雷 大约半年之前的寒假期间&#xff0c;我接触了EasyX这个图形库&#xff0c;于是试着写…

antd design 4 版本,表格操作列文字间隔小竖线

组件库可以直接使用 <Divider typevertical /> 时小记&#xff0c;终有成。

23 MFC 富文本

文章目录 ui 设置 使用AfxInitRichEdit2(); 初始化否则不显示 //初始化 BOOL CnotePadDlg::OnInitDialog() {CDialogEx::OnInitDialog();// 设置此对话框的图标。 当应用程序主窗口不是对话框时&#xff0c;框架将自动// 执行此操作SetIcon(m_hIcon, TRUE); // 设置大图标…