【学习笔记】LLM技术基础

news/2025/3/15 22:27:30/

相比于预训练模型,大模型除了参数,数据量的大幅增长之外,还有能力的极大跃升。其目的已经不再是如之前NLP一样注重于解决特定任务,而是尝试成为通用任务求解器。为此,除了模型规模的增长,其训练过程相对也更加复杂。

模型构建过程

主要由预训练(Pre-Train)以及后训练(Post-Train)两个步骤组成。预训练是指使用与下游任务无关的大规模数据进行模型参数的初始训练,可以认为是为模型参数找到一个较好的“初值点”,这通常可以为大模型带来一个比较好的初始能力。
但是由于预训练的任务形式有限,此时模型更加擅长文本补全之类的任务(如之前的NLP模型一样),并不适合直接解决具体任务。因此后训练的任务就是激发其解决具体任务的能力,同时与人类偏好进行对齐。
图 1

预训练

如图1,预训练的目的是建立模型的基础能力。其最大的特点就是训练过程中需要海量的数据和计算资源。一般来说需要数万亿词元的自然语言文本,并且是清洗,规范化过后的,且需要百卡,千卡,甚至万卡算力数月的时间。

后训练

主要可以分为指令微调(SFT)以及人类偏好对齐(RLHF)两个部分。前者是为了激发大模型的通用任务求解能力,后者是为了让大模型输出的结果受到约束,符合人类偏好。

  • SFT
    通过使用任务输入与输出的配对指令数据进行模型训练, 可以使得语言模型较好地掌握通过问答形式进行任务求解的能力
    通常来说,数十万到百万规模的指令微调数据能够有效地激发语言模型的通用任务解决能力,这个过程中需要的算力资源相对不多。
  • RLHF
    主要使用强化学习来让模型学习人类偏好。这里常见的算法有PPO,DPO等,前者需要额外训一个奖励模型,后者不用。这一过程需要的资源比SFT多,但是还是远少于预训练过程。

扩展法则与涌现能力

扩展法则(Scaling Law)涌现能力(Emergent abilities)都是随着模型规模增大的时候出现的经验性规律。

Scaling Law

描述的是基于Transformer架构的大模型模型规模( N \text{N} N)、数据规模( D \text{D} D)和计算算力( C \text{C} C)之间的幂律关系
L ( N ) = ( N c N ) α N , α n ∼ 0.076 , N c ∼ 8.8 × 1 0 1 3 L ( D ) = ( D c C ) α D , α D ∼ 0.095 , D c ∼ 5.4 × 1 0 1 3 L ( C ) = ( C c C ) α C , α C ∼ 0.050 , C c ∼ 3.1 × 1 0 8 (1) L(N) = \left( \frac{N_{c}}{N} \right)^{\alpha_{N}}, \alpha_{n}\sim 0.076, N_{c}\sim 8.8\times 10^13\\ L(D) = \left( \frac{D_{c}}{C} \right)^{\alpha_{D}}, \alpha_{D}\sim 0.095, D_{c}\sim 5.4\times 10^13\\ L(C) = \left( \frac{C_{c}}{C} \right)^{\alpha_{C}}, \alpha_{C}\sim 0.050, C_{c}\sim 3.1\times 10^8\tag{1} L(N)=(NNc)αN,αn0.076,Nc8.8×1013L(D)=(CDc)αD,αD0.095,Dc5.4×1013L(C)=(CCc)αC,αC0.050,Cc3.1×108(1)
其中 L ( ⋅ ) L(\cdot) L()代表交叉熵损失函数。这些式子描述的是模型损失函数与每一个变量规模之间的关系,它需要一个基本假设:一个因素的分析不会受到其他两个因素的限制,如 当变动模型参数规模的时候,需要保证数据资源是充足的。
上式的一个结论是:模型损失函数与模型规模,数据规模,计算算力之间有较强的依赖关系,可以近似刻画为指数关系。相比之下,与模型形状等则没有强烈关联(在合理范围内)。
Scaling Law \text{Scaling Law} Scaling Law的一个重要作用是可以用于指导训练资源的分配。比如将关于模型规模 N \text{N} N,数据规模 D \text{D} D Scaling Law \text{Scaling Law} Scaling Law整合起来,可以近似得到
L ( N , D ) = ( ( N c N ) α N / α D + D c D ) α D (2) L(N,D) = \left( (\frac{N_{c}}{N})^{\alpha_{N}/\alpha_{D}} + \frac{D_{c}}{D}\right)^{\alpha_{D}}\tag{2} L(N,D)=((NNc)αN/αD+DDc)αD(2)
关于这一点,当 N → inf ⁡ N\rightarrow \inf Ninf时, L ( N , D ) L(N,D) L(N,D)就变成了 D D D Scaling Law \text{Scaling Law} Scaling Law, 反之亦然
图 2

上图展示了[1]在这方面给出的曲线。每一条虚线采用相同的数据规模 D D D,横轴代表模型规模 N N N,纵轴如之前一样代表模型损失 L ( ⋅ ) L(\cdot) L()
此时如果我们给定了模型规模,以及期望的loss,就能大致得到所需数据规模的范围。
当然对loss的期望可能有点抽象,更宽泛一些,如果我们只是希望尽可能避免过拟合现象的发生,定义过拟合程度为
δ L ( N , D ) = L ( N , D ) L ( N , inf ⁡ ) − 1 (3) \delta L(N,D) = \frac{L(N,D)}{L(N,\inf)} - 1\tag{3} δL(N,D)=L(N,inf)L(N,D)1(3)
注意到模型规模较大 > 1 0 9 >10^9 >109,而数据规模较小的时候,就容易发生过拟合现象。
对上图分析之后,发现过拟合现象发生时 δ L ≈ 0.02 \delta L\approx 0.02 δL0.02,所以此时给定模型规模 N N N的话,我们只要让
δ L ( N , D ) ≤ 0.02 \delta L(N,D)\leq 0.02 δL(N,D)0.02
即可,就能得到数据集规模的大致下限。
之后的 Chinchilla  S c a l i n g L a w \text{Chinchilla} \ Scaling \ Law Chinchilla Scaling Law对上述结论进行了进一步扩展,得到了更为精确的资源分配指导,但是本质是一样的,它们都指出了预训练工作中资源分配的重要性

Scaing Law的正确认识

乍一看 Scaling Law \text{Scaling Law} Scaling Law,似乎只要我们的模型参数足够大,数据管够,资源管够,就能实现AGI。但是需要指出的是,当前 Scaling Law \text{Scaling Law} Scaling Law的总结都是在有限资源下实验得到的,并不代表其没有上限。
以及,随着训练规模的不断增大,只依据 Scaling Law \text{Scaling Law} Scaling Law的指导来进行资源分配的话,由于其是指数形式,需要的资源也会呈指数形增长,这会是非常痛苦的。事实上,22年的Nips Outstanding Paper[2]指出,通过在数据集上进行合理的剪枝,是有可能打破 Scaling Law \text{Scaling Law} Scaling Law的。
相对应的,单纯增长模型规模,在后面也可能是冗余,不可行的,Deepseek R1就给了一个很好的例子。

涌现能力

涌现能力是指模型扩展到一定规模的时候,特定任务性能突然出现显著跃升,且远超随机水平
图 3
比如上图,纵轴代表模型在特定任务上的准确率,可以看到参数规模达到一定程度之后,曲线大幅上升。相比于 Scaling Law {\text{Scaling Law}} Scaling Law,这似乎并没有明显规律。
不过[3]指出,这种突变是由于测试指标的非线性,不连续性,如果采用连续的指标的话,曲线将会变得相对平滑。比如,原本的accuracy可能要求输出的所有token是完全正确的,而现在可以定义为其token的正确率等等。
所以一种说法是,大模型的涌现能力与否取决于观察大模型的方法,而不是其本身。这一点也许在现实生活中可以找到类似例子:婴儿在出生后的一段时间内并不会讲话,但是某一天突然就会叫“妈妈”了。单纯将指标定义为说话与否的话,我们得到的结论就是婴儿语言能力的突然涌现,但也许换一种指标,就会有更加连续,平滑的描述。
不过,在实际生活中,我们很多时候就是以一个不平滑的指标来观察事件的。用户要求输出的token完全正确很合理,我们也总是以说话与否来评判婴儿语言能力的提升。所以对涌现能力的更多深入研究可能也还是必要的。

综上, Scaling Law \text{Scaling Law} Scaling Law Emergent ability \text{Emergent ability} Emergent ability通过对模型采用不同的观察指标,得到了两个并不一样的结论。前者采用的是连续的语言建模损失,后者采用的非连续的任务性能,但是对于模型提升都具有一定的指导意义。
图 4

参考文献

[1] Kaplan, J., McCandlish, S., Henighan, T., Brown, T.B., Chess, B., Child, R., Gray, S., Radford, A., Wu, J., & Amodei, D. (2020). Scaling Laws for Neural Language Models. ArXiv, abs/2001.08361.
[2] Sorscher, B., Geirhos, R., Shekhar, S., Ganguli, S., & Morcos, A.S. (2022). Beyond neural scaling laws: beating power law scaling via data pruning. ArXiv, abs/2206.14486.
[3] Schaeffer, R., Miranda, B., & Koyejo, O. (2023). Are Emergent Abilities of Large Language Models a Mirage? ArXiv, abs/2304.15004.


http://www.ppmy.cn/news/1579415.html

相关文章

什么是 React 的合成事件?

React 的合成事件 React 的合成事件(Synthetic Events)是 React 提供的一种跨浏览器的事件处理机制。它封装了原生事件,确保事件处理的性能和一致性。本文将深入探讨 React 合成事件的工作原理、特性、使用方式以及与原生事件的比较。 1. 什…

C++【类和对象】(超详细!!!)

C【类和对象】 1.运算符重载2.赋值运算符重载3.日期类的实现 1.运算符重载 (1).C规定类类型运算符使用时,必须转换成调用运算符重载。 (2).运算符重载是具有特殊名字的函数,名字等于operator加需要使用的运算符,具有返回类型和参数列表及函数…

小程序主包方法迁移到分包-调用策略

/** Date: 2024-12-10 15:59:32* Description: 加载异步代码*/import { type Type, type ReversedType, type ReversedTypeRecord } from /lazy/typetype Key keyof Type/** 只支持调用函数 */ export const lazierInit new Proxy<ReversedType>({} as any, {get<T …

MTK Android12 安装app添加密码锁限制

提示&#xff1a;通过安装前输入密码的需求&#xff0c;来熟悉了解PMS 基本的安装流程 文章目录 一、需求实现需求原因提醒 二、UML图-类图三、参考资料四、实现效果五、需求修改点修改文件及路径具体修改内容 六、源码流程分析PMS的复杂性代码量实现aidl 接口PackageManagerSe…

css中实现border距离视图左右两侧有距离

首先看效果图 再看css是如何实现 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><style>.main {background-color: aqua;display: block;width: 300px;padding: 0px 32px;box-sizing: border-box;}/…

用 UCS Moody 和Camarilla支点打造量化高胜率模型

作者&#xff1a;老余捞鱼 原创不易&#xff0c;转载请标明出处及原作者。 写在前面的话&#xff1a;UCS Moody数学振荡器和Camarilla支点这两个量化工具&#xff0c;能显著提升交易决策的精准度。通过结合振荡器的动态趋势捕捉能力与支点策略的关键位预判&#xff0c;我优化了…

买瓜 第十四届蓝桥杯大赛软件赛省赛C/C++ 大学 A 组

买瓜 题目来源 第十四届蓝桥杯大赛软件赛省赛C/C++ 大学 A 组 原题链接 蓝桥杯 买瓜 https://www.lanqiao.cn/problems/3505/learning/ 问题描述 题目描述 小蓝正在一个瓜摊上买瓜。瓜摊上共有 n n n 个瓜,每个瓜的重量为 A i A_i Ai​。小蓝刀功了得,他可以把任何瓜…

单片机—中断系统

什么是中断系统&#xff1f; 为使得CPU具有对外界紧急事件的实时处理能力而设置的&#xff0c;当CPU正在处理某些事的时候&#xff0c;当外界紧急事件请求&#xff0c;CPU会停止当前的事情&#xff0c;先去处理紧急的事件&#xff0c;处理结束后&#xff0c;在返回处理当前事件…