LLM:Scaling Laws for Neural Language Models (上)

论文:https://arxiv.org/pdf/2001.08361.pdf

发表:2020

摘要
1:损失与模型大小、数据集大小以及训练所用计算量成比例,其中一些趋势跨越了七个量级以上。

2:网络宽度或深度等其他架构细节在很大范围内影响较小。
3:模型/数据集大小和训练速度与模型大小的依赖关系由简单的方程描述。这些关系使我们能够确定在固定的计算预算下的最优资源分配。

4:更大的模型显著地更具样本效率,因此,在相对较小的数据量上训练非常大的模型并在收敛之前显著地停止。

发现

1:LLM模型的性能主要取决于scale,而不是model shape

模型性能强烈依赖于规模,这由三个因素组成:模型参数数量N(不包括嵌入)、数据集大小D和用于训练的计算C的数量。在合理的限度内,性能对其他架构超参数(例如深度与宽度的比较)的依赖非常弱。(第3节)

2:平滑的幂法则

当不受其他两个因素瓶颈的限制时,性能与三个规模因子N、D、C之间存在着强相关的幂关系三个因素的趋势跨度超过六个量级(参见图1)。我们在上端没有观察到偏离这些趋势的迹象,尽管性能最终必须在达到零损失之前趋于平稳。(第3节) 

当我们增加模型大小N、数据规模D和训练时的计算量C,语言模型的性能会平稳提高为了获得最佳性能,这三个因素需要同时缩放。实验表明:在其余两个参数不做限制条件下,测试Loss与另一个因素上都表现出幂关系。 

3:过拟合的普遍性

同步增加模型大小N和数据规模D,模型性能就会显著地提高。但是,如果我们只固定N、D中的一个,而增加另一个规模,就会出现回报递减的情况。性能的惩罚可以预测地依赖于\frac{N^{0.74}}{D},这意味着我们每次将模型规模N增加8倍,只需将数据规模D增加5倍就可以避免受到惩罚(第4节)

4:训练的普遍性

训练曲线遵循可预测的幂律,其参数大约独立于模型的大小。通过外推训练曲线的早期部分,我们可以大致预测如果我们训练更长时间会达到的损失。(第5节)

5:迁移能力随着测试性能的提高而提高

当我们在与模型训练数据分布不同的文本上评估模型时,结果与在训练验证集上的结果有强烈的相关性,但损失的偏移约为常数 - 换句话说,转移到不同的分布会产生一个常数的惩罚,但除此之外,性能大致与在训练集上的性能一致。 (第3.2.2节)

6:样本效率

大型模型比小型模式更具有样本效率,使用更少的优化步骤(图2)和更少的数据点(图4)就可以达到相同的性能水平。

紫色->绿色->黄色:表示模型的参数量N逐渐增大。

下图(左):收敛到相同水平(横线),大模型(黄色)需要的token数更少,即效率更高。

下图(右):收敛到相同水平(横线),小模型(黄色)耗时(PF-days)更少。

这里横轴单位为PF-days: 如果每秒钟可进行1015次运算,就是1 peta flops,那么一天的运算就是1015×24×3600=8.64×1019,这个算力消耗被称为1个petaflop/s-day。 

7:收敛效率低下

固定计算量C,但不对模型规模N或可用数据规模D施加限制时,我们通过训练非常大的模型并在远未达到收敛的情况下停止(参见图3)来达到最佳性能。因此,最大化计算效率的训练将比基于训练小模型到收敛的预期更具有样本效率。数据要求随着D\sim C^{^{0.27}}的训练计算而增长非常缓慢。(第6节) 

对于计算效率最优的训练:大部分的计算能力应投放到模型尺寸增加上,小部分投入到数据增加上。在数据增加方面:主要是增加batch size,迭代steps基本可以忽略。从Fig3中可以看出:

model size : Batch size : serial steps = 1,000,000 : 100 : 10

 8:最佳batch size 

 这些模型的理想批处理大小大致是损失的幂,并且可以通过测量梯度噪声尺度来确定。对于我们可以训练的最大模型,收敛时的理想批处理大 小约为 1-2 百万个token。(第 5.1 节)

 2.2 训练流程

使用 Adam 优化器对模型进行固定 2.5×105 步的训练,批大小为 512 个序列,序列包含 1024 个词元。由于内存限制,我们使用 Adafactor对我们最大的模型(超过 1B 参数)进行训练。我们尝试了各种学习率和调度,如附录 D.6 中所述。我们发现收敛结果很大程度上与学习率调度无关。除非另有说明,我们数据中包含的所有训练运行都使用了一个学习率调度,该调度包括 3000 步线性预热,然后是余弦衰减到零

3.1 估计Transformer形状和超参数独立性

当我们保持总非嵌入参数计数 N 固定时,Transformer的性能对 nlayer 、 nheads 和 dff 等形状参数依赖性非常弱。

3.2 非嵌入参数计数 N 的性能 

左图:当我们包括嵌入参数时,性能似乎除了参数数量外还强烈依赖于层数。

右图:当我们排除嵌入参数时,不同深度的模型的性能收敛到一个趋势。只有少于2层的模型或具有极端的深度宽度比的模型明显偏离趋势。 

在WebText2数据集上训练的模型,在其他各种数据集上的测试损失也是 N 的幂律,且幂律几乎相同,如上图所示。

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

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

相关文章

JVM篇--垃圾回收高频面试题

JVM垃圾回收 1 简单说下Java垃圾回收机制? 首先在java运行过程中,其实程序员并不需要去显示的调用程序来释放对象的内存,而是由虚拟机来完成的,具体来看是在jvm中有个垃圾回收线程,这个线程是个守护线程,…

揭秘AI换脸技术:从原理到应用

随着人工智能技术的不断发展,AI换脸技术逐渐成为人们关注的焦点。这项神奇的技术能够将一张图像或视频中的人脸替换成另一张人脸,让人不禁惊叹科技的神奇。那么,AI换脸技术究竟是如何实现的呢?本文将带您深入了解AI换脸技术的原理…

【JavaEE】网络原理:网络中的一些基本概念

目录 1. 网络通信基础 1.1 IP地址 1.2 端口号 1.3 认识协议 1.4 五元组 1.5 协议分层 什么是协议分层 分层的作用 OSI七层模型 TCP/IP五层(或四层)模型 网络设备所在分层 网络分层对应 封装和分用 1. 网络通信基础 1.1 IP地址 概念:IP地址…

Qt 状态机框架:The State Machine Framework (二)

传送门: Qt 状态机框架:The State Machine Framework (一) Qt 状态机框架:The State Machine Framework (二) 1、利用并行态避免态的组合爆炸 假设您想在单个状态机中对汽车的一组互斥属性进行建模。假设我们感兴趣的属性是干净与肮脏,以及移动与不移动。需要四个相互排斥的…

手把手教你如何快速定位bug,如何编写测试用例,快来观摩......

手把手教你如何快速定位bug,如何编写测试用例,快来观摩......手把手教你如何快速定位bug,如何编写测试用例,快来观摩......作为一名测试人员如果连常见的系统问题都不知道如何分析,频繁将前端人员问题指派给后端人员,后端人员问题指派给前端人员&#xf…

cetos7搭建部署k8s 版本1.28

主机分配 内存最少是4G cpu个数最少两个 IP内存CPU主机名192.168.231.12044K1 192.168.231.12144K2192.168.231.12244K3 关闭防火墙 systemctl stop firewalled 关闭swap vim /etc/fstab 设置主机名称 hostnameset 安装docker 三个主机 初始化集群 在mas…

【unity学习笔记】语音驱动blendershape

1.导入插件 https://assetstore.unity.com/packages/tools/animation/salsa-lipsync-suite-148442 1.选择小人,点击添加组件 分别加入组件: SALSA EmoteR Eyes Queue Processor(必须加此脚本):控制前三个组件的脚本。…

ASP.NET Core SingleR:初次体验和简单项目搭建

文章目录 前言应用场景SignalR 网站长什么样?第一个ASP.NET core SignalR程序确定SignalR版本新建MVC项目添加unpkg管理器添加客户端添加ChatHub文件添加SignalR服务添加网页运行测试浏览器Websocket调试type1type6Type为其它时 总结 前言 平常的网页通讯都是基于H…

Python武器库开发-武器库篇之Fofa-API使用(四十六)

Python武器库开发-武器库篇之Fofa-API使用(四十六) FOFA(FOcus Observation of Futures Assets)是一款专业的网络资产搜索引擎,旨在帮助企业发现和评估网络上的潜在安全风险。FOFA的基本原理是通过搜索引擎的方式,按照关键词对互…

【51单片机Keil+Proteus8.9】温室盆栽灌溉系统

实验五 实验名称 温室盆栽灌溉系统 软件设计: 1. 定义对应的引脚和端口的别名。 2. 编写延时函数,用于控制程序的执行速度。 3. 编写LCD控制函数,包括发送命令和发送数据两种操作。 4. 编写显示函数,用于在LCD上显示字符串…

PHP+MySQL组合开发:微信小程序万能建站源码系统 附带完整的搭建教程

随着移动互联网的快速发展,微信小程序已成为企业进行移动营销的重要工具。然而,对于许多中小企业和个人开发者来说,开发一个功能完善、用户体验良好的小程序是一项复杂的任务。罗峰给大家分享一款微信小程序万能建站源码系统。该系统采用PHPM…

小白准备蓝桥杯之旅(c/c++b组)

前言:省赛获奖比例高达百分之60,只要比一半的人努力,你就能大概率获奖。 寒假做的3件事 1.稳基础 熟练掌握基础语法部分,c比c多个stl库优势,c语言的同学需要会实现c中stl库部分 2.刷真题 大概比赛前30天,坚持每天做…

ros2 基础教程-使用ROS 2进行相机标定

ROS 2进行相机标定(Camera Calibration) 相机(摄像头)是一种非常精密的光学仪器,对外界环境的感知非常敏感。由于摄像头内部和外部的一些原因,摄像头采集的图像常常会发生一定的畸变。如果直接将采集到的图…

JAVA和C++ SECS/GEM300开发和概念

编译SECS示例程序 1. 示例程序使用默认路径: D:\SECS 稳定版\SECS Debug\ 2. 该操作分为俩步 ① 将C#的Secs库编译成设备相同Net版本。 如.net3.5、4.0、4.5等等 ② 编译金南瓜SECS demo程序 编译C#的SecsEquip.dll 1. 找到SecsEquip项目 项目文件 使用Visua…

电商平台spu和sku的完整设计

一、关于数据库表的设计 1、商品属性表 比如一个衣服有颜色、尺码、款式这个叫属性表 -- ------------------------ -- 商品属性表 -- ------------------------ DROP TABLE IF EXISTS attribute; CREATE TABLE attribute (id int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT CO…

LabVIEW振动数据采集与分析系统

在这个项目中, LabVIEW软件配合精确的硬件组件,以实现高效的振动数据采集和复杂信号分析。硬件方面,系统采用了PCB振动加速度传感器的高灵敏度传感器,以及NI9234型号的数据采集卡,确保了数据采集的高精度和可靠性。软件…

yarn包管理器在添加、更新、删除模块时,在项目中是如何体现的

技术很久不用,就变得生疏起来。对npm深受其害,决定对yarn再整理一遍。 yarn包管理器 介绍安装yarn帮助信息最常用命令 介绍 yarn官网:https://yarn.bootcss.com,学任何技术的最新知识,都可以通过其对应的网站了解。无…

(C语言)编译和链接

前言͟͟͞͞💌:对于现在的各种编译器而言许多都是好多个功能的集成,那么我们的代码到底是如何去实现的呢?难道我们的计算机可以直接读懂我们所写的代码,并运行吗?对于很多细心的小伙伴们可能会想这样的问题…

基于docker创建nginx容器

docker一键安装可以参考我这个博客:一键安装docker 1.创建基础容器 docker run -p280:280 --name nginx -d nginx创建挂载到容器的宿主机文件夹 mkdir -p /home/000nginx-ebrms-ftp/html mkdir -p /home/000nginx-ebrms-ftp/logs mkdir -p /home/000nginx-ebrms-f…

Win10 打开文件突然鼠标变成一个蓝色大圈卡住点不了也打不开文件,重启电脑也是这样

环境: Win10 专业版 加密客户端环境 问题描述: Win10 打开桌面word文件突然鼠标变成一个蓝色大圈卡住点不了也打不开文件,重启电脑也是这样,只有蓝色圈变大没有鼠标指针出现圈卡着不会动,和那些有鼠标箭头加小蓝色圈不一样 解决方案: 某网上查看的,还是要自己排查…