MTP 白送 1.8x 加速、接受率还能当质量探针:从辅助 Loss 到推理加速的意外收获
训练时加一个 Multi-Token Prediction (MTP) 辅助 loss,目的是提升表征质量。但到了推理阶段,这个”免费赠品”忽然变成了 speculative decoding 的 draft head —— 不需要额外训练 draft model,不需要额外显存加载小模型,直接拿训练时的 MTP module 当 drafter,acceptance rate 85-90%...
训练时加一个 Multi-Token Prediction (MTP) 辅助 loss,目的是提升表征质量。但到了推理阶段,这个”免费赠品”忽然变成了 speculative decoding 的 draft head —— 不需要额外训练 draft model,不需要额外显存加载小模型,直接拿训练时的 MTP module 当 drafter,acceptance rate 85-90%...
某 3B 模型的代码预训练实验,recompute-num-layers 从 16 改到 24,loss 明显偏高。教科书说 activation recomputation “对训练无影响,只是用计算换内存”——但在 BF16 精度下,这个假设在 24/32 层时不成立。 1. Activation Recomputation 的教科书描述 标准说法:前向传播时不保存中间层的 ac...
0.6B 对比实验跑了两周,grad-norm 曲线一直稳稳地贴在 0.21 附近。两个结构变体(v3.0 和 v3.5)几乎重合,我一度以为 gradient clipping 这个超参数根本不重要——反正 clip threshold 设的 1.0,norm 才 0.21,差着快 5 倍,clipping 永远不会触发。 直到第 47000 步。 v3.5 结构的 grad-norm...
一个 3B 多模态模型的配置文件里写着 tie-embeddings=yes、embed-layernorm=yes、vocab_size=100096、hidden_size=2560。这几个数字背后藏着一笔精确的参数账:embedding matrix = 100096 × 2560 = 256,245,760 参数,占 2.46B 总参数的 10.4%。Weight tying 让这 ...
一个 3B 参数的端侧模型,加载 tokenizer 的代码长这样: tokenizer = AutoTokenizer.from_pretrained( "30g_100K_identity", add_bos_token=False, add_eos_token=False, use_fast=False ) 看起来人畜无害。但打开词表一看:voca...
我们拿到某 3B 模型的跨层 KV 共享版本,整体指标涨了 0.3%,但文本榜单掉了 1.9%——BFCL 直接掉了 10 个点(39.3 → 29.0),LV_multifieldqa 掉了 14.8(42.5 → 27.7),AIME2025 pass@16 掉了 10(43.3 → 33.3)。怎么办? 这不是一个简单的”超参没调好”能解释的问题。Training loss 对比 b...
某 3B 模型预训练实验中,SWA128 的 loss 比 SWA512 低了 0.003,我们本以为找到了更优配置。评测结果出来傻了——ceval 直接掉了 7 个点。 这篇文章记录这次 Sliding Window Attention + Gated Attention 的完整实验过程,以及它教会我们的一个朴素道理:loss 不是唯一的 North Star。 实验背景:模型与训...
一个 3B 模型训练到中后期,RMSNorm 最后一层的 learnable scalar 从初始值 1.0 悄悄漂移到了 56。训练 loss?纹丝不动。验证 perplexity?看不出异常。直到模型做 INT8 量化部署——精度断崖式下跌,top-1 accuracy 掉了 12 个点。这篇文章从这个真实 case 出发,把 softmax 的数值陷阱、温度调控、精度问题串成一条线。 ...
13B 模型预训练 500B tokens,仅仅把数据组织方式从 Concatenation 换成 Best-Fit Packing + Attention Masking,HumanEval 的 undefined variable rate 就降了 52.7%。没改一行模型代码。 这个结果让我重新审视了一个长期被忽略的工程细节:我们喂给模型的 token sequence 到底是怎么拼...
引子:一次出乎意料的长文 Loss 恶化 某 3B 模型项目中,我们尝试将 SWA(Sliding Window Attention)与 Hybrid RoPE 组合使用。假设很简单:SWA 节省长序列显存,RoPE 负责长距离位置建模,各司其职。短文本 PT(Pretraining)阶段的指标也确实验证了这个预期——loss 下降了 0.002,一切看起来很美好。 但切到长文本 FD(...
某 3B 多模态模型完成了 5.2T token 的 PT-1 阶段,多模态指标(OCRBench、物体识别)全线偏低。排查了数据、模型结构、学习率……最后发现是训练脚本里多了一个 Megatron flag:--calculate-per-token-loss=true。这个 flag 把多模态梯度贡献从 16% 稀释到了 0.94%——整整 17 倍。 一个 boolean 参数,吃掉...
两份优化器配置,同一个 3B 模型底座,一份跑纯文本预训练,一份跑多模态对齐。把它们的超参数差异摊开来看,就能直观理解为什么 Adam 在大规模训练中需要如此多的”场景特化”——以及为什么业界正在转向 Muon。 一个 3B 模型的两套优化器配置 某 3B 模型的纯文本预训练基线: optimizer: AdamW beta1: 0.9 beta2: 0.95 epsilon: 1...