Qian, Cheng

只在 Answer 上算 Loss、MTP λ=0.3 到底带来多少:从实验配置反推 Loss 设计的工程决策

翻一个 3B 多模态模型的 SFT 配置文件,第一个值得注意的参数是 only-answer-loss=yes。这个开关意味着:system prompt、user message、所有非 answer 的 token 全部被 mask 掉,只有 assistant response 那部分贡献 loss。听起来理所当然?但它背后藏着一条影响全局的工程推导链——从 loss mask 策略,...

蒸馏就是 RL、学生能超越老师:On-Policy Distillation 统一框架与六个落地范式

最近一段时间,行业里关于「蒸馏」和「RL」的边界越来越模糊。2026 年初的几篇工作从理论上证明了 On-Policy Distillation (OPD) 与 KL 约束的 RL 是严格等价的——这不是 analogy,是数学证明。这个结论的工程意义极其深远:所有成熟的 RL trick 可以直接搬到蒸馏场景,而且学生模型可以超越老师。 这篇文章从这个统一视角出发,梳理我们在实际 pip...

KV Cache 砍 90%、推理提速 7x:六个正交架构创新如何叠加生效

做了几年大模型架构相关的工作,越来越感觉到:好的架构设计不是在”调参数”,而是在”找结构”。参数是连续的、可优化的,而结构是离散的、需要洞察的。这篇文章整理了最近一批让我觉得”有品味”的架构设计,它们的共同特征是:找到问题的正交分解,然后用结构性手段各个击破。 1. 双轴 KV Cache 压缩:head 维度 × token 维度 KV Cache 是长上下文推理的内存瓶颈。先前的...

seq_len 从 4K 推到 16K、CP=2 一开就慢了 20%:Ulysses Context Parallelism 的工程取舍全记录

开场:一个 FD 阶段的性能骤降事故 我们在某 3B 多模态模型的 Fast Decay (FD) 阶段,需要将序列长度从 4096 推到 16384。这是长上下文训练的标准操作——在短序列完成主体预训练后,拉长序列让模型学习长距离依赖。 训练集群:2048 × L40S,GBS=1024。 改动看起来很简单: # PT 阶段 (seq=4096) context-parallel-...

KV Cache 共享让文本榜单掉了 1.9%,但 RL 四轮迭代后反超 baseline 1.4%: 架构退化的 RL 补偿机制

某 3B 端侧模型为省 KV Cache 做跨层共享(最后 8 层复用第 24 层的 KV),SFT 后文本榜单直接掉了 1.9%——工具调用 -10.3,长文检索 -14.8,推理 -10。看起来方案要放弃了。但四轮 RL 迭代后,模型不仅恢复了退化,还反超 baseline 1.4 个点。 这个案例揭示了一个重要的工程规律:架构层面的 trade-off 不应在 SFT 阶段就下定论,...

SwiftKV 预测 12 层 loss 最低, 但最终选了 16 层: 端侧首词提速 35% 的工程决策

某 3B 端侧模型做 SwiftKV 层数消融,发现 12 层共享 loss 最低(-0.010),但最终选了 16 层(-0.009)。差那 0.001?因为 16 层在目标芯片上首词提速 35%,KV cache 省了 50%。这是一个”loss 不是唯一判据”的典型工程决策。 SwiftKV 做了什么 SwiftKV 的核心思路很简单:与其让每一层都独立计算自己的 KV cac...

接受率从 0% 调到 90%:MTP 投机解码的工程调优全记录与 Drafter 质量诊断

一个真实的 Debug 案例:接受率为 0% 上个月,我们在部署某 671B MoE 模型的投机解码时,遇到了一个令人崩溃的问题:acceptance rate 恒定为 0%。每一个 draft token 都被 target model 拒绝,投机解码不仅没有加速,反而因为额外的 drafter 推理开销导致整体吞吐下降了 15%。 五步排查过程 第一反应是翻代码,逐项检查: ...

把 point 当普通文本训练, UIAgent 指标直接崩了: 多模态 Special Token 的隐形碰撞

某 3B 多模态模型做 special token 重命名(防止与纯文本冲突),UIAgent 指标直接崩了。其它评测全部正常。排查了一天发现原因荒谬地简单:<point> 没有进重命名列表,被当成了普通文本训练。把它注册为 special token 后指标立即恢复。 这篇文章记录这个 bug 的完整排查过程,以及它揭示的 special token 工程陷阱。 背景:为什...