LLM - 大模型 ScallingLaws 的迁移学习与混合训练(PLM) 教程(3)

欢迎关注我的CSDN:https://spike.blog.csdn.net/
本文地址:https://spike.blog.csdn.net/article/details/145212097

免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。


Scaling Laws (缩放法则) 是大模型领域中,用于描述 模型性能(Loss) 与 模型规模N、数据量D、计算资源C 之间关系的经验规律,揭示在大模型中,随着模型参数数量、数据集大小和计算资源的增加,模型性能的变化模式,指导更高效地分配资源,优化模型训练过程,实现更好的性能。这些规律不仅有助于预测不同规模模型的表现,还能为模型设计和训练提供理论依据,是推动大模型发展和应用的重要理论基础。

在 PLM 的迁移学习中,预训练 CLM 迁移至 MLM,通过 迁移缩放法则(Transfer Scaling Laws),合理的分配训练资源,以达到性能最优。同时验证,混合训练(Mixing Training) CLM 与 MLM,不如从零开始训练。

系列文章:

  1. 大模型 ScallingLaws 的 C=6ND 公式推导
  2. 大模型 ScallingLaws 的 CLM 和 MLM 中不同系数
  3. 大模型 ScallingLaws 的迁移学习与混合训练

1. 从零开始与迁移学习

迁移缩放法则(Transfer Scaling Laws):预训练 MLM,迁移至 CLM,随着模型规模增大,收益递减;预训练 CLM,迁移至 MLM,随着模型规模增大,收益增加。不同 FLOPs 下 CLM 和 MLM 的损失(Loss)曲线,表明迁移策略的 有效前沿(Efficiency Frontiers),或 帕累托前沿(Pareto Frontier) 。如图:

Transfer

同时训练多个目标时,可能存促进或干扰,即 协同效应 问题,训练顺序也是关键因素,先训练 CLM 再训练 MLM,效果影响较大,反之,效果影响较小。

从零开始训练(Training from Scratch) L ( C s ) L(C_{s}) L(Cs)迁移学习(Transfer Learning) L ( C t ) L(C_{t}) L(Ct) 的 Loss 与 C 的法则:

L ( C s ) = a s × C s α s , L ( C t ) = a t × C t α t L(C_{s}) = a_{s} \times C_{s}^{\alpha_{s}},L(C_{t})=a_{t} \times C_{t}^{\alpha_{t}} L(Cs)=as×CsαsL(Ct)=at×Ctαt

计算量与 Loss 的相关参数:

Loss

例如,以 CLM 的计算量 1 × 1 0 21 1 \times 10^{21} 1×1021 为例,从头开始训练(CLM)的 Loss 与 迁移学习(MLM to CLM)的 Loss,即:

L ( C s ) = 8.251 × ( 1 × 1 0 21 ) − 0.027 = 2.2362 L ( C t ) = 7.191 × ( 1 × 1 0 21 ) − 0.024 = 2.2531 L ( C s ) = 8.251 × ( 3 × 1 0 19 ) − 0.027 = 2.4582 L ( C t ) = 7.191 × ( 3 × 1 0 19 ) − 0.024 = 2.4507 L(C_s) = 8.251 \times (1 \times 10^{21})^{-0.027} = 2.2362 \\ L(C_t) = 7.191 \times (1 \times 10^{21})^{-0.024} = 2.2531 \\ L(C_s) = 8.251 \times (3 \times 10^{19})^{-0.027} = 2.4582 \\ L(C_t) = 7.191 \times (3 \times 10^{19})^{-0.024} = 2.4507 L(Cs)=8.251×(1×1021)0.027=2.2362L(Ct)=7.191×(1×1021)0.024=2.2531L(Cs)=8.251×(3×1019)0.027=2.4582L(Ct)=7.191×(3×1019)0.024=2.4507

例如,以 MLM 的计算量 1 × 1 0 21 1 \times 10^{21} 1×1021 为例,从头开始训练(MLM)的 Loss 与 迁移学习(CLM to MLM)的 Loss,即:

L ( C s ) = 10.125 × ( 1 × 1 0 21 ) − 0.034 = 1.9561 L ( C t ) = 11.133 × ( 1 × 1 0 21 ) − 0.038 = 1.7726 L(C_s) = 10.125 \times (1 \times 10^{21})^{-0.034} = 1.9561 \\ L(C_t) = 11.133 \times (1 \times 10^{21})^{-0.038} = 1.7726 L(Cs)=10.125×(1×1021)0.034=1.9561L(Ct)=11.133×(1×1021)0.038=1.7726

因此,推导出 MLM 从零开始训练 C s C_{s} Cs 与 从 CLM 迁移学习 C t C_{t} Ct 的达到最优 Loss 所需计算量的比例:

C t ∝ C s α s α t = C s − 0.034 − 0.038 = C s 0.894 C_{t} \propto C_{s}^{\frac{\alpha_{s}}{\alpha_{t}}} = C_{s}^{\frac{-0.034}{-0.038}} = C_{s}^{0.894} \\ CtCsαtαs=Cs0.0380.034=Cs0.894

因此,最优的迁移学习策略:先使用 CLM 预训练,然后再训练 MLM。同时,CLM 与 MLM 的 混合训练(Mixing Training) 或改变训练顺序(即先 MLM 后 CLM),都没有带来显著的益处。推测原因是, MLM 仅专注于恢复 被损坏(Mask) 的标记,不具有因果性,如果 MLM 以从左到右的方式,根据上文预测序列中间的片段,才可能加快训练速度。

关于 CLM 与 MLM 的 混合训练(Mixing Training) 目标的验证 Loss,在全部模型规模中,从零开始训练都比混合训练的验证损失更低,表明,混合训练不如针对每个单独目标的专门训练有效。参考:

Mix

2. CLM 迁移至 MLM 的 Tokens 比例

左侧:为 CLM 预训练分配的 % 计算量的有效困惑度,即,% 计算资源表示在 CLM 预训练,剩余计算资源在 MLM 微调。最优的 CLM 预训练 % 计算资源范围为 [ 10 , 20 ] [10,20] [10,20],拟合的 D t D t + D f \frac{D_{t}}{D_{t}+D_{f}} Dt+DfDt 在最优损失范围内下降。

右侧:从零开始训练的模型(红色)从预训练 CLM 微调的模型(绿色) 的验证 困惑度(PPL) 比较,表明从 CLM 微调在更少 Tokens 数量下,降低困惑度。

Transfer

以模型规模 N = 85 M N=85M N=85M 为例,通过之前的公式,合理计算模型的计算量 C = 3 × 1 0 19 C=3 \times 10^{19} C=3×1019,即:

C C L M ( N ) = ( N 1.26 ∗ 1 0 − 3 ) 1 0.578 C C L M ( 85 × 102 4 2 ) = ( 85 × 102 4 2 1.26 × 1 0 − 3 ) 1 0.578 = 0.6 × 1 0 19 C M L M ( N ) = ( N 6.19 × 1 0 − 8 ) 1 0.776 C M L M ( 85 × 102 4 2 ) = ( 85 × 102 4 2 6.19 × 1 0 − 8 ) 1 0.776 = 3.4 × 1 0 19 \begin{align} C_{CLM}(N) &= (\frac{N}{1.26*10^{-3}})^\frac{1}{0.578} \\ C_{CLM}(85 \times 1024^{2}) &= (\frac{85 \times 1024^{2}}{1.26 \times 10^{-3}})^{\frac{1}{0.578}} \\ &= 0.6 \times 10^{19} \\ C_{MLM}(N) &= (\frac{N}{6.19 \times 10^{-8}})^{\frac{1}{0.776}} \\ C_{MLM}(85 \times 1024^{2}) &= (\frac{85 \times 1024^{2}}{6.19 \times 10^{-8}})^{\frac{1}{0.776}} \\ &= 3.4 \times 10^{19} \end{align} CCLM(N)CCLM(85×10242)CMLM(N)CMLM(85×10242)=(1.26103N)0.5781=(1.26×10385×10242)0.5781=0.6×1019=(6.19×108N)0.7761=(6.19×10885×10242)0.7761=3.4×1019

合理数据量 D = 63.58 × 1 0 9 D=63.58 \times 10^{9} D=63.58×109 是:

D = C 6 N = 3.4 × 1 0 19 6 × 85 × 102 4 2 = 63.58 × 1 0 9 = 60 B \begin{align} D = \frac{C}{6N} = \frac{3.4 \times 10^{19}}{6 \times 85 \times 1024^{2}} = 63.58 \times 10^{9} = 60B \end{align} D=6NC=6×85×102423.4×1019=63.58×109=60B

其中, D t D_{t} Dt 表示 CLM 预训练的 Tokens 数量, D f D_{f} Df 表示 MLM 微调的 Tokens 数量,全部数据量即 D t + D f D_{t}+D_{f} Dt+Df

有效转移标记(Effectively Transferred Tokens, ETT) D t D_{t} Dt 是模型规模相同,在 MLM 上从零开始训练,以达到与在 CLM 上预训练的模型,相同损失所需的额外数据。如果预训练的 CLM 模型中的标记数量超过 D t D_{t} Dt ,那么 CLM 预训练的计算就是多余的。如果能提前知道 D t D_{t} Dt ,可以指导 CLM 预训练的标记分配。

迁移缩放法则(Transfer Scaling Laws),以模型规模 N = 85 M N=85M N=85M ,微调数据 D f = 48 B D_{f}=48B Df=48B 为例,计算预训练 D t = 8.57 B D_{t}=8.57B Dt=8.57B占比约 14.28%,属于 [10, 20] 之间,符合法则:

D t = k × 1 D f α × 1 N β = 3.65 × 1 0 5 × 1 D f − 0.137 × 1 N − 0.369 D t = 3.65 × 1 0 5 × 1 ( 48 × 102 4 3 ) − 0.137 × 1 ( 85 × 102 4 2 ) − 0.369 = 9.2 × 1 0 9 ≈ 8.57 B < 12 B \begin{align} D_{t} &= k \times \frac{1}{D_{f}^{\alpha}} \times \frac{1}{N^{\beta}} \\ &= 3.65 \times 10^5 \times \frac{1}{D_{f}^{-0.137}} \times \frac{1}{N^{-0.369}} \\ D_{t} &= 3.65 \times 10^5 \times \frac{1}{(48 \times 1024^3)^{-0.137}} \times \frac{1}{(85 \times 1024^2)^{-0.369}} \\ &= 9.2 \times 10^9 \approx 8.57B < 12B \end{align} DtDt=k×Dfα1×Nβ1=3.65×105×Df0.1371×N0.3691=3.65×105×(48×10243)0.1371×(85×10242)0.3691=9.2×1098.57B<12B

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

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

相关文章

解决leetcode第3418题机器人可以获得的最大金币数

3418.机器人可以获得的最大金币数 难度&#xff1a;中等 问题描述&#xff1a; 给你一个mxn的网格。一个机器人从网格的左上角(0,0)出发&#xff0c;目标是到达网格的右下角(m-1,n-1)。在任意时刻&#xff0c;机器人只能向右或向下移动。 网格中的每个单元格包含一个值coin…

蓝桥杯 Python 组知识点容斥原理

容斥原理 这张图初中或者高中数学课应该画过 也就是通过这个简单的例子引出容斥原理的公式 这张图的面积&#xff1a;s1 s3 s7 - 2 * s2 - 2 * s4 - 2 * s6 3 * s5 通过此引导出容斥原理公式 那么下面来一起看看题目 题目描述 给定 n,m 请求出所有 n 位十进制整数中有多…

GitLab:添加SSH密钥之前,您不能通过SSH来拉取或推送项目代码

1、查看服务器是否配置过 [rootkingbal-ecs-7612 ~]# cd .ssh/ [rootkingbal-ecs-7612 .ssh]# ls authorized_keys id_ed25519 id_ed25519.pub id_rsa id_rsa.pub2、创建密钥 $ ssh-keygen -t rsa -C kingbalkingbal.com # -C 后写你的邮箱 一路回车 3、复制密钥 [rootk…

day10_Structured Steaming

文章目录 Structured Steaming一、结构化流介绍&#xff08;了解&#xff09;1、有界和无界数据2、基本介绍3、使用三大步骤(掌握)4.回顾sparkSQL的词频统计案例 二、结构化流的编程模型&#xff08;掌握&#xff09;1、数据结构2、读取数据源2.1 File Source2.2 Socket Source…

【设计模式】 单例模式(单例模式哪几种实现,如何保证线程安全,反射破坏单例模式)

单例模式 作用&#xff1a;单例模式的核心是保证一个类只有一个实例&#xff0c;并且提供一个访问实例的全局访问点。 实现方式优缺点饿汉式线程安全&#xff0c;调用效率高 &#xff0c;但是不能延迟加载懒汉式线程安全&#xff0c;调用效率不高&#xff0c;能延迟加载双重检…

无公网IP 实现外网访问本地 Docker 部署 Navidrome

Navidrome 是一款可以在 macOS、Linux、Windows以及 Docker 等平台上运行的跨平台开源音乐服务器应用&#xff0c;它支持传输常见的 MP3、FLAC、WAV等音频格式。允许用户通过 Web 界面或 API 进行音乐库的管理和访问。本文就介绍如何快速在 Linux 系统使用 Docker 进行本地部署…

解决conda create速度过慢的问题

问题 构建了docker容器 想在容器中创建conda环境&#xff0c;但是conda create的时候速度一直很慢 解决办法 宿主机安装的是anaconda 能正常conda create,容器里安装的是miniforge conda create的时候速度一直很慢&#xff0c;因为容器和宿主机共享网络了&#xff0c;宿主机…

【Hive】新增字段(column)后,旧分区无法更新数据问题

TOC 【一】问题描述 Hive修改数据表结构的需求&#xff0c;比如&#xff1a;增加一个新字段。 如果使用如下语句新增列&#xff0c;可以成功添加列col1。但如果数据表tb已经有旧的分区&#xff08;例如&#xff1a;dt20190101&#xff09;&#xff0c;则该旧分区中的col1将为…

【Python】Selenium根据网页页面长度,模拟向下滚动鼠标,直到网页底部的操作

最近在弄selenium的爬取的过程中&#xff0c;我发现一些网站上的表格&#xff0c;是需要手动拉到底部才能加载完成的。 如果没有拉到底部&#xff0c;那么在获取网页表格的时候&#xff0c;表格就会只有显示的一部分&#xff0c;页面就不完整。 所以我就整理了一些模拟滚动鼠…

openharmony电源管理子系统

电源管理子系统 简介目录使用说明相关仓 简介 电源管理子系统提供如下功能&#xff1a; 重启服务&#xff1a;系统重启和下电。系统电源管理服务&#xff1a;系统电源状态管理和休眠运行锁管理。显示相关的能耗调节&#xff1a;包括根据环境光调节背光亮度&#xff0c;和根…

麒麟操作系统服务架构保姆级教程(十一)https配置

如果你想拥有你从未拥有过的东西&#xff0c;那么你必须去做你从未做过的事情 在运维工作中&#xff0c;加密和安全的作用是十分重要的&#xff0c;如果仅仅用http协议来对外展示我们的网站&#xff0c;过一段时间就会发现网站首页被人奇奇怪怪的篡改了&#xff0c;本来好好的博…

RabbitMQ---消息确认和持久化

&#xff08;一&#xff09;消息确认 1.概念 生产者发送消息后&#xff0c;到达消费端会有以下情况&#xff1a; 1.消息处理成功 2.消息处理异常 如果RabbitMQ把消息发送给消费者后就把消息删除&#xff0c;那么就可能会导致&#xff0c;消息处理异常想要再获取这条消息的时…

Linux:System V - 共享内存

1.System V共享内存的原理 通过为用户提供系统调用接口&#xff0c;让用户可以申请一块空间&#xff0c;进程A/B也可以通过系统调用接口将创建好的内存通过页表映射进进程的地址空间。完成让不同的两个进程看见同一份资源的目的。如果未来不想继续通信&#xff0c;取消进程和内…

SpringBoot错误码国际化

先看测试效果&#xff1a; 1. 设置中文 2.设置英文 文件结构 1.中文和英文的错误消息配置 package com.ldj.mybatisflex.common;import lombok.Getter;/*** User: ldj* Date: 2025/1/12* Time: 17:50* Description: 异常消息枚举*/ Getter public enum ExceptionEnum {//…

道旅科技借助云消息队列 Kafka 版加速旅游大数据创新发展

作者&#xff1a;寒空、横槊、娜米、公仪 道旅科技&#xff1a;科技驱动&#xff0c;引领全球旅游分销服务 道旅科技 &#xff08;https://www.didatravel.com/home&#xff09; 成立于 2012 年&#xff0c;总部位于中国深圳&#xff0c;是一家以科技驱动的全球酒店资源批发商…

Solidity01 Solidity极简入门

一、Solidity 简介 Solidity 是一种用于编写以太坊虚拟机&#xff08;EVM&#xff09;智能合约的编程语言。我认为掌握 Solidity 是参与链上项目的必备技能&#xff1a;区块链项目大部分是开源的&#xff0c;如果你能读懂代码&#xff0c;就可以规避很多亏钱项目。 Solidity …

如何使用WPS的JS宏实现Word表格的自动编号

如何使用WPS的JS宏实现Word表格的自动编号&#xff1f;如下图&#xff0c;想要给表格的编号列中添加序号。 使用WPS的JS宏可以实现自动编号&#xff0c;代码如下&#xff1a; n Selection.Tables.Item(1).Rows.Count;for(i 2;i<n;i){Selection.Tables.Item(1).Cell(i,1).…

Python在多个Excel文件中找出缺失数据行数多的文件

本文介绍基于Python语言&#xff0c;针对一个文件夹下大量的Excel表格文件&#xff0c;基于其中每一个文件内、某一列数据的特征&#xff0c;对其加以筛选&#xff0c;并将符合要求与不符合要求的文件分别复制到另外两个新的文件夹中的方法。 首先&#xff0c;我们来明确一下本…

【Linux】应用层自定义协议与序列化

&#x1f308; 个人主页&#xff1a;Zfox_ &#x1f525; 系列专栏&#xff1a;Linux 目录 一&#xff1a;&#x1f525; 应用层 &#x1f98b; 再谈 "协议"&#x1f98b; 网络版计算器&#x1f98b; 序列化 和 反序列化 二&#xff1a;&#x1f525; 重新理解 read、…

数字化贷款管理:助贷系统软件为贷款中介带来的五大改变

随着金融行业的数字化转型&#xff0c;贷款中介的业务模式也在不断创新。助贷系统作为数字化管理的核心工具&#xff0c;正在为贷款中介带来深刻的变革。本文将从五个方面探讨助贷系统软件如何改变贷款中介行业的管理模式&#xff0c;提升业务效率&#xff0c;降低运营成本。乐…