LLM:Training Compute-Optimal Large Language Models

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

发表:2022

前文回顾:

OpenAI在2020年提出《Scaling Laws for Neural Language Models》:Scaling Laws(缩放法则)也一直影响了后续大模型的训练。其给出的结论是最佳计算效率训练涉及在相对适中的数据量上训练非常大的模型并在收敛之前early stopping所以后续的工作都专注于提升参数规模,设计越来越大的模型,而不是在更多的数据上训练较小的模型。每个人都认为模型大小比数据大小重要的多得多!但DeepMind在2022年提出了不同的看法。

摘要

1:目前的LLM大模型训练都不够充分,原因是:大部分精力主要花费在扩大模型尺寸上,训练数据却没有同步增长。这个主要是受OpenAI论文观点的影响) 

2:DeepMind团队发现:最优的训练是模型尺寸和训练的Token数量应该是等比例增长。如果模型尺寸翻倍,token数量也应该翻倍。

简介

DeepMind得到了与OpenAI相同的结论:大模型在训练到loss最低前已经到算力最优了,即在收敛前进行early stopping。尽管得出了同样的结论,但DeepMind认为:大型模型应训练更多的token,远超过OPenAI作者推荐的数量。具体来说,给定计算预算增加10倍,OpenAI建议模型大小应增加5.5倍,而训练token数量只应增加1.8倍。相反,DeepMind认为模型大小和训练令牌数量应该以相同的比例增长。

相关工作

OpenAI首先观测到了scale law法则,DeepMind也采用了相同的技术手段:训练不同尺寸的模型,然后进行观测。但他们存在以下不同点。

1:OpenAI固定了训练的token数目以及学习率方案,这阻止了他们研究这些超参数对损失的影响。相反,DeepMind发现将学习率调度设置为大约匹配训练token数量可以导致最好的最终损失,无论模型大小如何作者举例:130B token,使用cosine学习率。因为会在收敛前进行早停,所以观测到的都是中间状态(即训练token数量还没有到130B token 时候的loss),使用这些中间损失观测,导致对训练模型在小于130B token的数据上的有效性的低估,并最终导致了一个结论,即模型大小应比训练数据大小增长得更快。DeepMind的观点是同比例缩放

2:OpenAI使用的模型参数量比较小,DeepMind观测的范围更广。

3 估计最优的参数 / 训练token数目

首先训练一系列模型:模型大小和训练数据数量两方面都有所不同,然后使用所得到的训练曲线来拟合他们应该满足的经验规律。

训练70M到10B的一系列模型大小,每个模型大小针对四个不同的余弦周期长度进行训练。从这些曲线中,提取了每FLOP最小损失的包络,并用这些点来估计给定计算量条件下最优模型大小以及最优训练token数。(此处的scale law 实践与OpenAI一致)。从上图不难看出:模型越大,需要的算力越大,需要的token也越多。

左图可以看到计算量与模型性能呈现幂律关系(可以认为数据和模型都不受限制),根据中图和右图,可以发现N_{opt}\propto C^{a }D_{opt}\propto C^{b },即计算效率最优时,模型的参数与计算量的幂次成线性关系,数据量的大小也与计算量的幂次成线性关系

根据C=6ND,可以推算出a+b=1,但是a,b分别是多少存在分歧。

OpenAI:认为模型规模更重要,即a=0.73, b=0.27,

DeepMind在Chinchilla工作和Google在PaLM工作中都验证了 a=b=0.5 ,即模型和数据同等重要。

所以假定计算量整体放大10倍,OpenAI认为模型参数更重要,模型应放大10^{0.73} (5.32)倍,数据放大 10^{0.27} (1.86)倍;后来DeepMind和Google认为模型参数量与数据同等重要,两者都应该分别放大 10^{0.5} (3.16)倍。

3.1 方案1:固定模型,训练不同的token数目

通过方案1,得到N、D与C的幂次关系:模型尺寸和数据量同等重要,缩放比例相同,均为0.5。 

3.2 方案2:固定FLOP

 

选取9种不同的计算量:e18−e21 ,观测不同参数量模型的训练情况:

在每条曲线的最小值的左侧,模型太小——在较少数据上训练的较大模型将是一种改进。

在每条曲线的最小值的右侧,模型太大——在更多数据上训练的较小模型将是一种改进。

最好的模型处于最小值。

 这个是DeepMind推荐的模型参数N、训练数据D、训练算力C的配比。可以发现和OpenAI的推荐是不一样的。也与BaiChuan2中7B/13B训练需要2.6T的数据量对不上。

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

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

相关文章

【1】SM4 CBC-MAC 机制

0x01 题目 MSG1: e55e3e24a3ae7797808fdca05a16ac15eb5fa2e6185c23a814a35ba32b4637c2 MAC1: 0712c867aa6ec7c1bb2b66312367b2c8 ----------------------------------------------------- MSG2: d8d94f33797e1f41cab9217793b2d0f02b93d46c2ead104dce4bfec453767719 MAC2: 4366…

性能压力测试:企业成功的关键要素

性能压力测试在现代企业软件开发中扮演着至关重要的角色,它不仅仅是一项技术手段,更是保障企业成功的关键要素。本文将探讨性能压力测试在企业中的重要性,并阐述其对业务稳定性、用户体验和品牌声誉的影响。 一、保障业务稳定性 1、应对高负载…

Docker 仓库管理

Docker 仓库管理 仓库(Repository)是集中存放镜像的地方。以下介绍一下 Docker Hub。当然不止 docker hub,只是远程的服务商不一样,操作都是一样的。 Docker Hub 目前 Docker 官方维护了一个公共仓库 Docker Hub。 大部分需求…

Python使用pyechart分析疫情确诊人数图(2024)

import json from pyecharts.charts import Map from pyecharts import options as opts# 首先打开文件获取数据 f open("/Desktop/python/Project/数据可视化/疫情.txt", "r", encoding"UTF-8") data f.read()# 字符串转化成json数据 data_js…

16k+ start 一个开源的的监控系统部署教程

安装条件 Linux或macOS系统 4GB内存 开放 33014、33174、3183端口 1.安装 1、下载源码 首先使用 git 克隆源码到本地 git clone -b main https://github.com/SigNoz/signoz.git && cd signoz/deploy/ 方式1:运行 install.sh 脚本一键安装 ./install.s…

Unity之四元数

欧拉角 万向节死锁 四元数是什么 Unity中四元数的初始化 四元数和欧拉角的互相转换 补充 四元数相乘代表旋转四元数

数学建模.图论最短路径问题

一、概念(本文是对清风网课的总结) 推荐作图网站 有(无)向图的权重邻接矩阵 二、戴克斯特拉算法 缺点: 负权回路: 使用matlab计算最短路径 其他的一些操作 再次强调:本文是作者学习清风网课后的…

HBase学习二:RegionServer详解

1、内部结构 RegionServer是HBase系统中最核心的组件,主要负责用户数据写入、读取等基础操作。RegionServer组件实际上是一个综合体系,包含多个各司其职的核心模块:HLog、MemStore、HFile以及BlockCache。 一个RegionServer由一个(或多个)HLog、一个BlockCache以及多个R…

vue 指定区域可拖拽的限定拖拽区域的div(如仅弹窗标题可拖拽的弹窗)

<template><div class"container" ref"container"><div class"drag-box" v-drag><div class"win_head">弹窗标题</div><div class"win_content">弹窗内容</div></div><…

ECTouch 电商微信小程序 SQL注入漏洞复现(CVE-2023-39560)

0x01 产品简介 ECTouch是一款开源的电商系统,为中小企业提供最佳的新零售解决方案 0x02 漏洞概述 ECTouch 电商系统 /ectouch-main/include/apps/default/helpers/insert.php 文件中第285行的 insert_bought_notes 函数中,传入的 $arr[id] 参数未进行验证和过滤,导致未经…

SSE[Server-Sent Events]实现页面流式数据输出(模拟ChatGPT流式输出)

文章目录 前言SSE 简介应用场景区分浏览器支撑性 实现过程Web VUE核心解析数据代码实例demo参考 前言 服务端向客户端推送消息&#xff0c;除了用WebSocket可实现&#xff0c;还有一种服务器发送事件(Server-Sent Events)简称 SSE&#xff0c;这是一种服务器端到客户端(浏览器)…

C# wpf 获取控件刷新的时机

文章目录 前言一、为何要获取刷新时机&#xff1f;例子一、隐藏控件后截屏例子二、修改控件大小后做计算 二、如何实现&#xff1f;1.使用动画2.使用TaskCompletionSource 三、完整代码四、使用示例1、隐藏工具条截屏2、修改宽高后获取ActualWidth、ActualHeight 总结 前言 做…

springboot整合websocket后启动报错:javax.websocket.server.ServerContainer not available

一、场景 Springboot使用ServerEndpoint来建立websocket链接。引入依赖。 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency>配置Websocket Confi…

Python项目——搞怪小程序

1、介绍 使用python编写一个小程序&#xff0c;回答你是猪吗。 点击“是”提交&#xff0c;弹窗并退出。 点击“不是”提交&#xff0c;等待5秒&#xff0c;重新选择。 并且隐藏了关闭按钮。 2、实现 新建一个项目。 2.1、设计UI 使用Qt designer设计一个UI界面&#xff0c…

【已解决】c语言const/指针学习笔记

本博文源于笔者正在复习const在左与在右&#xff0c;指针优先级、a,&a,*a的区别。 1、const在左与在右 int const *p const int *p int * const p int const * const p const int * const p* 在const右边&#xff0c;指向的数据不可以改变&#xff0c;可以改变地址 * 在c…

Leetcoder Day9|栈与队列part01

语言&#xff1a;Java/C 目录 理论基础 C 栈 队列 Java 栈 队列 ​编辑 232.用栈实现队列 225. 用队列实现栈 Queue Deque 今日心得 理论基础 又是考研时数据结构里接触到的老朋友&#xff0c;栈是先进后出&#xff0c;队列是先进先出。 C 现在刷题除了思路还…

【文本到上下文 #5】:RNN、LSTM 和 GRU

一、说明 欢迎来到“完整的 NLP 指南&#xff1a;文本到上下文 #5”&#xff0c;这是我们对自然语言处理 &#xff08;NLP&#xff09; 和深度学习的持续探索。从NLP的基础知识到机器学习应用程序&#xff0c;我们现在深入研究了神经网络的复杂世界及其处理语言的深刻能力。 在…

ValueError: Unable to read workbook: could not read strings from data.xlsx解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

路由器结构

路由器是连接互联网的设备&#xff0c;本文主要描述路由器的结构组成。 如上所示&#xff0c;OSI&#xff08;Open System Interconnect&#xff09;开放系统互联参考模型是互联网架构的标准协议栈&#xff0c;由ISO标准组织制定。自底向上&#xff0c;互联网架构分为7层&#…

Sentinel 轨道数据及下载

Sentinel卫星轨道文件在处理Sentinel卫星数据时发挥着关键作用。这些轨道文件包含了有关卫星在轨道上的运动、位置、姿态等信息&#xff0c;对于地理校正、成像几何校正以及多时相分析等方面具有重要作用。以下是Sentinel卫星轨道文件的主要作用&#xff1a; 地理校正&#xff…