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.mzph.cn/news/630084.shtml

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

相关文章

探索Python数据结构与算法:解锁编程的无限可能

文章目录 一、引言1.1 数据结构与算法对于编程的重要性1.2 Python作为实现数据结构与算法的强大工具 二、列表和元组2.1 列表:创建列表、索引、切片和常用操作2.2 元组:不可变序列的特性和使用场景 三、字符串操作和正则表达式3.1 字符串的常见操作和方法…

windows编译TensorFlowServing

概述 整个编译打包过程的总体思路,是参照在linux下的编译流程,配置环境,执行编译命令,根据编译器/链接器反馈的错误,修改相应的源码或者相关库文件的存放路径,编译出windows平台下静态库和二进制执行文件。…

BuildRoot配置RTL8822CE WIFIBT模块(WIFI部分)

TinkerBoard2主板自带的无线模块为RTL8822CE,PCIe接口 之前在风火轮下载的Linux源码编译出来的BuildRoot根文件系统没有相关的驱动文件 [rootrk3399:/]# find . -name *.ko [rootrk3399:/]# lsmod Module Size Used by Not tainted [rootrk33…

Dicom Tag: Image Position,Image Orientation和Patient Position

文章目录 Image Position,Image Orientation和Patient PositionImage Position (0020,0032):Image Orientation (0020,0037):Patient Position(0018,5100): Image Position,Image Orientation和Patient Position 在DICOM图像中,I…

栈(顺序存储、链式存储)

栈的定义 栈(Stack)是只允许在一端进行插入或删除操作的线性表 栈的操作特性是后进先出LIFO(Last In First Out) 顺序存储 链式存储

三款非常实用的图片转换格式工具

BMP是一种常见的位图图像格式,而JPG则是互联网上广泛使用的图像格式。有时,为了满足特定的需求或更好的兼容性,我们需要将BMP格式转换为JPG格式。今天,我们将为您推荐三款实用的软件,帮助您轻松完成这一转换。 水印云…

QT 原生布局和QML的区别

一、QML 与 Qt Quick的区别 1.1 从概念上区分 为了更精确地对两者进行说明,先看助手对 QML 的描述: QML is a user interface specification and programming language. QML 是一种用户界面规范和标记语言,允许开发人员和设计师创建高性能、流…

端智能在大众点评搜索重排序的应用实践

1 引言 随着大数据、人工智能等信息技术的快速发展,云计算已经无法满足特定场景对数据隐私、高实时性的要求。借鉴边缘计算的思想,在终端部署 AI 能力逐渐步入大众的视野,“端智能”的概念应运而生。相比于传统的云计算,在智能手…

【Maven】008-Maven 私服搭建与使用

【Maven】008-Maven 私服搭建与使用 文章目录 【Maven】008-Maven 私服搭建与使用一、概述1、简介2、建立私服后依赖查找和下载逻辑第一步:请求本地仓库第二步:请求 Maven 私服第三步:请求外部远程仓库(远程中央仓库等&#xff09…

动态路由协议

一、动态路由协议 动态路由协议,用在多个 Router 之间定期的、自动的、互相交换 Routes(路由信息,包含了网段信息、可达性信息、路径信息等),动态生成 Routing Table Entries,并最终达到全网的路由收敛&am…

近4w字吐血整理!只要你认真看完【C++编程核心知识】分分钟吊打面试官(包含:内存、函数、引用、类与对象、文件操作)

🌈个人主页:godspeed_lucip 🔥 系列专栏:C从基础到进阶 🏆🏆关注博主,随时获取更多关于C的优质内容!🏆🏆 C核心编程🌏1 内存分区模型&#x1f384…

力扣hot100 颜色分类 双指针 滚动赋值

Problem: 75. 颜色分类 文章目录 思路解题方法复杂度Code💖 超简洁版 思路 解题方法 描述你的解题方法 复杂度 时间复杂度: O ( n ) O(n) O(n) 空间复杂度: O ( 1 ) O(1) O(1) Code class Solution { public void sortColors(int[] nums){int n nums.length…

Relation-Aware Graph Transformer for SQL-to-Text Generation

Relation-Aware Graph Transformer for SQL-to-Text Generation Abstract SQL2Text 是一项将 SQL 查询映射到相应的自然语言问题的任务。之前的工作将 SQL 表示为稀疏图,并利用 graph-to-sequence 模型来生成问题,其中每个节点只能与 k 跳节点通信。由…

Qt超简单实现贪吃蛇

文章目录 常量Snake类GameController类GUI显示游戏简图 为了能够最简单地完成程序,所以没有用类的继承等知识。感兴趣的朋友可以改写一下。 常量 const int FILE_SIZE 30; //地图方格大小 const int FPS 5000 / 33; //游戏运行帧率 enum Item{empty, wall, food…

Netty通信中的粘包半包问题(三)

之前我们介绍了用特殊分隔符来分割每个报文,但是如果传输的数据中恰好有个特殊分隔符,它将会被拆分成多个,于是,为了进一步避免这个问题,还有一种解决方案是在两端的channelPipeline中用一个固定长度来区分&#xff0c…

K8s(一)Pod资源——Pod介绍、创建Pod、Pod简单资源配额

目录 Pod概述 pod网络 pod存储 pod和容器对比 创建pod的方式 pod运行方式分类 Pod的创建 Pod的创建过程 通过kubectl run来创建pod 通过yaml文件创建,yaml文件简单写法 Pod简单操作 Pod的标签labels Pod的资源配额resource 测试 Pod概述 Kubernetes …

贪心算法-活动安排-最详细注释解析

贪心算法-活动安排-最详细注释解析 题目: 学校在最近几天有n个活动,这些活动都需要使用学校的大礼堂,在同一时间,礼堂只能被一个活动使用。由于有些活动时间上有冲突,学校办公室人员只好让一些活动放弃使用礼堂而使用…

Arm Generic Interrupt Controller v3 and v4(GICv3v4)学习(一)

提示 该博客主要为个人学习,通过阅读官网手册整理而来(个人觉得阅读官网的英文文档非常有助于理解各个IP特性)。若有不对之处请参考参考文档,以官网参考文档为准。 Arm Generic Interrupt Controller v3 and v4学习一共分为三章&…

Revealing the Dark Secrets of MIM

论文名称: Revealing the Dark Secrets of Masked Image Modeling 发表时间:CVPR2022 作者及组织:Zhenda Xie, Zigang Geng, Hu Han等,来自清华,中科院,微软亚洲研究院。 前言 本文尝试探讨MIM为何有效的原…

JavaScript 学习笔记(Day5)

「写在前面」 本文为 b 站黑马程序员 pink 老师 JavaScript 教程的学习笔记。本着自己学习、分享他人的态度,分享学习笔记,希望能对大家有所帮助。推荐先按顺序阅读往期内容: 1. JavaScript 学习笔记(Day1) 2. JavaSc…