Soft-MTP:把多 token 预测训练“做对”(Multi-Token Prediction Done Right)

多 token 预测(MTP,让模型额外预测后面几个 token)已是常见的预训练配方,既提升下游表现,也能给投机解码当草稿头。作者把 MTP 的交叉熵梯度精确拆成两部分:一个把 MTP 头拉向模型自己下一词分布的 KL 自蒸馏项(有用、能提升投机解码),和一个信噪比很低、会干扰学习且随规模变严重的残差。Soft-MTP 用“直通梯度路由”只保留 KL 那一项,复用现有的交叉熵计算,不需要整词表的 logits 矩阵,兼容融合交叉熵内核。

多 token 预测(MTP,让模型额外预测后面几个 token)已是常见的预训练配方,既提升下游表现,也能给投机解码当草稿头。作者把 MTP 的交叉熵梯度精确拆成两部分:一个把 MTP 头拉向模型自己下一词分布的 KL 自蒸馏项(有用、能提升投机解码),和一个信噪比很低、会干扰学习且随规模变严重的残差。Soft-MTP 用“直通梯度路由”只保留 KL 那一项,复用现有的交叉熵计算,不需要整词表的 logits 矩阵,兼容融合交叉熵内核。

点赞 9 · 代码星数 6

理由

  • 改动极小:对标准 MTP 是一行代码,不加参数,作者称没有可测的额外开销;同时支持 DeepSeek 式和 Meta 式 MTP。
  • 作者称在 167M 到 1.2B 的每个规模上,下一词困惑度更低、投机解码更快、零样本准确率更高,1.2B 微调后数学和代码推理更强,并在多数指标上不输直接最小化 KL。
  • 可复现:四个规模 × 三种目标(NTP、MTP、Soft-MTP)共 12 个检查点放在抱脸,训练配置、投机解码评测脚本都在,tests/ 里能在 float64 下验证梯度与显式 KL 一致;MIT 许可。

用法

  • 代码:git clone github.com/JaydenTeoh/Soft-MTP → pip install -r requirements.txt → python -m src.fetch_data --shards 5(预分词的 FineWeb-Edu,每个配置训练 31.5B token,至少 4 个分片,组装时约需 120 GB 磁盘);Muon 优化器需要 PyTorch 2.9 以上。
  • 训练:torchrun --standalone --nproc_per_node=4 -m src.train --config configs/167m_fineweb.yaml --objective soft_mtp(换成 hard_mtp / direct_kl / ntp 做对照)。
  • 看现成模型:AutoModelForCausalLM.from_pretrained("JaydenTeoh/soft-mtp-689m-model", trust_remote_code=True),分词器用原版 gpt2;投机解码评测用 python -m src.eval_spec --ckpts …。
  • 要搬到自己的训练代码里,看 src/models/loss.py 里的 combined_mtp_loss()。

风险

  • 放出的都是 1.2B 以下、只在 FineWeb-Edu 上训练的研究用小模型,不是能直接拿来用的对话模型;更大规模是否同样有效没有验证。
  • 价值主要在预训练阶段,要自己从头训才能受益;训练评测默认接 Weights & Biases。
  • 摘要没有给投机解码加速的具体倍数,效果为作者报告;README 提醒墙钟加速依赖 GPU,对比要在同一台机器上跑。

打开 · 代码 · 抱脸论文页

Hugging Face Daily Papers

浏览最新 AI 动态