
Lecture 6: LLM Reasoning
系统梳理大语言模型推理能力的核心技术路径,涵盖推理与非推理的本质区分、思维链(CoT)范式变革、推理评估体系(Pass@k/Cons@k)、GRPO群体相对策略优化算法的数学原理与改进(DAPO/Dr.GRPO)、DeepSeek R1/R1-Zero的多阶段训练流程,以及推理链蒸馏的工程化实践。
阅读文章ZHY's Blog
A UNIVERSE OF IDEAS · BY ZHANG HAOYI
让好奇心 点亮知识宇宙
在代码、模型与思想之间自由漫游。这里持续记录人工智能、机器学习、软件工程与成长实践,让每次阅读都成为一次新的发现。
ARTICLE NOTE
(1)传统机器学习
(2)迁移学习
(3)LLM核心训练范式
Learn pattern of language and code(学习自然语言与代码的底层模式)
Predict next token(下一个令牌预测)
(1)数据混合(Data mixtures)
两类核心数据源:
(2)数据规模
万亿级令牌(Approx. trillions of tokens),典型模型对比:
| 模型 | 预训练令牌量(# tokens) |
|---|---|
| GPT-3 | 300 billion(3000亿) |
| LLaMA 3 | 15 trillion(15万亿) |
(1)FLOPs(FLoating-point OPerations,浮点运算总次数)
定义:衡量模型训练的总计算量,与令牌数、模型参数数正相关
公式:f(tokens,parameters) (无具体解析式,为定性关联)
量级对比:小神经网络 ~ 107 → 大RNN ~ 1014 → LLM ~ 1025
(2)FLOPSorFLOP/s(FLoating-point OPerations per Second,每秒浮点运算次数)
(1)缩放规律(scaling)
核心结论:模型测试损失 L 随计算量、数据集大小、模型参数数的增加而单调下降,三者存在明确的幂律关系:
本质:更大的模型、更多的数据、更高的计算量,必然带来模型性能的提升。
(2)样本效率(Sample efficiency)
(3)Chinchilla定律(Chinchilla law)
核心前提:缩放规律未考虑计算量最优,仅增大参数数/数据量会导致资源浪费
核心结论:模型参数数 N 与训练令牌数 T 必须按比例缩放,才能实现训练计算量的最优利用,避免“参数多数据少”或“数据多参数少”
表格数据(计算量与参数/令牌的对应关系,Gopher为基准单位,FLOPs为计算量):
| 参数数 | FLOPs | FLOPs(Gopher单位) | 训练令牌数 |
|---|---|---|---|
| 400 Million | 1.92e+19 | 1/29,968 | 8.0 Billion |
| 1 Billion | 1.21e+20 | 1/4,761 | 20.2 Billion |
| 10 Billion | 1.23e+22 | 1/46 | 205.1 Billion |
| 67 Billion | 5.76e+23 | 1(基准) | 1.5 Trillion |
| 175 Billion | 3.85e+24 | 6.7 | 3.7 Trillion |
| 1 Trillion | 1.27e+26 | 221.3 | 21.2 Trillion |
(1)成本问题(Cost)
(2)知识学习问题(Learned knowledge)
Knowledge cutoff(知识截止)——模型仅能学习训练数据截止时间前的知识,无法掌握实时信息
Hard to edit knowledge(知识编辑困难)——LLM的知识分布式存储在模型参数中,无明确的“知识节点”,修改单个知识点会牵一发而动全身,甚至导致模型性能下降
Plagiarism(抄袭风险)——训练数据包含大量有版权的文本/代码,模型生成结果可能与训练数据高度相似,存在版权侵权风险

图1 LLM训练流程
(1)初始化(Initialization)
(2)前向传播(Forward pass)
(3)反向传播(Backwards pass)
(4)参数更新(Weights update,PPT核心公式,Adam优化器)
优化器:Adam(Adaptive Moment Estimation),为LLM训练的标配优化器
核心更新公式:θt+1←θt−αvt+ϵmt
其中:
- α :学习率(超参数,控制参数更新步长)
- mt :梯度的一阶矩估计(动量,平滑梯度更新),公式: mt+1←β1mt+(1−β1)∇L(θt)
- vt :梯度的二阶矩估计(自适应学习率,对不同参数设置不同步长),公式: vt+1←β2vt+(1−β2)(∇L(θt))2
- ϵ :极小值(防止分母为0,一般取 10−8 )
- β1,β2 :矩估计的衰减系数(超参数,一般取0.9和0.999)
(1)核心结论
(2)H100核心性能参数(单位:teraFLOPS/TOPS)
| 精度类型 | H100 SXM | H100 NVL |
|---|---|---|
| FP64 | 34 | 30 |
| FP64 Tensor Core | 67 | 60 |
| FP32 | 67 | 60 |
| TF32 Tensor Core | 989 | 835 |
| BFLOAT16 Tensor Core | 1979 | 1671 |
| FP16 Tensor Core | 1979 | 1671 |
| FP8 Tensor Core | 3958 | 3341 |
| INT8 Tensor Core | 3958 TOPS | 3341 TOPS |
(1)核心思路:将训练批次数据均匀拆分到多个GPU;每个GPU完整复制模型参数/梯度/优化器状态;各GPU独立计算梯度后,通过通信同步梯度,再统一更新参数
(2)问题:参数/梯度/优化器状态在多GPU间完全冗余,显存利用率极低(如8GPU数据并行,显存浪费7/8)

图2 ZeRO优化
(1)核心目标:消除数据并行中的冗余信息,提升显存利用率
(2)优化版本:
(3)本质:将冗余的参数/梯度/优化器状态拆分到多个GPU,而非复制,是大模型训练的标配优化。
(1)核心思路:将模型的计算逻辑/参数拆分到多个GPU,而非复制完整模型,适用于超大规模模型(万亿参数)
(2)具体类型:

图3 传统自注意力与Flash Attention的计算思路
(1)自注意力核心公式:Attention(Q,K,V)=softmax(dkQKT)V
其中 dk 为Q/K的维度, dk 为防止内积过大导致softmax饱和。
(2)传统计算流程:从HBM(低速大显存)加载 Q/K 分块 → 计算 S=QKT → 将S写入HBM → 从HBM读取S → 计算 P=softmax(S) → 将P写入HBM → 从HBM加载 P/V 分块 → 计算 O=PV → 将O写入HBM
(3)核心问题:多次读写HBM,中间结果(S/P)占用大量显存,且HBM读写速度慢,导致注意力计算耗时/显存占用高。
Flash Attention的核心是利用GPU的SRAM(高速小显存)减少HBM读写,实现精确注意力(无性能损失,区别于近似注意力),包括两大核心思想:
(1)思想1:Tiling(分块)——最小化HBM读写
操作:将Q/K/V按固定大小分块,逐块加载到SRAM(高速显存),在SRAM内完成注意力计算,计算完成后仅将最终结果O写入HBM,无需存储中间结果S/P
本质:用SRAM的高速读写替代HBM的低速读写,减少数据交互耗时
(2)思想2:分块Softmax + 反向传播重计算
分块Softmax:无需计算完整的 S=QKT ,对SRAM内的分块S单独计算softmax,通过归一化因子累加得到最终的P,保证结果与传统注意力一致
反向传播重计算:不存储前向传播的中间结果(S/P/激活值),在反向传播时重新从HBM加载Q/K/V分块,在SRAM内重计算中间结果,以少量FLOPs增加换取大量显存节省——More FLOPs, but less runtime!!(计算量略有增加,但运行时间大幅减少)
(3)优化效果:精确注意力前提下,性能提升显著:
| 指标 | 传统自注意力 | Flash Attention | 提升幅度 |
|---|---|---|---|
| GFLOPs(计算量) | 66.6 | 75.2 | 增加13% |
| HBM R/W(GB) | 40.3 | 4.4 | 减少90% |
| Runtime(ms) | 41.7 | 7.3 | 速度提升5.7倍 |
FlashAttention的核心是分块softmax累加的等价性证明和数值稳定化处理,证明分块计算与全局计算结果完全一致(精确注意力)。
(1)步骤1:softmax的数值稳定化变换
(2)步骤2:softmax分块累加的等价性推导
(3)步骤3:分块注意力输出的推导
(1)分块方式
(2)分块计算
初始化全局变量(HBM存储) 输出矩阵:O∈RN×dv(初始0);全局最大值:m∈RN(初始 −∞);全局归一化和:s∈RN(初始0)。
遍历K/V列块(加载到SRAM) 循环遍历每个K/V列块Kc、Vc,将其从HBM加载到SRAM(仅加载1个列块);同时,为每个列块初始化局部最大值mc和局部归一化和sc(临时变量,仅存储在SRAM,不写回HBM)
遍历Q行块(SRAM内计算+累加)
全局归一化:所有K/V列块和Q行块遍历完成后,对全局输出O进行全局归一化(结合全局归一化和s),得到最终注意力输出:O=O/s
反向传播重计算:前向传播仅存储Q、K、V、O、m、s(O(Nd) 内存);反向传播时重新加载分块到SRAM,重计算中间结果后求梯度;代价:增加13% FLOPs;收益:显存节省50%,整体速度提升。
(1)浮点精度的二进制构成
| 精度类型 | 符号位(Sign) | 指数位(Exponent) | 尾数位(Mantissa) | 总位数 |
|---|---|---|---|---|
| FP16 | 1 | 5 | 10 | 16 |
| FP32 | 1 | 8 | 23 | 32 |
| FP64 | 1 | 11 | 52 | 64 |
| BFLOAT16 | 1 | 8 | 7 | 16 |

图4 混合精度训练
(2)混合精度训练目标:Speed up training and decrease memory requirements(提升训练速度,降低显存需求);核心原则是低精度计算,高精度保存(利用低精度的速度优势,同时用高精度避免训练过程中的精度损失)
(3)混合精度训练流程:
(1)定义:Supervised FineTuning(SFT、有监督微调),基于人工标注的输入-输出配对数据微调预训练模型
(2)核心思路:收集SFT数据(输入=任务指令,输出=期望结果);以下一词预测为目标,微调模型权重;改变模型行为,使其适配具体任务
(3)本质:仍为自回归训练,与预训练的唯一区别是数据为任务专属的标注数据,而非通用无标注数据
(1)核心目标:Graduate the model to being a helpful assistant(让模型成为遵循自然语言指令的有用助手)
(2)任务类型:故事写作、诗歌创作、清单生成、问题解释等通用自然语言任务
(3)数据特点:以人工编写+合成数据作为数据来源;主要内容涵盖助手对话、合成指令、数学推理、代码、安全对齐;不同模型的SFT规模(样本量)如下:
| 模型 | SFT样本量(# examples) |
|---|---|
| GPT-3 | 13 thousands(1.3万) |
| LLaMA 3 | 10 million(1000万) |
以问题Can I put my teddy bear in the washer?(泰迪熊能机洗吗?)为例:
预训练模型:仅陈述事实 → Teddy bears are often made of materials like polyester and cotton, with plastic eyes and sometimes small accessories.(仅介绍泰迪熊的材质,未回答问题)
预训练+指令调优模型:直接响应指令 → No, it might get damaged. Try hand washing instead.(明确回答不能,并给出建议,符合人类需求)
(1)需要极高质量的输入-输出配对数据,标注成本高 (2)对提示词(Prompt)的分布高度敏感,未见过的提示词格式会导致性能下降 (3)泛化能力有限,难以适配训练数据中未覆盖的任务 (4)缺乏统一、客观的评估标准,难以量化模型的“指令遵循能力” (5)全量微调仍需大量计算/显存资源,中小GPU无法支撑
(1)标准化基准(Benchmarks,量化指标)
四个维度:通用知识:MMLU(多任务语言理解);基础推理:ARC-Challenge(人工智能推理挑战);数学推理:GSM8K(小学数学应用题);代码生成:HumanEval(代码生成任务)
核心建议:Recommended to train on the test task to compare across models(为跨模型对比,建议在测试任务上做少量训练)
(2)“Real-life” feeling评估(如Chatbot Arena,主观体验)
全量SFT需要微调模型所有参数,计算/显存资源需求极高,参数高效微调仅微调少量参数(<1%),即可达到与全量SFT相近的性能,是中小GPU微调大模型的主流方案,如LoRA和QLoRA为本次课的工程核心。

图5 LoRA微调原理
(1)核心背景:全量SFT资源密集,中小GPU无法支撑,LoRA通过低秩矩阵近似减少需要微调的参数数量,实现高效微调。
(2)核心原理
其中:
- W0 :预训练权重矩阵,冻结不更新(占模型参数的99%以上)
- A∈Rd×r :低秩投影矩阵,随机初始化,需微调
- B∈Rr×k :低秩还原矩阵,初始化为0,需微调
- r :低秩维度(超参数,通常取4/8/16,远小于 d/k ),决定LoRA的参数量
(3)核心优势
(4)适用位置:原始方案仅应用于Masked Multi-Head Attention(掩码多头注意力)模块;而当前最优实践是应用于:Forward Feed(前馈网络)
(5)训练动力学:LoRA与全量微调的训练规律存在显著差异,为实验验证的经验结论:LoRA需要更高的学习率(比全量微调高10~100倍);LoRA在大批次大小下性能表现较差(适合小批次训练)

图6 QLoRA微调原理
(1)核心背景:LoRA仍需以高精度(FP32/FP16)存储冻结的权重矩阵 W0 ,显存占用仍较高;QLoRA通过量化冻结权重进一步释放显存瓶颈,实现中小GPU微调千亿参数大模型。
(2)核心原理:在LoRA的基础上,增加权重量化。
(3)量化技巧
4位NormalFloat(NF4)量化
Double quantization(双重量化)
(4)核心优势

图7 LLM完整生命周期与对齐原则
模型初始化 → 预训练 → 有监督微调(SFT/指令调优) → 偏好调优
Note总结
- LLM的核心训练范式为预训练+微调,预训练目标是下一词预测(P(W+1=w∣C) ),数据为万亿级令牌,缩放规律/Chinchilla定律是模型设计的理论依据;
- LLM训练的核心流程为初始化 → 前向传播 → 反向传播 → Adam优化器参数更新,Adam核心公式为 θt+1←θt−αvt+ϵmt ;
- LLM训练的最大瓶颈为GPU显存有限,核心优化手段为:ZeRO并行(消除冗余)、Flash Attention(采用分块方法优化注意力计算)、混合精度训练(低精度计算,高精度保存);
- 有监督微调(SFT)是模型从“通用”到“专用”的关键,指令调优是其核心场景,模型评估是行业难题;
- 参数高效微调的主流方案为LoRA(W=W0+BA)和QLoRA ,通过低秩矩阵+权重量化,实现以少量参数微调达到全量SFT性能,大幅降低硬件门槛;
- LLM的全生命周期围绕模型对齐(Alignment)展开,最终目标是让模型具备通用能力的同时,安全、贴合人类需求。
按顺序完成这组文章,循序渐进地掌握主题
发现错误、内容过时或有改进想法?欢迎告诉我
根据本文分类与标签,为你推荐可能感兴趣的内容

系统梳理大语言模型推理能力的核心技术路径,涵盖推理与非推理的本质区分、思维链(CoT)范式变革、推理评估体系(Pass@k/Cons@k)、GRPO群体相对策略优化算法的数学原理与改进(DAPO/Dr.GRPO)、DeepSeek R1/R1-Zero的多阶段训练流程,以及推理链蒸馏的工程化实践。
阅读文章
系统梳理大语言模型偏好调优(Preference Tuning)的核心技术与方法,涵盖偏好数据的三大类型(点态/成对/列表型)与获取流程、RLHF两阶段架构(奖励建模+PPO强化学习)、BoN替代方案,以及DPO的数学原理与优势,最后对比RLHF与DPO的实现难度与性能差异。
阅读文章
系统梳理大语言模型在跨模态与前沿技术方向的核心进展,涵盖Transformer多模态泛化本质、ViT与VLM的视觉适配方案、扩散LLMs(MDM)的并行生成突破、跨模态技术交叉融合(扩散架构/Transformer/MSRoPE/DeepSeek-OCR)、LLM基础研究趋势(帕累托优化/类存内计算)及应用场景与未来展望,最后提供学术与工程跟进渠道。
阅读文章请使用微信扫描二维码分享
当前文章会保持在原页面