TiffanyBlews's Blog

我们所经历的每个平凡的日常,也许就是连续发生的奇迹。

【八股笔记】LLM从入门到入土 (Ongoing)

LLM基础知识

【LLM】从零开始训练大模型 - 知乎

占用显存

  • 推理:
    • 一个 float32 型数字占用 4 Byte,所以 1B 参数模型全精度部署占用 4e9 Bytes = 4 GB. 同理,半精度 fp16/bf16 每B参数占用2GB,int8 每B占用1GB,int4 0.5GB
    • 前向计算开销:通常在模型权重的20%左右,因此总的显存占用在1.2倍的模型显存左右
  • 训练:
    • fp32所占的显存过大,fp16的精度往往达不到期望的程度,因此普遍使用混合精度训练:采用fp32、fp16和混合精度训练时,一般保存权重的时候是 fp16/bf16,fp32只用在累加算子上,防止误差的累积。
    • 需要加载的有模型权重参数、梯度值、优化器状态(如Adam需要维护主权重、一阶动量和二阶动量,并且采用fp32形式保存参数,所以=3*4*参数量 Bytes)、激活状态()
  • 强化学习训练:
    • 根据算法不同还需要加载、更新 Reward Model、Reference Model等

大模型训练推理显存计算简介 - 知乎
https://zhuanlan.zhihu.com/p/624740065

熵与KL散度

信息熵(Entropy, 衡量的是一个随机变量的不确定性。对于一个离散概率分布 ,其熵定义为:

其中, 是随机变量 取值 的概率, 通常以 2 为底(单位为比特)或以 为底(单位为纳特,nats)。

交叉熵(Cross-Entropy, 衡量的是当实际分布为 时,用分布 进行编码的期望信息量。定义如下:

如果 ,则交叉熵等于信息熵( ),否则

KL 散度(Kullback-Leibler Divergence, (或相对熵)衡量的是两个概率分布 之间的差异,定义为:

KL 散度可以通过交叉熵与信息熵的关系表示:

这表明,KL 散度衡量了使用分布 进行编码相比于最优分布 额外的编码代价(即冗余信息量)。由于交叉熵总是大于等于信息熵,因此 KL 散度总是非负的,即 ,当且仅当 时取 0。

Transformer

LLM可视化结构参见:https://bbycroft.net/llm

  • Encoder:
    • 由多层堆叠的 Self-AttentionFeed-Forward Network (FFN) 组成。
    • 输入流程: 输入嵌入 → 位置编码 → 多头自注意力 → Add & LayerNorm → FFN → Add & LayerNorm。
  • Decoder:
    • 在 Encoder 基础上增加 Encoder-Decoder Attention 层。
    • 自注意力层使用 Masked Attention(防止看到未来信息)。
    • 输入流程: 输入嵌入 → 位置编码 → 掩码多头自注意力 → Add & LayerNorm → 编码器-解码器注意力 → Add & LayerNorm → FFN → Add & LayerNorm。

自注意力机制通过计算输入序列中每个位置与其他位置的 Attention Scores ,动态捕捉全局依赖关系。具体步骤:

  1. 将输入向量通过线性变换生成Query(Q)、Key(K)、Value(V)。
  2. 计算注意力分数: ,其中 是Key的维度,用于缩放梯度。
  3. 多头注意力(Multi-Head)将Q、K、V分割到多个子空间并行计算,增强模型对不同语义关系的捕捉能力。

具体实现

  • 残差连接
    • 作用:保留输入信息,缓解梯度消失问题,提高训练稳定性。
  • FFN
    • 作用:Self-Attention 主要负责捕捉长距离依赖关系,但它本身是线性的,缺乏强大的特征提取能力。FFN 提供非线性变换,提高特征表达能力。对attention score先升维后降维让模型更好地整理、精炼已经被注意力提取的信息
    • self attention是token mixer。FFN是channel mixer。也就是说attention会混合多个token的信息来提取特征,但每个channel(特征维度)保持独立。而FFN不混合token,而是混合不同的feature channel。两种计算操作不同的层面来提取特征,相得益彰。
  • Layer Normalization (LN):
    • 对同一样本的所有特征进行归一化。
    • 作用:稳定训练,防止分布偏移,提高模型收敛速度。
    • 公式:
      其中 是样本的均值和标准差, 是可学习参数。
  • 其他归一化方式:
    • Root Mean Square Layer Normalization (RMSNorm): 在 LN 的基础上不再计算均值,只计算均方根来衡量数据的平均幅度,加快计算速度,增加训练效率。当 时,LN == RMSNorm
    • Batch Normalization (BN): 对不同样本的同一特征归一化,适合固定长度的数据(如图像)。
  • encoder decoder 区别:
    • Decoder block 的第一个 Multi-Head Attention 采用了 Masked 操作;第二个 MHA 根据 Encoder 的输出 C 计算得到 K, V,根据上一个 Decoder block 的输出 Z 计算 Q (如果是第一个 Decoder block 则使用输入矩阵 X 进行计算),后续的计算方法与之前描述的一致。

Transformer模型详解(图解最完整版) - 知乎

常见问题

为什么要将 进行scale
$ K^T $ 维度为 $ d_k $ , $ d_k $ 很大, $ QK^T $ 点乘结果方差过大,让softmax函数退化成argmax,导致梯度消失。

为什么要用 进行scale
这是 的方差,这样操作可以把它归一化成服从正态分布的量。

为什么用 LN 而非 BN?

  • BN 不适用于不定长序列,但 NLP 中序列长度可变。LN 不受批次、序列长度影响。
  • BN 会损失信息差异性,在 batch 中归一化,会抹平不同样本差异,而训练 LLM 需要不同信息的差异。

为什么要用MHA
一个 attention head 可能会过度将注意力集中于自身的位置,MHA 的输出包含不同子空间的编码表示信息,可以学到多维度的特征信息,从而增强模型的表达能力。同时 MHA 可并行计算,便于 Scale Up,提升计算效率。

与RNN相比的优势

  • 并行性:自注意力可同时计算所有位置的关联,便于Scale Up;而RNN是串行的,需逐步处理。(encoder的MHA和FFN是并行的,decoder在训练时可以,但由于mask的存在,推理阶段是串行的)
  • 长距离依赖:无论序列长度,任意两位置的交互只需一步计算,避免RNN的梯度消失/爆炸问题。

为什么现在的LLM都是Decoder only的架构?

  • Decoder架构主要是是为了预测下一个输出token,而这个任务更适配大模型的上下文学习。
  • Pipeline Parallel 流水并行的训练并行度最高,它的条件是需要一个规整对称的、线性顺序的网络结构,而 Decoder-Only 的架构最为简单,方便于 Scale Up,基于 Scaling Laws 的实际训练成本最低。 Encoder-Decoder 和 Encoder-Only 架构的优势无法弥补训练成本的大幅提升。

流程:

  • Gating / Router:
    如果所有的令牌都被发送到只有少数几个受欢迎的专家,那么训练效率将会降低。为了缓解这个问题,引入了一个 辅助损失,旨在鼓励给予所有专家相同的重要性。这个损失确保所有专家接收到大致相等数量的训练样本,从而平衡了专家之间的选择。
  • Dispatch: 将输入token根据上一步得到的权重分发给对应的专家FFN
  • Combine: 最终输出是各个专家的输出根据 gating score 的加权求和

稀疏混合专家模型 (MoE) 适用于拥有多台机器且要求高吞吐量的场景。在固定的预训练计算资源下,稀疏模型往往能够实现更优的效果。相反,在显存较少且吞吐量要求不高的场景,稠密模型则是更合适的选择。
混合专家模型(MoE)详解
Mixture of Experts in LLMs Explained

初始化方法

  • Xavier/Glorot 初始化: 适用于 Sigmoid/Tanh 激活函数,使得前向传播时信号方差保持稳定,方差为
  • He 初始化: 适用于 ReLU,保证前向和反向传播时信号不易消失或爆炸,方差为
  • 正交初始化: 保持矩阵正交性,防止梯度爆炸/消失。

全零初始化的缺陷

  • 对称性问题: 所有神经元输出相同,反向传播时梯度对称,导致无法学习差异特征。

优化

MoE

  • 与稠密模型相比, 预训练速度更快
  • 与具有相同参数数量的模型相比,具有更快的 推理速度
  • 需要 大量显存,因为所有专家系统都需要加载到内存中
  • 微调难度更大

因此为开源社区打造的 LLM 更倾向于稠密模型,为大公司打造的更倾向于 MoE。

而且稠密模型可以更新成 MoE,反之不行

混合专家模型主要由两个关键部分组成:

  • 稀疏 MoE 层: 这些层代替了传统 Transformer 模型中的前馈网络 (FFN) 层。MoE 层包含若干”专家”(例如 8 个),通常是前馈网络 (FFN),也可以是更复杂的网络结构,甚至可以是 MoE 层本身
  • 门控网络或路由: 这个部分用于决定哪些令牌 (token) 被发送到哪个专家。路由器由学习的参数组成,并且与网络的其他部分一同进行预训练。

位置编码

对于不带Attention Mask的纯Attention模型,它是全对称的。因此self-attention的运算是无向的,token的位置是无法分辨的信息。因此要给每个位置都加上一个位置编码向量

正弦函数位置编码

  1. 绝对性: 每个token的向量唯一(每个sin函数的频率足够小)
  2. 位置向量的值是有界的,且位于连续空间中。模型在处理位置向量时更容易泛化,即更好处理长度和训练数据分布不一致的序列(sin函数本身的性质)
  3. 相对性: 不同的位置向量是可以通过一个旋转矩阵的线性转换得到的,即
  4. 距离衰减性: 两个位置编码的点积(dot product)仅取决于偏移量 ,内积越小,两个点距离越远

存在的问题:

  1. 对称性: 位置编码的点积是无向的,即 . 虽然位置向量的点积可以用于表示距离(distance-aware),但是它却不能用来表示位置的方向性(lack-of-directionality)
  2. 当位置编码随着input被喂进attention层时,采用的映射方其实是: . 所以进入attention层之后,内积的距离意识(distance-aware)的模式遭到了破坏。

Transformer学习笔记一:Positional Encoding(位置编码) - 知乎

RoPE

https://kexue.fm/archives/8265
https://zhuanlan.zhihu.com/p/863378538

评估

Perplexity PPL 困惑度:

对于一个随机变量,
对于两个分布之间,

其中, 是真实分布 和模型分布 之间的交叉熵:

因为我们只有给定语料 $ S $ 没有真实分布 ,所以我们假设 ,因此得到

实际计算时为了节省计算量不计算n个,采用滑动窗口:Sliding window PPL taking advantage of all available context

BLEU

Negative Log-Likelihood NLL 负对数似然损失

decoding 策略

  • top-p: 仅从累计概率达到 p 的候选 token 中进行采样,去掉尾部低概率 token。
  • top-k: 仅从概率最高的 K 个 token 中随机采样,忽略其他候选 token。
  • temperature:
    • :概率分布变得更均匀,增加随机性,文本更有创造力,但可能不连贯。
    • :概率分布更陡峭,模型更倾向于选择最高概率的 token,使输出更确定,但可能缺乏多样性。
    • 时,等价于贪心(Greedy Decoding)。
  • beam-search: 在每一步保留 B(beam size)个最有可能的序列,并扩展它们,最终选择得分最高的序列。适用于翻译等需要高质量、确定性的任务,但可能导致文本缺乏多样性。
  • Best-of-N: 生成 N 个候选文本序列,然后选择得分最高的一个作为最终输出。
  • Majority Vote: 生成多个候选文本序列,对它们进行投票,选择出现最多的 token 作为最终输出。

LoRA

尽管预训练模型的参数量很大,但并不是所有参数都有作用,理论上我们可以微调非常小的参数量,就能在下游任务取得不错的效果。

LoRA借鉴了上述结果,提出对于预训练的参数矩阵W0∈Rn×mW0∈Rn×m,我们不去直接微调W0W0,而是对增量做低秩分解假设:
W\=W0+AB,A∈Rn×r,B∈Rr×m(1)(1)W\=W0+AB,A∈Rn×r,B∈Rr×m

https://kexue.fm/archives/9590


LLM RL

典型RL中智能体与环境的交互过程如下:

  • 时刻,环境的状态为 ,达到这一状态所获得的奖励为
  • 智能体观测到 ,采取相应动作
  • 智能体采取 后,环境状态变为 ,得到相应的奖励

智能体在这个过程中学习,它的最终目标是:找到一个策略,这个策略根据当前观测到的环境状态和奖励反馈,来选择最佳的动作。

什么任务适合用 RL 做?

  • 对于存在 GroundTruth 信号的任务(数学etc)来说,有一个明确的好答案标准、存在上限的任务适合 SFT ;难以标注(或定义)好答案,但很容易进行判别结果是否正确的任务,适合 RL。
  • 对于不存在 GroundTruth 信号的任务(创作)来说,没有理想标准(或者标准更迭很快)、存在一些数据不一致性的场景适合 RL 。虽然我们不知道这个问题的最完美的答案是怎样的,但我们总能在当前的几个候选答案里找出最好的那一个。

到底什么任务适合用 RL 做? - 知乎

RLHF

核心流程

  1. 预训练:用大规模文本数据训练初始语言模型(LM)。
  2. 奖励模型训练:通过人类标注的偏好数据(如对多个回答排序),训练奖励模型(RM)。
  3. 强化学习微调:使用PPO等算法,以RM为奖励信号优化LM,使其生成更符合人类偏好的输出。

ChatGPT 背后的”功臣”———RLHF 技术详解

奖励模型数据构造

  • 对同一提示(prompt),标注员对多个模型生成的回答进行排序(如A > B > C),构造为三元组 ,其中 是更优的回答。
  • 损失函数通常使用排序损失(如Pairwise Ranking Loss):

LLM 中主流的 RLHF 方向分为两大路线:

  • 以 PPO 为代表的 On-Policy 路线:训练过程中,需要模型亲自参与”生成”来收集新的数据样本。

  • 以 DPO 为代表的 Off-Policy 路线:训练过程中,不需要”在线”生成,更多依赖事先收集到的(或由别的策略产生的)数据进行离线学习。

https://mp.weixin.qq.com/s/S72LO26IsZ8AED8sQKIWnQ
https://zhuanlan.zhihu.com/p/675329917

PPO

当下的状态和动作会影响到未来的状态和动作,进而影响到未来的整体收益。因此要将未来的收益纳入当前的考虑。因此
其中:

  • $ V_t $ : t 时刻的(预期)总收益(return),注意这个收益蕴涵了”即时”和”未来”的概念
  • $ R_t $ : t 时刻的即时收益
  • : t+1 时刻的(预期)总收益。而 对 $ V_t $ 来说就是”未来”。
  • $ γ $ :折扣因子。它决定了我们在多大程度上考虑将”未来收益”纳入”当下收益”。

在 t 时刻,模型产出token 对应着的即时收益为 ,总收益为 ,模型的状态从 变为

如上图,在RLHF-PPO阶段,一共有四个主要模型,分别是:

  • Actor Model (Policy Model):演员模型,这就是我们想要训练的目标语言模型
  • Critic Model (Value Model):评论家模型,”教练”,它的作用是预估总收益 ,需更新参数
  • Reward Model:奖励模型,”裁判”,它的作用是计算最终收益 ,参数冻结
  • Reference Model:参考模型,它的作用是在RLHF阶段给语言模型增加一些”约束”,防止语言模型训歪(朝不受控制的方向更新,效果可能越来越差),参数冻结
  • Generalized Advantage Estimation (GAE) 将大模型完整回答的奖励 以及预估收益 换算成每个 token 的收益

训练流程:

  1. Policy LM generates complete responses $𝑦$ for contexts $𝑠$.
  2. Reward model evaluates the responses, producing .
  3. GAE combines these rewards with the value model estimates to compute:
    • Returns $𝑅_𝑡$ for each token (used to train the value model).
    • Advantages $𝐴dv⁡(𝑡)$ for each token choice (used to train the policy LM).
  4. Value model updates improve the fidelity of and .
  5. Policy LM updates using the advantages to improve its response generation.


*: 图中 SFT model 指 reference model

loss计算:

其中
意为采取 后与不采取相比增加的总收益,再加上对未来的收益。
我们只想在整个response生成后再评估reward,在之前只保证Actor依然服从Ref的分布,因此:

其中

问题4:PPO相比传统策略梯度方法(如TRPO)有哪些改进?其核心的“Clip”机制如何实现?

标准答案:
改进

  • 简化实现:PPO通过剪切(Clip)替代TRPO的复杂约束优化,避免计算二阶导数。
  • 数据效率:支持多次使用同一批数据更新策略(通过重要性采样)。

Clip机制

  • 限制策略更新幅度,防止新策略与旧策略差异过大。
  • 目标函数为: 其中 是剪切阈值(如0.2), 是优势函数估计。

图解大模型RLHF系列之:人人都能看懂的PPO原理与源码解读 - 知乎
https://zhuanlan.zhihu.com/p/7461863937
https://zhuanlan.zhihu.com/p/19223907990
https://thelmbook.com/articles/#!./RLHF-PPO.md

DPO

DPO不使用 value model,并且不计算 advantage。

DPO(直接偏好优化)

问题5:DPO与PPO在优化目标上有何本质区别?DPO如何避免显式奖励模型的训练?

标准答案:
区别

  • PPO:依赖奖励模型提供标量奖励,通过强化学习更新策略。
  • DPO:直接将偏好数据映射到策略优化目标,通过隐式奖励建模绕过显式RM训练。

DPO实现

  • 假设偏好数据服从Bradley-Terry模型,通过极大似然估计直接优化策略: 其中 是参考策略(如初始LM), 控制KL正则化强度。

https://zhuanlan.zhihu.com/p/721073733
https://www.bilibili.com/video/BV1dWB2Y4EcG/?p=9

Deepseek R1 与 GRPO


Deepseek R1厉害在哪?
Deepseek R1 Zero 成功解决了不依赖大量标注reasoning数据来教授LLM一步步思考的挑战,仅通过RL让模型自己发现长思考的技能。

Deepseek不使用可能引起 reward hacking 的复杂 reward model,而是使用基于规则的、可以自动验证的 reward model ,自动验证避免了人工或LLM验证引起的错误、偏差或幻觉。

GRPO
GRPO 由 PPO 改进而来:它不是使用价值模型来估计优势计算的基线,而是为每个输入对多个输出进行采样,并使用每组内的平均奖励作为基线。这意味着,如果为数学问题生成 64 个输出,其中一个获得 0.9 的奖励,而组平均值为 0.7,则该解决方案将获得 0.2 的正优势。这种基于组的方法提供了一种自然的方法来确定输出是好于还是差于平均值,而无需单独的值模型进行预测。最终,模型学会了纠正自身错误的能力,例如“等等,我注意到上一步有错误…”这里的优势会更高。

DeepSeek R1 and R1-Zero Explained

Reward Hacking

  • 如何避免?
    • 对于针对系统设计的 reward hacking,将 Agent 沙盒化,不让它接触到reward function
    • 多种奖励的组合。结合不同类型的奖励可能使其更难被 hacking
    • 像 Deepseek R1 不使用可能引起 reward hacking 的复杂 reward model,而是使用基于规则的、可以自动验证的 reward model

待整理

四、增强模型推理能力的方法

  1. 推理时间扩展: 思维链提示、多数投票、Best-of-N
  2. 强化学习(RL): Deepseek R1 Zero
  3. SFT+RL: Deepseek R1
  4. 蒸馏: Deepseek R1 Distill
    【LLM】增强大模型推理能力的四种范式_大模型的推理、微调、对齐、蒸馏-CSDN博客
    大模型推理能力提升的一个技术总结 - 知乎

五、处理超出训练数据长度的输入

  1. 位置编码外推: 改进位置编码(如 ALiBi)使其适应更长序列。
  2. 分块处理 (Chunking): 将长序列切分为 128k 的块分别处理。
  3. 稀疏注意力: 使用局部注意力或稀疏模式(如 Longformer)。
  4. 逐步微调: 在微调阶段逐步增加输入长度。

六、多任务学习的训练策略

  1. 任务适配层: 为每个任务添加轻量适配层(如 Adapter)。
  2. 交替训练: 按批次切换任务,共享底层参数。
  3. 梯度手术: 通过 PCGrad 等方法解决梯度冲突。
  4. 动态权重: 根据任务难度动态调整损失权重。

评估方法指标

RAG

RAG问答系统的评测方法与指标

RAG系统的评估需综合考察其检索质量生成质量,同时关注两者协同作用下的端到端性能。本节从评测方法、指标设计及现有挑战三方面展开分析。

3.1 评测方法论

  1. 任务导向型评估

    • 闭卷 vs. 开卷对比:通过对比纯生成模型(闭卷)与RAG模型(开卷)在相同任务中的表现,验证外部知识检索的有效性。
    • 领域适应性测试:划分领域内(In-Domain)和领域外(Out-of-Domain)测试集,评估模型对未知知识的泛化能力。
  2. 模块化评估

    • 分阶段评测
      • 检索阶段:验证文档召回率、相关性排序能力;
      • 生成阶段:固定检索结果,评估文本生成的准确性与流畅性。
    • 端到端评测:模拟真实场景,评估检索与生成模块的联合优化效果。
  3. 对抗性评估

    • 注入噪声或对抗性样本(如无关文档、误导性片段),测试模型的抗干扰能力与事实鲁棒性。

3.2 核心评测指标

  1. 自动评估指标

    • 检索质量指标
      • 召回率(Recall@k):前k篇文档中包含正确答案的比例;
      • 平均检索精度(Mean Average Precision, MAP):综合考虑排序位置的相关性得分;
      • 归一化折损累积增益(nDCG):衡量排序列表的效用性。
    • 生成质量指标
      • 文本匹配度:使用BLEU、ROUGE、METEOR对比生成答案与参考答案的字面相似性;
      • 语义相似度:基于BERT等模型的嵌入相似性(如BERTScore、Sentence-BERT);
      • 事实一致性(Factual Consistency):通过预训练模型(如FactCC、DAE)检测生成内容与检索文档的一致性;
      • 幻觉检测(Hallucination Rate):统计生成内容中无法被检索文档支持的比例。
  2. 人工评估维度

    • 流畅性(Fluency):生成文本的语法正确性与可读性;
    • 相关性(Relevance):答案与问题的匹配程度;
    • 信息完备性(Comprehensiveness):是否覆盖问题所需的关键信息;
    • 事实准确性(Factual Accuracy):基于领域专家标注的真实性评分。
  3. 综合指标

    • 联合F1值:结合检索结果与生成答案的F1分数(如RAG原论文[1]中的评估方法);
    • 人类偏好评分(Human Preference Score):通过众包或专家打分衡量答案的整体质量;
    • 任务成功率(Task Success Rate):针对具体应用场景(如客服问答)定义的成功标准。

3.3 挑战与未来方向

  1. 现有不足

    • 指标局限性:自动指标难以捕捉复杂语义错误,人工评估成本高昂;
    • 动态知识更新:评测数据易过时,难以反映实时知识库的更新效果;
    • 多轮交互评估:现有研究多关注单轮问答,缺乏对多轮对话连贯性的评测框架。
  2. 改进方向

    • 引入因果推理评估:检测模型对因果链的逻辑推理能力;
    • 多模态扩展:支持图文混合检索与生成的评估;
    • 可解释性评测:要求模型提供检索依据与生成路径的可追溯性;
    • 自动化评测工具:基于LLM-as-a-Judge(如GPT-4作为裁判)构建高效评估管道。

关键说明

  • 可根据具体研究方向调整侧重点(如医疗、法律等垂直领域需补充领域特定指标);
  • 结合实验设计说明指标选择依据(如开放域问答优先ROUGE,事实密集型任务侧重Factual Consistency);
  • 建议引用领域内权威评测工具(如RAGAS、TruLens)作为方法支撑。