Turning the TIDE: Cross-Architecture Distillation for Diffusion Large Language Models

PKU YuanGroup · Gongbo Zhang, Wen Wang, Ye Tian, Li Yuan · 2026-04-29 · arXiv:2604.26951
关键词: dLLM · Knowledge Distillation · cross-architecture · cross-tokenizer · BD3LM · LLaDA2 · WeDLM

速读卡片 (TL;DR)

一句话:第一个把 8B/16B dLLM 教师跨架构、跨 tokenizer 蒸到 0.6B dLLM 学生的框架。三个解耦组件:TIDAL(timestep × training 进度双轴 λ)、CompDemo(互补掩码二次前向)、Reverse CALM(反向 chunk-BCE,梯度有界)。

+1.53
8 benchmark 平均提升
48.78
HumanEval (vs AR 32.30)
22×
vs 16B 教师 内存压缩

立场:把"AR-KD 老问题"(MiniLLM/DistillBERT/TAID)系统地搬到 dLLM,但不是直接套——三个组件各自针对 dLLM 独有的"timestep 不可靠 / 重度掩码贫信号 / vocabulary 错位"三个 bug。


1 · 动机:为什么 dLLM 需要跨架构 KD

1.1 历史脉络:dLLM 的"规模诅咒"

Diffusion language model (dLLM) 这条线,从 D3PM (2021) → MDLM (2024) 到最近的 LLaDA / Dream / WeDLM,走的是一条"用 iterative denoising 替代左到右 AR"的路。它的卖点是双向 context + 并行 decoding——对 code、structured generation 这种"全局一致性"任务理论上更友好。

但有个尴尬现实: 想拿到 SOTA 必须烧到 8B 起步。具体看:

对比同尺寸的 AR Qwen3-0.6B (1.2 GB / 51 tokens/s),dLLM 在小尺寸上一直没竞争力。0.6B 的 BD3LM 平均分只有 32.67,被 0.6B AR 的 40.91 甩开 8 分。这是部署侧的硬墙。

2024–2026 年同期,AR 阵营已经把 KD 玩成熟了:DistilBERT (2019)、MiniLM (2020)、MiniLLM (2024)、DistiLLM、GKD (2024)、TAID (2025)。TAID 那条"逐步把 target 从 student 拉到 teacher"的渐进路线特别有启发性,但它只活在 AR 世界。

1.2 为什么"跨架构 KD"是自然解法?— 别的方案为什么不够

方案核心动作对 dLLM 0.6B 的代价
从头训一个 0.6B dLLM纯 SFT,不用教师就是那个 32.67 baseline,瓶颈没破
同架构 step distillation (CDLM, DDD, LSD, SDTT)同一个 model,只压denoising 步数不缩参数量,16B 还是 16B
把 8B AR 蒸到 0.6B AR (MiniLLM, GKD)AR-to-AR token KL学生还是 AR,丢掉了 dLLM 的并行/双向优势
从 dLLM 教师蒸到 dLLM 学生 + 不同架构本文 TIDE同时拿到 dLLM 性质 + 小尺寸

关键洞察: dLLM 社区已有的 KD 方法全部假设 teacher = student,只在 step 维度做压缩。这是"多走几步等价于多调几次"的物理观点。但 deployment 真正的痛点是参数量(决定显存 / 移动端可达性),不是 step 数。

1.3 为什么这事不平凡 — dLLM 跨架构 KD 的三个独有难点

把"AR 的 KL-distillation 直接套到 dLLM"会撞上 AR 世界根本不存在的三堵墙。论文把这三堵墙总结为temporal / spatial / vocabulary barriers,我把它翻译成更工程的语言:

难点 ①: Teacher 的可靠性随 timestep 剧烈变化(temporal)

dLLM 训练时 timestep t ∈ [ε, 1)随机采样的。t ≈ 0 时几乎不掩码,教师看着完整句子做预测,可靠;t ≈ 1 时几乎全掩码,教师就是瞎猜。如果学生一视同仁地 mimic 教师,在高 t 这一片段实际上是在学噪声。

AR 世界没这个问题——AR 教师永远看到完整 left context,可靠性恒定。

难点 ②: 重度掩码下的 spatial 信号贫乏(spatial)

就算我们只在低 t 区间蒸,中等 t (e.g. 0.5) 时教师看到一半掩码 [M]、一半 token,产出的 logits 仍然。教师自己也是在猜——"这个被掩盖位置应该是 ya 还是 sé?"它给的 distribution 信息含量低,蒸不出什么 spatial knowledge。

难点 ③: 不同 tokenizer 让 token-level KL 数学上不存在(vocabulary)

LLaDA2 用 Ling-series 的 V_T,BD3LM/Qwen3 用 Qwen 的 V_S。两个词表不同 → 同一个文本被切成不同 token 序列、不同长度、连分布的支撑集都不同KL(p_T || p_S) 的两个分布根本不在同一个空间,这是 type error,不是数值精度问题。

论文的解题策略很干净:三个组件 = 三个独立 patch: TIDAL 修 ① temporal · CompDemo 修 ② spatial · Reverse CALM 修 ③ vocabulary。 模块解耦,任意 pipeline 可以挑组合。同 tokenizer 的就不用 Reverse CALM,跨 tokenizer 的就不用 TIDAL+CompDemo(实验证实)。

2 · 背景速查

2.1 关键术语

术语含义
dLLMDiffusion language model: 通过迭代 denoising 一个全 mask 序列来生成文本
Diffusion timestep tt ∈ [0, 1),掩码比例。t=1 几乎全掩码,t=0 几乎不掩码
[MASK] token占位符;dLLM 在这些位置做预测
BD3LMBlock diffusion: AR 与 diffusion 之间插值,按 block 内部 bidirectional、block 之间 AR
LLaDA / LLaDA2Ant + Renmin Univ. 的大尺寸 dLLM;LLaDA2.0-mini 是 16B MoE
WeDLM-8B8B dense dLLM,从 Qwen3-8B-Base 初始化(因此与 BD3LM 学生同 tokenizer)
CALM / ALMChunk-level / Approximate Likelihood Matching: 跨 tokenizer KD 的对齐技术
tokenkitMinixhofer 的工具,做 byte-level chunk 对齐
TAID"Temporally Adaptive Interpolated Distillation" — 用 (1-λ)·s + λ·t 插值 target,λ 沿 training 进度走 — 本文 TIDAL 是它的 dLLM 扩展
mode-covering / mode-seekingKL(p||q) 是 mode-covering(q 要覆盖 p 所有 mode);KL(q||p) 是 mode-seeking(q 集中到一个 mode)
forward / reverse BCEBCE(p_t || p_s) vs BCE(p_s || p_t):谁是"真值",谁是"被训"

2.2 dLLM 训练流程速复习

  1. 从 dataset 取 clean sequence x = (x₁, ..., x_L)
  2. 采样 timestep t ∈ [ε, 1)
  3. 按比例 t 随机掩码 → x_t,被掩位置集合 M
  4. 模型 forward x_t,只在 M 位置 log-softmax 预测原 token
  5. Loss = CE(model_prediction[M], x[M]) — 即只在 mask 位置算交叉熵

蒸馏额外: 教师 forward 同样的 x_t,产出 logits;学生不仅匹配 ground-truth,还匹配教师 logits。"什么时候、用谁的 logits、怎么算 loss"就是本文要解决的三个问题。


3 · 总览:三个组件的角色分工

x_t noised input ① TIDAL when to learn λ_t = λ_train × (1−t) timestep × progress → 修 temporal bug ② CompDemo what context M = M_A ⊔ M_B 2× teacher forward → 修 spatial bug ③ Reverse CALM how to project BCE(p_s || p_t) bounded gradient → 修 vocabulary bug Student Loss L_CE + w · L_dist (at masked positions) → 0.6B BD3LM 学生 ∇θ_S student grad
三个组件的解耦关系。TIDAL 决定什么时候多听教师(low t、训练后期);CompDemo 给教师补 context 让它说点有用的;Reverse CALM 提供一个跨 tokenizer 也能算的代理 loss。三者可以独立开关——同 tokenizer 不需要 ③,跨 tokenizer 论文实验里发现 ① ② 反而起反作用(后面 §6 解释)。

从 pipeline 角度看,论文做了两条 pipeline 的实验:


4 · TIDAL — Time-Iteration Dual-Axis Lambda 双轴调度

4.1 问题再叙述

TAID (Shing 2025, AR-only) 提出一个干净的想法:学生不要直接 mimic 教师,而是 mimic 一个"插值 target" r = (1−λ)·s + λ·t。λ 从训练开始的 ~0.1 慢慢升到 ~0.9,等价于"先让学生信自己,再慢慢把自信交给教师"——避免训练早期学生还很弱时被教师强行带跑造成 representation collapse。

把 TAID 直接套到 dLLM 的问题: λ 只沿 training-progress 一个轴变,不感知 timestep。dLLM 里有些 batch 是 t=0.05(教师可靠),有些是 t=0.95(教师瞎猜),用同一个 λ 对待是错的。

4.2 TIDAL 的双轴公式

λ_t = λ_train × (1 − t)
λ_train = λ_init + (λ_max − λ_init) × ½ (1 − cos(π·p))

解读:

TIDAL: λ_t 沿两个轴的曲面 diffusion timestep t (0 = 不掩码 → 1 = 全掩码) λ_t (教师权重) 0.9 0.7 0.5 0.3 0.1 0 0.25 0.5 0.75 1.0 p=0.1 p=0.5 p=0.9 t→1: 教师瞎猜 → λ_t→0, 不蒸 t→0: 教师可靠 → λ_t→λ_train 可选 w(t)=exp(−(t−0.5)²/(2·0.15²)) 强调中段
三条曲线对应训练早期 (p=0.1)、中期 (p=0.5)、后期 (p=0.9)。每条线沿 t 单调下降,t=1 处一律为 0(不蒸)。后期训练 + 低噪声(左上)是教师权重最高的 sweet spot。背景的 Gaussian 阴影展示 optional 的 midrange weight w(t),用 σ=0.15 加权 t≈0.5 附近。

4.3 公式细节: Loss

r_t = softmax((1−λ_t)·s + λ_t·t / T) — detached
L_TIDAL = D_KL( r_t || softmax(s/T) ) × T²

注意几点:

4.4 Worked example: 一个具体 token 的 λ_t 计算

训练第 5000 step / 共 50000 step,所以 p = 0.1 → λ_train = 0.1 + (0.9−0.1) × ½(1−cos(0.1π)) ≈ 0.1 + 0.8×0.024 ≈ 0.119

本 batch 采样到 t = 0.3(掩码 30%)。所以 λ_t = 0.119 × (1−0.3) = 0.083

假设某 mask 位置(原 token 是"是"):

这时学生几乎完全 mimic 自己当前预测,只被教师轻轻"拽"了一点。这正是 p=0.1 早期训练应该的行为——避免还没学好就被强行同化。

到了 p=0.9, t=0.05 的情形: λ_train ≈ 0.876, λ_t ≈ 0.832,target 的 86% 能量来自教师 — 学生此时已经成熟,被教师"猛拽"也学得动。

4.5 反向论证:不要双轴会怎样?

Ablation Table 2 给的硬数据:

变体HumanEvalAvg
w/o timestep axis (退化为 TAID 单轴)43.9032.88
w/o training axis44.5132.97
Full TIDAL46.9533.14

移除 timestep 轴 HumanEval 掉 3.05 分——是所有 ablation 里最大的。这反过来说明:dLLM-KD 里 timestep 不是 nice-to-have,是load-bearing


5 · CompDemo — 互补掩码二次前向

5.1 问题

就算我们用 TIDAL 把高 t 区间下采,中等 t (0.4–0.6) 还是要蒸——这一段教师面对一半 token / 一半 [M],预测有信息但不够锐。能不能想办法让教师在不增加学生输入信息的前提下,看到更多 context?

5.2 解法:互补掩码,跑两次教师

把 mask 集合 M 随机切成两半 M_A ⊔ M_B,|M_A| ≈ |M_B| ≈ |M|/2。然后:

关键:每个被蒸的位置,教师都比学生少看了 ~一半的 [M](因为另一半被揭开了)。等价于教师在更低的有效 timestep 下做预测。学生还是面对原始 x_t,没作弊。

CompDemo: M = M_A ⊔ M_B,跑两次教师 学生看到: No [M] [M] la [M] [M] x_t (4 个 [M] 位置) 随机划分 M = M_A ⊔ M_B(假设 idx {1,2}∈A, {4,5}∈B): Pass 1 (reveal M_A): No ya la [M] [M] → teacher 取 M_B 处 logits = t⁽¹⁾ Pass 2 (reveal M_B): No [M] [M] la ni fa → teacher 取 M_A 处 logits = t⁽²⁾ 合并 t_final[M_A] ← t⁽²⁾[M_A] t_final[M_B] ← t⁽¹⁾[M_B] 每个 mask 位置都得到 "另一半被 reveal"的 教师预测,context 增加 cost: 2× teacher forward
例子:6 token 序列,4 个 mask。划分后 Pass 1 揭示 M_A={pos 1,2} → 教师在剩下两个 [M] 上预测;Pass 2 对称。最终每个 mask 位置都拿到了"对方 mask 已揭"条件下的教师预测,等效于把教师面对的 timestep 砍半。
成本: 教师 forward 翻倍 → 总训练时间 +50%(教师 frozen,不算 backward)。

5.3 反向论证

移除 CompDemo 在 ablation 里掉 0.17 平均分,HumanEval 掉 2.44 分。结构化输出(代码)对"教师是否给出锐利预测"特别敏感——code 的 syntax 经常需要严格匹配,教师在重度掩码下乱猜会污染学生的 code 认知。

这条 trick 在 dLLM 之外没有等价物。AR 教师本来就看着完整 left context,无所谓"补 context";只有 dLLM 的 bidirectional + masked 设定才能玩"互补掩码"这套。

6 · Reverse CALM — 反向 chunk-level BCE

6.1 问题再细化

LLaDA2 (Ling tokenizer) 和 BD3LM (Qwen tokenizer) 编码同一段文本:

"I don't wanna"
Ling tokenizer:  ["I", "don", "'t", "wanna"]      → 4 tokens, V_T 词表
Qwen tokenizer:  ["I", "do", "n't", "wan", "na"]  → 5 tokens, V_S 词表

KL(p_T(·|x) || p_S(·|x)) 数学上不存在——两个 token 不在同一空间。怎么办?

6.2 CALM 的核心 idea: chunk-level scalar 概率

用 tokenkit 在字节层面对齐两条 token 序列,找出最小的"对齐单位":两边都能被整数个 token 切完的最小 byte span,称为 chunk。

Chunk cTeacher tokensStudent tokens
c₁ = "I""I""I"
c₂ = "don't""don" + "'t""do" + "n't"
c₃ = "wanna""wanna""wan" + "na"

对每个 chunk,定义其概率为 chunk 内所有 token 的联合 log-probability 之和(再 exp/temperature 化):

LP_S = lp_S · A_S,   LP_T = lp_T · A_T   (matrix mult, A 是 binary 对齐)
p_s^c = exp(LP_S^c / T),   p_t^c = exp(LP_T^c / T)

关键:p_s^c 和 p_t^c 都是 [0,1] 之间的标量(不是分布),代表"模型生成这个 chunk 的概率"。两边都是同样的物理量,可以直接比较。

6.3 Forward CALM 的 bug

自然 baseline = 在 p^c 上做 BCE,把 teacher 的 chunk 概率当 soft label:

L_Fwd-CALM = − [ p_t^c · log p_s^c + (1−p_t^c) · log(1−p_s^c) ]

梯度有个问题:对 p_s^c 求导,系数 ∝ p_t^c / p_s^c − (1−p_t^c)/(1−p_s^c)。Cross-tokenizer 对齐本身有噪声(byte 切分不完美 / 教师对某 chunk 概率高但学生还没学到)→ p_t^c → 1, p_s^c → 0 的情况频繁,gradient 直接爆炸

6.4 Reverse CALM:把 BCE 翻过来

L_Rev-CALM = − [ p_s^c · log p_t^c + (1−p_s^c) · log(1−p_t^c) ]

把 p_s 和 p_t 的角色互换。对 p_s^c 求导:

∂L / ∂p_s^c = −[log p_t^c − log(1−p_t^c)] = −logit(p_t^c)

这个梯度系数只依赖于 fixed teacher 的 p_t,与 p_s 无关 → 天然有界。

Forward vs Reverse CALM 的梯度行为 Forward CALM (爆炸) p_s^c |grad| → ∞ → 0 p_t=0.9 fixed Reverse CALM (有界) p_s^c |grad| |logit(p_t)| 且 p_t≈0.5 时 logit(p_t)≈0 → 自动过滤"教师不确定"的 chunk
左:Forward CALM 在 p_s→0 时梯度爆炸——这正是训练初期、cross-tokenizer 对齐有噪声时的常态。右:Reverse CALM 的梯度系数与 p_s 无关,且 p_t≈0.5 时自动趋零(教师对该 chunk 没把握 → 不传梯度)。这就是论文说的 "dual-end noise filtering"。

6.5 Worked example 数字

设 chunk c = "don't",T=1。某 step 时:

Forward CALM:

Reverse CALM:

学生在不同 p_s 下,Reverse 的梯度始终 ≈ 2.44(只看 teacher),而 Forward 的梯度可以从 −∞ 变到 +很大,数值不稳定。

6.6 第二个 bonus: 噪声过滤

如果某 chunk 在 cross-tokenizer 对齐里是"伪 chunk"(byte 切分歧义),教师对它的 p_t^c 应该接近 0.5(教师也不确定)。Reverse CALM 此时 logit(p_t) ≈ 0 → 梯度 ≈ 0,该 chunk 不参与训练。这就是免费的 noise filter。

另一头:学生对该 chunk 还没信心(p_s^c 小),∂p_s^c/∂θ 小,grad 小——再过滤一次。这是"dual-end" 的含义。

6.7 数学小注:Reverse CALM = Bernoulli KL

论文 Appendix C 推导:

L_Rev-CALM (up to const) = KL_Bern(p_s^c || p_t^c)

所以 Reverse CALM 是mode-seeking 的(student 的 chunk 概率应该 collapse 到 teacher 的某一个)。这与 Forward(mode-covering)对应,呼应 MiniLLM 那条"AR-KD 应该用 reverse KL"的研究线。但这里换到了 scalar Bernoulli 空间,而不是 token-level distribution 空间。

为什么 TIDAL 与 Reverse CALM 是 incompatible 的?论文里的解释:TIDAL 是"混合 target"(progressive curriculum),它假设直接的 forward 蒸馏存在不稳定问题,需要慢慢拉。Reverse CALM 本身已经是 bounded + mode-seeking,再加 TIDAL 等于"二次保险",反而可能阻止学生收敛到正确 mode。实验里 cross-tokenizer + Reverse CALM + TIDAL 的组合(TIDE-Shared 在 cross-tokenizer pipeline 上)平均分 33.83,比纯 Reverse(34.20)还低。

7 · 实验关键结果与读图

7.1 主表精读 (8 benchmark, two pipelines)

BenchAR Qwen-0.6BBD3LM (no distill)Cross-tok TIDE-Cross (best)Shared-tok TIDE-Shared (best)
GSM8K59.6045.5652.24 ↑48.98 ↑
MATH32.4013.0813.2011.16
BBH41.5026.3227.37 ↑26.79 ↑
MMLU-Pro24.7013.8014.52 ↑14.48 ↑
HellaSwag47.4039.2839.88 ↑40.50 ↑
MMLU52.8039.1539.59 ↑39.92 ↑
HumanEval32.3046.3448.1748.78
MBPP36.6037.8038.6037.80
Avg40.9132.6734.2033.55

关键观察

  1. Reasoning task 上 BD3LM 学生远不如同尺寸 AR(GSM8K 45.56 vs 59.60,MATH 13.08 vs 32.40)。蒸馏只能挽回一部分(GSM8K 到 52.24,MATH 几乎不动)。dLLM 在小尺寸上的 reasoning 短板 KD 救不全。
  2. Code task 上 BD3LM 学生反而压过 AR(HumanEval 46.34 vs 32.30 已经赢了,蒸到 48.78 进一步扩大优势)。这是 dLLM 真正发光的领域。
  3. 每个 pipeline 偏爱自己的 native 策略。Cross-tokenizer 用 Reverse CALM(TIDE-Cross 列)拿 34.20;Shared-tokenizer 用 TIDAL+CompDemo(TIDE-Shared 列)拿 33.55。交叉用 (TIDE-Cross 在 shared,TIDE-Shared 在 cross)各掉 ~2.7 / ~0.4 分,符合方法论预期。

7.2 推理效率 (Table 3)

ModelParamsPeak Mem256-tok LatencyTokens/s
BD3LM-0.6B (distilled)0.6B1.4 GB6.25 s41.0
WeDLM-8B8.2B15.5 GB6.79 s37.7
LLaDA2.0-mini16.3B31.3 GB32.55 s7.8
AR Qwen3-0.6B0.6B1.2 GB4.99 s51.3

0.6B 学生 vs 16B 教师: 22× 显存压缩 + 5× 加速。但相比同尺寸 AR (51.3 tokens/s) 还慢 ~20%——这是 BD3LM 多步 denoising 的开销,KD 改不了。


8 · 为什么 HumanEval 涨幅最大?

这是论文最有意思的结果,但作者的解释比较短(就一段:"parallel generation 维护 global coherence,适合 structured output")。我想细化一下:

  1. Code 是高度结构化的 — bidirectional context 是真有用。函数体的开头和结尾要配对(def f():return ...),括号要平衡。AR 模型从左到右生成时,生成 return 时还看不到后续可能的 except:。BD3LM 在一个 block 内同时知道前后位置,优势天生。
  2. Code 的 token-level distribution 比自然语言更尖锐。"for i in" 之后大概率是 "range"——教师概率分布有明显 mode。Reverse CALM 的 mode-seeking 性质正中这个特性。
  3. HumanEval 的 prompt+test 长度短 (256 tokens 内能搞定),恰好是 BD3LM 512 序列长度的甜点。MATH 和 GSM8K 的推理过程很长,会走出 BD3LM 训练的 block 范围,multi-block 的 AR 跳跃式生成削弱 bidirectional 优势。
  4. CompDemo 在 code 上收益最大(ablation 移除 CompDemo,HumanEval 掉 2.44 — 八个任务里第二大)。原因猜测:code 的 syntax 严格,教师在重度掩码下乱猜带来很大损失;给教师补一半 context,教师才能给出锐利的 code-specific 概率分布。
  5. 蒸馏后的 0.6B BD3LM 在 HumanEval 上 (48.78) 甚至超过了 8B 教师 WeDLM?论文没明示 WeDLM 的 HumanEval,但从 Table 1 推测教师并非压倒性强 — 教师本身 + 学生的 BD3LM 结构 + dataset 重组合,最终甚至能提纯 code 能力。
反过来想为什么 MATH 涨不动?MATH 13.08 → 13.20,几乎 noise。可能原因: MATH 答题需要长链推理(CoT 几百 token),BD3LM 的 block diffusion 在 chain-of-thought 上没有 AR 那么自然。教师本身也没那么强(8B/16B 教师在 MATH 上未必比 0.6B AR 的 32.40 高很多)。蒸馏改不了"学生架构本身就不擅长这个任务"的事。

9 · 与同类工作对比

方法架构假设Tokenizer关键 trick与 TIDE 对位
DistilBERT (2019)BERT → BERT (减层)token-level KL + masked LM loss同 tokenizer + 同架构,无 dLLM 特性
MiniLM (2020)BERT → 小 BERTself-attention KD(QKV scaled dot)关注 attention map 对齐,不动 logits;不适合 dLLM 的 timestep 不可靠问题
MiniLLM (2024)AR → ARReverse KL,避免 mode-covering 的"mean over modes"本文 Reverse CALM 的精神继承者(reverse 比 forward 好),但搬到 chunk-scalar 空间
TAID (2025)AR → ARtraining-progress 上单轴 λ 插值 targetTIDAL 的 1D 前身;TIDE 加了 timestep 第二轴
ALM / CALM (2024–25)AR cross-tokenizer不同byte-level chunk 对齐 + chunk-prob BCE本文 Reverse CALM 的原始基础,TIDE 把它改成 reverse 方向 + 引入 dLLM mask
CDLM / DDD / LSD / SDTT (2024–25)dLLM → dLLM 同架构step compression(把 N 步压到 K 步)不动参数量,只压步数 — 与 TIDE 正交
EAGLE-3 (speculative decoding)AR(verifier) + 小 draftmulti-layer hidden KD + training-time test层级 KD(hidden states),inference 时用;TIDE 是 logit-level KD,training 时用 — 本质不同

9.1 与 EAGLE-3 多层 KD 的具体差异

有读者可能会问: EAGLE-3 也是 KD,也是大教师 → 小学生(draft head 比 base 小得多),为什么不能直接套?

9.2 与同期 dLLM-KD 工作的真正新意

2024–2025 的 dLLM-KD(CDLM/DDD/LSD/SDTT)全部假设 student = teacher 同架构(只压 step)。本文是第一个承认 cross-architecture 才是更值钱的方向 + 把它跑通。这是 framework 级别的开拓,不是 incremental 改进。


10 · 局限 / 个人 take / 待验证问题

论文承认的局限

我的 take

  1. 论文最 underrated 的贡献其实是把 ALM 的 forward 翻成 reverse 这个微小改动。Forward CALM 是 ALM 原版,本文做的核心事情就是分析 forward 的梯度爆炸 + 用 reverse 修。这个 trick 可以直接搬到任何 cross-tokenizer KD(不只是 dLLM)。
  2. TIDAL 的两个轴本质上是 TAID(progress 轴)+ "教师可靠性 mask"(timestep 轴)。timestep 这个轴是 dLLM specific 的,但思想是普适的:任何"教师可靠性随时间变化"的 KD 都可以加这一轴。例如 RL-distillation 里教师在某些 state 上不可靠,就该降 λ。
  3. CompDemo 是非常 dLLM-native 的 trick,搬不走。但成本 +50%(虽然论文说"忽略不计")在 100B+ 教师上会很贵。
  4. 整篇论文最反直觉的发现:cross-tokenizer pipeline 用 native 策略只赢 0.37 分,shared-tokenizer 用 native 策略赢 2.76 分。这意味着 Reverse CALM 鲁棒性强(任何 pipeline 都能接近最佳),而 TIDAL+CompDemo 的好处更"挑剔"——只有当 token-level KL 本身可以算时才能完全发挥。

想验证的问题

  1. 把 Reverse CALM 单独搬到 AR 跨 tokenizer KD(e.g. Llama → Qwen),是否依然有显著增益?预期 yes,这是 free transfer。
  2. TIDAL 的 timestep 轴是否对所有 dLLM 教师都通用?对 reasoning-heavy 教师(教师在 high-t 上不那么差),timestep 轴的好处会缩小吗?
  3. CompDemo 的 ρ=0.5 是默认,但 ρ=0.25 / 0.75 没扫。极端 ρ(几乎全揭/几乎不揭)的退化模式是什么?
  4. 能否在 RL post-training 之后再做 TIDE?论文只做 SFT 蒸馏。如果教师是 RLHF 后的(更像最终目标),学生能否进一步提升?
  5. 当前 pipeline B 是 same-arch within same-tokenizer-family(Qwen3-8B WeDLM → Qwen3-0.6B BD3LM)。如果换成真正异构(LLaDA2 → BD3LM 同 tokenizer 假想版本),数字会怎样?
  6. HumanEval 48.78 vs MBPP 38.60 的差距:为什么 MBPP 涨幅小很多?MBPP 的 prompt 风格更口语化,可能 chunk 对齐噪声更大?

记忆点

立场 第一个 cross-architecture dLLM-KD framework,3 模块解耦设计
三 bug ① timestep 教师不可靠 ② 重度掩码贫信号 ③ tokenizer 错位
三 patch TIDAL(双轴 λ) · CompDemo(互补掩码 2× 教师 forward) · Reverse CALM(反向 BCE,梯度有界)
公式 λ_t = λ_train(p) × (1−t); L_Rev-CALM 梯度 = −logit(p_t),恒有界
数据 +1.53 avg / HumanEval 48.78 (vs AR 32.30) / 22× mem / 5× speed
陷阱 TIDAL 与 Reverse CALM 不应同时开 — 二次保险反而拖 0.4 分
可移植 Reverse CALM 是 free transfer,可搬到任何 cross-tokenizer KD

精读笔记 v1 · 配套论文 PDF: /data/szhang967/papers/paper-notes/models/TIDE_2604.26951.pdf