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,不如从零开始训练。
系列文章:
- 大模型 ScallingLaws 的 C=6ND 公式推导
- 大模型 ScallingLaws 的 CLM 和 MLM 中不同系数
- 大模型 ScallingLaws 的迁移学习与混合训练
1. 从零开始与迁移学习
迁移缩放法则(Transfer Scaling Laws):预训练 MLM,迁移至 CLM,随着模型规模增大,收益递减;预训练 CLM,迁移至 MLM,随着模型规模增大,收益增加。不同 FLOPs 下 CLM 和 MLM 的损失(Loss)曲线,表明迁移策略的 有效前沿(Efficiency Frontiers),或 帕累托前沿(Pareto Frontier) 。如图:

同时训练多个目标时,可能存促进或干扰,即 协同效应 问题,训练顺序也是关键因素,先训练 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αs,L(Ct)=at×Ctαt
计算量与 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} \\ Ct∝Csαtαs=Cs−0.038−0.034=Cs0.894
因此,最优的迁移学习策略:先使用 CLM 预训练,然后再训练 MLM。同时,CLM 与 MLM 的 混合训练(Mixing Training) 或改变训练顺序(即先 MLM 后 CLM),都没有带来显著的益处。推测原因是, MLM 仅专注于恢复 被损坏(Mask) 的标记,不具有因果性,如果 MLM 以从左到右的方式,根据上文预测序列中间的片段,才可能加快训练速度。
关于 CLM 与 MLM 的 混合训练(Mixing Training) 目标的验证 Loss,在全部模型规模中,从零开始训练都比混合训练的验证损失更低,表明,混合训练不如针对每个单独目标的专门训练有效。参考:

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 数量下,降低困惑度。

以模型规模 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.26∗10−3N)0.5781=(1.26×10−385×10242)0.5781=0.6×1019=(6.19×10−8N)0.7761=(6.19×10−885×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×Df−0.1371×N−0.3691=3.65×105×(48×10243)−0.1371×(85×10242)−0.3691=9.2×109≈8.57B<12B
相关文章:
LLM - 大模型 ScallingLaws 的迁移学习与混合训练(PLM) 教程(3)
欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/145212097 免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。 Scalin…...
【软件开发过程管理规范】需求管理,需求分析,设计开发管理,测试管理(Word)
一、需求管理规程 1 简介 2 过程总体描述 2.1 过程概述 2.2 过程流程图 3 过程元素描述 3.1 准备阶段 3.2 需求调研 3.3 需求分析 软件开发人员及用户往往容易忽略信息沟通,这导致软件开发出来后不能很好地满足用户的需要,从而造成返工。而返工不仅在技术…...
计算机网络 (49)网络安全问题概述
前言 计算机网络安全问题是一个复杂且多维的领域,它涉及到网络系统的硬件、软件以及数据的安全保护,确保这些元素不因偶然的或恶意的原因而遭到破坏、更改或泄露。 一、计算机网络安全的定义 计算机网络安全是指利用网络管理控制和技术措施,保…...
RPA编程实践:Electron实践开始
文章目录 前言闲话少叙,打开官网版本发布安装在 Windows 上安装在 macOS 上安装在 Linux (Ubuntu) 上安装 前言 上回说道,我们electron适合于熟悉web开发,但想要研发桌面应用的人。 但我觉得这个需求应该不是很多。 因为使用electron&#…...
ORB-SLAM2源码学习:MapPoint.cc④: 新增地图点总结
前言 让我们来总结ORB-SLAM2 中的新增地图点。 1.在第一阶段跟踪中的恒速模型跟踪中新增地图点 针对双目相机或RGB-D相机,找出上一帧中具有有效深度值且不是地图点的特征点,将其中较近的点作为上一帧新的临时地图点, 并记录在向扯mlpTempo…...
2025西湖论剑-babytrace
前言 就做了下题目,pwn1/3 都是签到,pwn2 后面绕 ptrace 有点意思,简单记录一下 漏洞分析 子进程中的读/写功能没有检查负数的情况,存在越界读写: void __fastcall get_value(__int64 *int64_arr) {__int64 ll; //…...
绘图专用,26个常见流程图符号及其解释
关注作者 当您设计网站、构建应用程序或绘制业务系统时,您需要一种方法来清晰地绘制步骤和用户流程。虽然您可以使用流程图来概述这些过程,但箭头和方框只能帮助您到目前为止。为了清楚地表达您的意思,您需要流程图符号。 为了帮助解释每个流…...
【个人学习记录】软件开发生命周期(SDLC)是什么?
软件开发生命周期(Software Development Life Cycle,SDLC)是一个用于规划、创建、测试和部署信息系统的结构化过程。它包含以下主要阶段: 需求分析(Requirements Analysis) 收集并分析用户需求定义系统目标…...
自学SpringBoot笔记
概念 什么是SpringBoot? Spring Boot 是基于 Spring Framework 的一款开源框架,主要用于简化 Spring 应用程序的开发。它通过提供一系列的 开箱即用的功能 和 自动配置,让开发者可以快速构建生产级别的独立应用程序,而无需手动配…...
03JavaWeb——Ajax-Vue-Element(项目实战)
1 Ajax 1.1 Ajax介绍 1.1.1 Ajax概述 我们前端页面中的数据,如下图所示的表格中的学生信息,应该来自于后台,那么我们的后台和前端是互不影响的2个程序,那么我们前端应该如何从后台获取数据呢?因为是2个程序…...
[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、日常开发团队要求规范,需要对开发需求代码进行单元测试并要求行覆盖率达到要求,DevOps流水线也会开设相关门禁阀值阻断代码提交,一般新增代码行覆盖率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报错信息,猜测是navicat默认连接超时导致的,后面换成idea一个插件虽然慢但连接上了 2013 - Lost connection to MySQL server at reading initial communication packet 2.启动xxl-job会报错,网上有人mysql驱动与数据库不匹…...
在线图片像素颜色拾取工具
在线图片像素颜色拾取工具,非常方便的一个工具,无需登录,用完就走。 包括中文和英文版本。 https://getcolor.openai2025.com...
Qt之登录界面(splash)
在上一篇多文档窗口设计(MDI)的基础上增加了一个登录界面(splash). 该模块可以扩展为常规的软件登录界面。 界面展示如下 如果用户名和密码输入正确,则调到MDI界面,如果用户名和密码一共输入三次以上,则程序强制退出…...
NotebookLM:Google 最新 AI 笔记助理解析与实战应用
NotebookLM:Google 最新 AI 笔记助理解析与实战应用 在 AI 驱动的生产力工具不断进化的今天,Google 推出的 NotebookLM(Notebook Language Model)成为了一款备受关注的智能笔记助理。它结合了 Google 的大语言模型(LL…...
软路由系统iStoreOS 一键安装 docker compose
一键安装命令 大家好!今天我来分享一个快速安装 docker-compose 的方法。以下是我常用的命令,当前版本是 V2.32.4。如果你需要最新版本,可以查看获取docker compose最新版本号 部分,获取最新版本号后替换命令中的版本号即可。 w…...
vue3本地文件下载
开发记录: vue3本地下载文件要把文件放到public下,如果放在src里面可能会出现这个问题...
纯代码实现给WordPress添加文章复制功能
在给wordpress添加内容时,有时会遇到文章复制的功能,但是wordpress又没有这个功能。把下面一段代码添加到functions.php文件中,就可以实现这个功能。 /** Function for post duplication. Dups appear as drafts. User is redirected to the…...
业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...
调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...
Linux简单的操作
ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...
ABAP设计模式之---“简单设计原则(Simple Design)”
“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...
视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...
LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》
这段 Python 代码是一个完整的 知识库数据库操作模块,用于对本地知识库系统中的知识库进行增删改查(CRUD)操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 📘 一、整体功能概述 该模块…...
uniapp手机号一键登录保姆级教程(包含前端和后端)
目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号(第三种)后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...
华为OD机试-最短木板长度-二分法(A卷,100分)
此题是一个最大化最小值的典型例题, 因为搜索范围是有界的,上界最大木板长度补充的全部木料长度,下界最小木板长度; 即left0,right10^6; 我们可以设置一个候选值x(mid),将木板的长度全部都补充到x,如果成功…...
十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建
【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建 前言准备工作第一部分:回顾 Django 内置的 `User` 模型第二部分:设计并创建 `Role` 和 `UserProfile` 模型第三部分:创建 Serializers第四部分:创建 ViewSets第五部分:注册 API 路由第六部分:后端初步测…...
AD学习(3)
1 PCB封装元素组成及简单的PCB封装创建 封装的组成部分: (1)PCB焊盘:表层的铜 ,top层的铜 (2)管脚序号:用来关联原理图中的管脚的序号,原理图的序号需要和PCB封装一一…...
