上一章 · 返回首页 · 内容清单 · 下一章

证据等级:板书明确涉及Model Training/Advanced Training/Pre-training/PPL;正式Week8/9细节课件尚未提供。以下为必要原理补充,并结合Lab6/现有大纲;不能断言老师会按同样符号或深度命题。

9.1 模型生命周期和目标差异

数据收集/清理→tokenizer→架构与初始化→预训练得到base→可选领域继续预训练→SFT学任务/对话→偏好或可验证奖励优化→评估→量化/部署→监控。蒸馏可以在不同阶段插入,不是唯一固定顺序。

base学到文本分布,不保证按指令回答;SFT提供希望的回答示范;RL用奖励改进模型自己采样的行为。三阶段可能共享同一Transformer架构,主要区别在数据、目标和更新过程。推理中的生成属于应用已有参数,除非显式设计在线训练,不会自动更新权重。

9.2 预训练数据管道为何重要

来源→抽取正文→语言/质量过滤→安全与隐私处理→文档/近重复去重→评测污染排查→按领域混合→tokenization→存储、shuffle、分片。HTML正文抽取要排除导航、广告、脚本等;去重可以减少记忆重复样本和浪费compute,但过度去重也可能删除有价值的独特片段。

训练/验证/测试划分应注意近重复文档跨集合泄漏。benchmark contamination不只是逐字题目,还可能有答案、变式、解释和翻译。高分可能来自记忆而非目标泛化能力。

高质量不等于文本越长、越像学术写作越好;需要看任务覆盖、语言、代码/数学比例与重复度。数据混合配比是设计变量,不是只把所有下载文件拼起来。

9.3 自回归目标与标签移位

LPT=−1M∑b,tmb,tlog⁡pθ(xb,t+1∣xb,≤t).L_{PT}=-{1\over M}\sum_{b,t}m_{b,t}\log p_\theta(x_{b,t+1}\mid x_{b,\le t}).

输入前缀产生下一位置目标;m表示有效loss位置。很多CausalLM接口传labels=input_ids后内部shift;手写实现则自己用logits[:,:-1]对input_ids[:,1:]。两者只能选一处shift,不能重复移位。

padding的label设ignore index(常见-100),attention mask控制输入可见性。若EOS和PAD共用ID,不能仅按ID屏蔽所有EOS;应结合实际有效长度保留真实终止目标。

sequence packing把多篇短文塞进固定长度样本,减少padding。是否允许跨文档attention、是否重置position、EOS如何插入是实际训练约定;block-diagonal mask可隔离文档,但需kernel支持,不是所有packing必然隔离。

9.4 SGD、momentum、Adam、AdamW

SGD:θ←θ-ηg。momentum累积方向,减少局部噪声/震荡;历史动量会使当前更新方向不等于当前负梯度。

Adam:

mt=β1mt−1+(1−β1)gt,vt=β2vt−1+(1−β2)gt2,m_t=\beta_1m_{t-1}+(1-\beta_1)g_t,\quad v_t=\beta_2v_{t-1}+(1-\beta_2)g_t^2, m^t=mt/(1−β1t),v^t=vt/(1−β2t),θt=θt−1−ηm^tv^t+ϵ.\hat m_t=m_t/(1-\beta_1^t),\quad\hat v_t=v_t/(1-\beta_2^t),\quad \theta_t=\theta_{t-1}-\eta {\hat m_t\over\sqrt{\hat v_t}+\epsilon}.

一阶矩平滑梯度,二阶矩给逐参数尺度;初始为0会有偏差,故做bias correction。g²是逐元素平方,不是矩阵平方。

AdamW解耦weight decay,常写θ←(1-ηλ)θ-η*AdamUpdate。直接把λθ加到Adam梯度会被自适应预条件器一起缩放,不等于解耦衰减。norm、bias是否衰减依具体参数组规则,Lab6对一维参数不衰减。

warmup从较小学习率逐渐升高,缓解训练初期状态不稳定;后续cosine/其他衰减控制长期更新尺度。gradient clipping按全局范数把过大梯度缩放到阈值,降低爆炸风险;它不修复数据错误或NaN的根源。

9.5 梯度累积与混合精度

将多个microbatch的梯度累积后更新,可扩大effective batch并降低一次forward显存。若每个microbatch有效token数不同,简单平均各自mean loss的梯度不是全体token mean,需按有效数加权;分布式梯度平均也要一致。

FP16为1符号/5指数/10尾数位,BF16为1/8/7(不含隐含位);BF16指数范围更接近FP32,但尾数精度更低。FP16可能更需要loss scaling:放大loss,backward后还原梯度,检查溢出再step。BF16不意味着数值误差不存在;norm、softmax、optimizer统计仍可FP32。

量化把实数近似映射到有限离散编码:常见q=clip(round(x/s)+z),重建x̂=s(q-z)。s为scale、z为zero point;对称量化常z=0。逐tensor/通道/group有不同精度和元数据开销;激活outlier会让共享scale浪费表示范围。PTQ训练后量化,QAT训练时模拟量化误差;低bit存储不保证所有算术都在同样bit数执行。

9.6 多GPU到底分什么

方式切分对象主要通信/问题
Data Parallel每卡模型副本,不同数据梯度同步;参数本身每卡仍要装下
Tensor Parallel同一层矩阵/头分片层间all-reduce/all-gather;带宽要求高
Pipeline Parallel不同层放不同卡microbatch流水,pipeline bubble
Expert Parallel不同专家放不同卡token分发/回收的all-to-all、热点
ZeRO/FSDP式分片优化器状态、梯度、参数按需聚合与通信,降低冗余

ZeRO stage1分片optimizer states,stage2再分片gradients,stage3再分片parameters。不是“stage3每卡从此只用本地参数、不再通信”。CPU/NVMe offload把压力转移到其他存储及传输带宽。DeepSpeed是可组合这些策略的训练系统,不是一个新loss。

模型并行卡数不直接乘到全局batch;只有数据并行副本数影响相同microbatch设置下的样本总数。混合并行先明确每个维度卡数。

9.7 Scaling law 的因果链

经验拟合形式可写L(P,D)=L_inf+a/P^α+b/D^β。固定compute约PD时,扩大模型必须少喂数据,或反之;最佳点取决于拟合指数和目标。它是经验规律,不保证任意分布/算法都遵循同一系数。

Chinchilla强调固定训练预算下参数与数据的平衡,原研究。常见“约20 tokens/parameter”是特定估算附近的经验比例,不是所有模型的硬规定。若部署要服务大量请求,训练更小模型并多喂数据可能减少长期推理总成本,训练最优与生命周期成本最优可以不同。

9.8 Lab6 的高级架构概念:DeltaNet 与 hybrid

以下用S:[d_v,d_k]、列向量定义简化状态。线性attention的外积累积S_t=S_(t-1)+v_t k_tᵀ,输出o_t=S_t q_t。状态大小不随序列长度线性增长,但把历史压缩进固定状态,不能像softmax attention一样任意精确检索全部token。

Delta rule先预测旧状态在key上的值v_hat=S_(t-1)k_t,再写入误差:

St=St−1+βt(vt−St−1kt)ktT.S_t=S_{t-1}+\beta_t(v_t-S_{t-1}k_t)k_t^T.

它可由单步关联记忆loss1/2||S k_t-v_t||²对S做梯度下降得到(这里把更新前S作为求梯度点)。beta控制写入强度;若key归一化且beta合适,更新更可控。相比简单累加,它能修正同key的旧值。

一种gated形式先衰减\bar S_t=α_t S_(t-1),再S_t=\bar S_t+β_t(v_t-\bar S_t k_t)k_tᵀ,允许遗忘/更新。实际模型还有投影、卷积、归一化、门控和chunk并行等,此处不是完整Qwen生产实现。Gated DeltaNet原论文。

hybrid交替使用线性状态层和full attention层,折中长序列成本与精确检索。其缓存有full层KV和recurrent层状态两类,不能把所有层都套标准KV公式,也不能说整个hybrid模型decode内存对T完全常数。

9.9 MTP 训练与 Lab6 的具体差别

一般MTP让位置t的状态预测多个未来偏移,L=Σ_k λ_k CE(head_k(h_t),x_(t+k)),越远目标可用更小权重。偏移k的有效目标长度是T-k,不能把末端越界/填充纳入loss。

Lab6 ToyMTPModel对aux heads用hidden.detach():辅助loss只更新head,不训练backbone;主loss才传回backbone。它与“所有MTP目标共同塑造backbone”的版本不同。

代码answer_mask按“负责预测下一个答案token的位置”构造,offset>1仍复用同mask,可能把PAD当更远目标,应按目标索引重新生成各offset有效mask。benchmark又使用真实答案长度限制生成,未独立学习EOS;其exact-match评估有已知长度条件,不能当开放生成完整评测。

本地notebook引用SimpleDeltaNetMixer和build_layer_types,在该文件中未找到定义;从干净kernel逐格跑可能需要补齐。保持源文件不变,复习时把“未提供的实现”与“公式已证明”分开。

Muon在Lab6作为部分二维隐藏矩阵的优化器,其他参数用AdamW;其核心动机是对矩阵更新做近似正交化(通常Newton–Schulz迭代),不是对每个参数再做一次softmax。具体迭代与版本API不作为本包臆定必考内容;若新课讲到,需要另行按老师配方精读。

9.10 Checkpoint、验证与恢复训练

只保存model weights能继续做推理,却未必能严格接续训练。完整checkpoint常还要optimizer的momentum/Adam矩、scheduler步数、混合精度scaler、随机数状态、数据采样/迭代位置,以及模型/tokenizer配置。若恢复时学习率进度或数据顺序变了,轨迹就可能不同;这不等于权重文件损坏。

保存前确认分布式分片如何汇集或加载;把训练分片直接交给推理框架不一定可用,可能需要导出成其支持的权重格式。恢复后先核对global step、学习率、样本/token计数和验证loss,再继续长训练。toy周期序列、加法任务的验证,应保留独立样本和长度/进位等分组指标,避免只凭训练token accuracy宣布泛化。


上一章 · 返回首页 · 内容清单 · 下一章

Built with LogoFlowershow