当前位置: 首页 > news >正文

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

相关文章:

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

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/145212097 免责声明&#xff1a;本文来源于个人知识与公开资料&#xff0c;仅用于学术交流&#xff0c;欢迎讨论&#xff0c;不支持转载。 Scalin…...

【软件开发过程管理规范】需求管理,需求分析,设计开发管理,测试管理(Word)

一、需求管理规程 1 简介 2 过程总体描述 2.1 过程概述 2.2 过程流程图 3 过程元素描述 3.1 准备阶段 3.2 需求调研 3.3 需求分析 软件开发人员及用户往往容易忽略信息沟通&#xff0c;这导致软件开发出来后不能很好地满足用户的需要&#xff0c;从而造成返工。而返工不仅在技术…...

计算机网络 (49)网络安全问题概述

前言 计算机网络安全问题是一个复杂且多维的领域&#xff0c;它涉及到网络系统的硬件、软件以及数据的安全保护&#xff0c;确保这些元素不因偶然的或恶意的原因而遭到破坏、更改或泄露。 一、计算机网络安全的定义 计算机网络安全是指利用网络管理控制和技术措施&#xff0c;保…...

RPA编程实践:Electron实践开始

文章目录 前言闲话少叙&#xff0c;打开官网版本发布安装在 Windows 上安装在 macOS 上安装在 Linux (Ubuntu) 上安装 前言 上回说道&#xff0c;我们electron适合于熟悉web开发&#xff0c;但想要研发桌面应用的人。 但我觉得这个需求应该不是很多。 因为使用electron&#…...

ORB-SLAM2源码学习:MapPoint.cc④: 新增地图点总结

前言 让我们来总结ORB-SLAM2 中的新增地图点。 1.在第一阶段跟踪中的恒速模型跟踪中新增地图点 针对双目相机或RGB-D相机&#xff0c;找出上一帧中具有有效深度值且不是地图点的特征点&#xff0c;将其中较近的点作为上一帧新的临时地图点&#xff0c; 并记录在向扯mlpTempo…...

2025西湖论剑-babytrace

前言 就做了下题目&#xff0c;pwn1/3 都是签到&#xff0c;pwn2 后面绕 ptrace 有点意思&#xff0c;简单记录一下 漏洞分析 子进程中的读/写功能没有检查负数的情况&#xff0c;存在越界读写&#xff1a; void __fastcall get_value(__int64 *int64_arr) {__int64 ll; //…...

绘图专用,26个常见流程图符号及其解释

关注作者 当您设计网站、构建应用程序或绘制业务系统时&#xff0c;您需要一种方法来清晰地绘制步骤和用户流程。虽然您可以使用流程图来概述这些过程&#xff0c;但箭头和方框只能帮助您到目前为止。为了清楚地表达您的意思&#xff0c;您需要流程图符号。 为了帮助解释每个流…...

【个人学习记录】软件开发生命周期(SDLC)是什么?

软件开发生命周期&#xff08;Software Development Life Cycle&#xff0c;SDLC&#xff09;是一个用于规划、创建、测试和部署信息系统的结构化过程。它包含以下主要阶段&#xff1a; 需求分析&#xff08;Requirements Analysis&#xff09; 收集并分析用户需求定义系统目标…...

自学SpringBoot笔记

概念 什么是SpringBoot&#xff1f; Spring Boot 是基于 Spring Framework 的一款开源框架&#xff0c;主要用于简化 Spring 应用程序的开发。它通过提供一系列的 开箱即用的功能 和 自动配置&#xff0c;让开发者可以快速构建生产级别的独立应用程序&#xff0c;而无需手动配…...

03JavaWeb——Ajax-Vue-Element(项目实战)

1 Ajax 1.1 Ajax介绍 1.1.1 Ajax概述 我们前端页面中的数据&#xff0c;如下图所示的表格中的学生信息&#xff0c;应该来自于后台&#xff0c;那么我们的后台和前端是互不影响的2个程序&#xff0c;那么我们前端应该如何从后台获取数据呢&#xff1f;因为是2个程序&#xf…...

[leetcode](找到vector中的特定元素并删除)无重复字符的最长子串

一.找到vector中的特定元素并删除 #include <iostream> #include <vector> #include <algorithm> int main() { // 示例 vector std::vector<int> vec {1, 2, 3, 4, 5, 6}; // 要删除的元素 int aim 3; // 查找元素 auto it std::fin…...

Mockito+PowerMock+Junit单元测试

一、单元测试用途 1、日常开发团队要求规范&#xff0c;需要对开发需求代码进行单元测试并要求行覆盖率达到要求&#xff0c;DevOps流水线也会开设相关门禁阀值阻断代码提交&#xff0c;一般新增代码行覆盖率80%左右。 二、Mock测试介绍 1、Mock是为了解决不同的单元之间由于…...

Ncat: bind to :::7777: Address already in use报错问题解决

问题描述 Ncat: bind to :::7777: Address already in use. QUITTING. 具体解决方法 If you are in linux environment try, Use netstat -tulpn to display the processeskill -9 <pid> This will terminate the process If you are using windows, Use netstat -…...

Docker 搭建mysql 连接超时问题,xxl-job启动mysql连接报错,禁用dns

1.本地连接Navicat报错信息&#xff0c;猜测是navicat默认连接超时导致的&#xff0c;后面换成idea一个插件虽然慢但连接上了 2013 - Lost connection to MySQL server at reading initial communication packet 2.启动xxl-job会报错&#xff0c;网上有人mysql驱动与数据库不匹…...

在线图片像素颜色拾取工具

在线图片像素颜色拾取工具&#xff0c;非常方便的一个工具&#xff0c;无需登录&#xff0c;用完就走。 包括中文和英文版本。 https://getcolor.openai2025.com...

Qt之登录界面(splash)

在上一篇多文档窗口设计(MDI)的基础上增加了一个登录界面&#xff08;splash&#xff09;. 该模块可以扩展为常规的软件登录界面。 界面展示如下 如果用户名和密码输入正确&#xff0c;则调到MDI界面&#xff0c;如果用户名和密码一共输入三次以上&#xff0c;则程序强制退出…...

NotebookLM:Google 最新 AI 笔记助理解析与实战应用

NotebookLM&#xff1a;Google 最新 AI 笔记助理解析与实战应用 在 AI 驱动的生产力工具不断进化的今天&#xff0c;Google 推出的 NotebookLM&#xff08;Notebook Language Model&#xff09;成为了一款备受关注的智能笔记助理。它结合了 Google 的大语言模型&#xff08;LL…...

软路由系统iStoreOS 一键安装 docker compose

一键安装命令 大家好&#xff01;今天我来分享一个快速安装 docker-compose 的方法。以下是我常用的命令&#xff0c;当前版本是 V2.32.4。如果你需要最新版本&#xff0c;可以查看获取docker compose最新版本号 部分&#xff0c;获取最新版本号后替换命令中的版本号即可。 w…...

vue3本地文件下载

开发记录&#xff1a; vue3本地下载文件要把文件放到public下&#xff0c;如果放在src里面可能会出现这个问题...

纯代码实现给WordPress添加文章复制功能

在给wordpress添加内容时&#xff0c;有时会遇到文章复制的功能&#xff0c;但是wordpress又没有这个功能。把下面一段代码添加到functions.php文件中&#xff0c;就可以实现这个功能。 /** Function for post duplication. Dups appear as drafts. User is redirected to the…...

变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析

一、变量声明设计&#xff1a;let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性&#xff0c;这种设计体现了语言的核心哲学。以下是深度解析&#xff1a; 1.1 设计理念剖析 安全优先原则&#xff1a;默认不可变强制开发者明确声明意图 let x 5; …...

shell脚本--常见案例

1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件&#xff1a; 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...

css的定位(position)详解:相对定位 绝对定位 固定定位

在 CSS 中&#xff0c;元素的定位通过 position 属性控制&#xff0c;共有 5 种定位模式&#xff1a;static&#xff08;静态定位&#xff09;、relative&#xff08;相对定位&#xff09;、absolute&#xff08;绝对定位&#xff09;、fixed&#xff08;固定定位&#xff09;和…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南

精益数据分析&#xff08;97/126&#xff09;&#xff1a;邮件营销与用户参与度的关键指标优化指南 在数字化营销时代&#xff0c;邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天&#xff0c;我们将深入解析邮件打开率、网站可用性、页面参与时…...

基于 TAPD 进行项目管理

起因 自己写了个小工具&#xff0c;仓库用的Github。之前在用markdown进行需求管理&#xff0c;现在随着功能的增加&#xff0c;感觉有点难以管理了&#xff0c;所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD&#xff0c;需要提供一个企业名新建一个项目&#…...

springboot整合VUE之在线教育管理系统简介

可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生&#xff0c;小白用户&#xff0c;想学习知识的 有点基础&#xff0c;想要通过项…...

并发编程 - go版

1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程&#xff0c;系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...

Golang——6、指针和结构体

指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...

阿里云Ubuntu 22.04 64位搭建Flask流程(亲测)

cd /home 进入home盘 安装虚拟环境&#xff1a; 1、安装virtualenv pip install virtualenv 2.创建新的虚拟环境&#xff1a; virtualenv myenv 3、激活虚拟环境&#xff08;激活环境可以在当前环境下安装包&#xff09; source myenv/bin/activate 此时&#xff0c;终端…...