知识讲堂

← 返回日报
算法理论 第一讲

在线知识蒸馏原理

离线蒸馏像让学生只看老师的满分答卷,而在线蒸馏像让学生先自己做题、再让老师在学生的错误卷子上逐题批注——后者的纠错信息远比前者精准。
历史演进

知识蒸馏的根本动因是:大模型的"暗知识"(dark knowledge)无法被硬标签直接传递,需要通过软概率分布让小模型学到类间相似性结构——而离线蒸馏将这一过程冻结在静态数据集上,天然无法让学生从自身错误中学习。

2006
压缩神经网络的早期探索

Bucilua 等人在 NeurIPS 2006 发表"Model Compression",首次系统性地提出用大模型的输出软化标签来训练小模型,证明小模型可以在不损失太多精度的情况下大幅压缩。这是蒸馏思想的原始形态,但彼时深度学习尚未兴起,影响有限。

2015
Hinton 奠定理论框架

Geoffrey Hinton、Oriol Vinyals 和 Jeff Dean 在 NIPS 2015 Workshop 发表"Distilling the Knowledge in a Neural Network",正式引入"温度参数"$T$ 对 softmax 输出进行软化,使得类别间的相对概率关系(即暗知识)得以显现。核心洞见是:一张猫的图片被误分为豹的概率,远比被误分为汽车的概率高——这种结构信息在硬标签中完全丢失。这篇论文奠定了此后十年蒸馏研究的基础范式。

2017–2019
中间层蒸馏与特征对齐

FitNets(Romero et al., ICLR 2015)将蒸馏从输出层延伸到中间隐层,要求学生模仿教师的特征图。此后 AT(Attention Transfer, Zagoruyko & Komodakis, ICLR 2017)、RKD(Relational Knowledge Distillation, Park et al., CVPR 2019)等工作进一步探索关系结构的传递,蒸馏目标从"点对点模仿"扩展为"结构对结构对齐"。

2020
在线蒸馏的系统化

离线蒸馏的核心缺陷在于:学生在训练时永远只见到教师的"正确答案",从不接触自身的错误分布,导致训练-推理分布偏移(exposure bias)。Zhang et al. 的 Deep Mutual Learning(CVPR 2018)是在线蒸馏的重要先驱,让多个学生网络互相蒸馏,无需预训练教师。此后 Born-Again Networks(Furlanello et al., ICML 2018)发现自蒸馏(用同架构模型蒸馏自身)可以持续提升性能,打破了"教师必须比学生强"的直觉。

2022–2025
LLM 时代的在线蒸馏复兴

随着 LLM 规模膨胀,离线蒸馏的静态数据集瓶颈愈发突出:教师模型每隔数月就会更新,而静态蒸馏数据集迅速过时。DistiLLM(Kim et al., ICML 2024)、MiniLLM(Gu et al., ICLR 2024)等工作将在线采样引入 LLM 蒸馏:学生在训练过程中动态生成自身输出,教师对这些输出打分并提供软标签,形成闭环。这一范式与 RL 的 on-policy 训练高度同构,成为当前研究热点。

核心思想
在线蒸馏的本质是让学生模型在训练时不断"犯错—获得教师反馈—修正",而非在静态教师数据上被动拟合;它将知识传递从离线监督转变为动态闭环,从根本上消除训练-推理分布偏移。
数学结构

标准离线蒸馏的损失函数为: $$\mathcal{L}_{\text{KD}} = (1-\alpha)\mathcal{L}_{\text{CE}}(y, p_S) + \alpha T^2 \cdot \text{KL}\left(p_T^{(T)} \| p_S^{(T)}\right)$$ 其中 $p_S^{(T)} = \text{softmax}(z_S / T)$,$p_T^{(T)} = \text{softmax}(z_T / T)$,$z$ 为 logits,$T$ 为温度,$\alpha$ 为蒸馏权重,$T^2$ 是梯度尺度补偿项(因为软化后梯度幅度缩小了 $T^2$ 倍)。 在线蒸馏的关键改变在于数据分布:离线蒸馏中输入 $x$ 来自固定数据集 $\mathcal{D}$,而在线蒸馏中 $x$ 部分来自学生自身的生成分布 $q_S$: $$\mathcal{L}_{\text{online}} = \mathbb{E}_{x \sim (1-\beta)\mathcal{D} + \beta q_S}\left[T^2 \cdot \text{KL}\left(p_T^{(T)}(\cdot|x) \| p_S^{(T)}(\cdot|x)\right)\right]$$ $\beta \in [0,1]$ 控制在线采样比例。当 $\beta=0$ 退化为离线蒸馏;当 $\beta=1$ 为纯在线蒸馏。 MiniLLM 进一步将 KL 方向反转为 $\text{KL}(p_S \| p_T)$,即最小化学生对教师的反向 KL,避免学生在教师低概率区域"质量扩散"(mode-covering 问题),使学生输出更加集中锐利: $$\mathcal{L}_{\text{reverse}} = \mathbb{E}_{x \sim q_S}\left[\text{KL}(p_S(\cdot|x) \| p_T(\cdot|x))\right]$$ 反向 KL 的梯度需要通过 REINFORCE 或重要性采样估计,计算代价更高但生成质量更优。

工作机制

在线蒸馏的整体逻辑是:学生边生成边学习,教师的软标签作为动态奖励信号,形成"生成→评分→更新"的闭环,而非静态监督。

Step 1学生采样生成

在每个训练步,学生模型以当前参数 $\theta_S$ 对输入 $x$(可来自数据集或纯噪声提示)进行采样,生成候选序列 $\hat{y} \sim p_S(\cdot|x;\theta_S)$。这一步是在线蒸馏与离线蒸馏的根本分叉点:学生必须"犯自己的错误",而非只见教师的正确输出。采样温度通常设为 $T_{\text{sample}} > 1$ 以保证多样性,避免模式坍塌。

Step 2教师软标签计算

将学生生成的序列 $\hat{y}$ 送入冻结的教师模型,获取每个位置的 token 概率分布 $p_T(\cdot|\hat{y}_{学生生成的序列打分,而非对真实标签序列打分。这意味着教师在评估"如果学生走了这条路,下一步应该怎么走",提供的是条件于学生错误路径的修正信号,比离线蒸馏的无条件软标签信息量更大。

Step 3损失计算与梯度估计

计算学生输出分布与教师软标签之间的 KL 散度。若使用正向 KL($\text{KL}(p_T \| p_S)$),梯度可直接反传;若使用反向 KL($\text{KL}(p_S \| p_T)$),需要通过 REINFORCE 估计梯度:

python # 反向KL的REINFORCE梯度估计 log_ps = student.log_prob(y_hat, x)       # 学生对自身生成的log概率 log_pt = teacher.log_prob(y_hat, x)       # 教师对学生生成的log概率 reward = log_ps - log_pt                  # 近似反向KL的每步奖励 loss = -(reward.detach() * log_ps).mean() # stop-gradient trick

方差控制是此步的核心工程挑战,通常需要 baseline 减法或 PPO-style clip。

Step 4混合数据课程调度

纯在线采样在训练初期不稳定(学生输出质量极差,教师反馈信噪比低)。实践中采用混合策略:训练初期 $\beta$ 较小,以离线数据为主;随训练进行逐步提高 $\beta$,增加在线数据比例。这与课程学习(Curriculum Learning)的思想一致:先学简单的(教师示范),再学难的(自己犯错并纠正)。

Step 5教师更新策略(互学习变体)

在 Deep Mutual Learning 等变体中,教师本身也是可训练的,多个学生网络互相作为对方的教师。此时需要 EMA(指数移动平均)更新教师参数以保持稳定性,避免两个网络同时崩溃:$\theta_T \leftarrow \gamma \theta_T + (1-\gamma)\theta_S$,$\gamma$ 通常取 0.999。

长远价值

在线蒸馏已成为 LLM 后训练的核心基础设施之一。Meta 的 LLaMA 系列、Google 的 Gemma 均在小模型训练中采用了在线蒸馏思想;MiniLLM 和 DistiLLM 被广泛引用并集成进 TRL 等后训练库。在音视频领域,Whisper 的轻量化版本(如 distil-whisper)也采用了类似的在线数据增强蒸馏策略。其核心价值在于:它是目前已知的、能系统性缩小"训练-推理分布偏移"的蒸馏方法,这一问题在自回归生成模型中尤为致命。

前沿动向

当前核心开放问题:①在线蒸馏的计算代价是离线的 3-5 倍,如何高效实现仍是工程难题;②反向 KL 的高方差梯度估计尚无通用解法;③多模态在线蒸馏(如视频生成模型的在线蒸馏)几乎是空白;④教师模型本身在更新时如何保持蒸馏一致性(moving target problem)尚未解决。

工程·思维 第二讲

MoE专家并行调度工程

MoE 专家并行就像一个大型医院的分诊系统:每个病人(token)被分诊台(路由器)派到对应科室(专家 GPU),但如果心内科(热门专家)总是爆满而皮肤科(冷门专家)总是空闲,整个医院的效率就会崩溃——负载均衡就是让分诊台学会合理分流,而 DeepEP 就是让病人在走廊等待时医生就开始准备器械,而不是病人到了才开始准备。
历史演进

MoE(混合专家)并行调度的工程难题根源在于:专家路由是动态的、数据依赖的,这与传统并行训练中"计算图静态可预测"的假设根本冲突,导致所有经典并行策略(数据并行、张量并行、流水线并行)都无法直接套用。

1991
MoE 的诞生与早期忽视

Jacobs、Jordan、Nowlan 和 Hinton 在 Neural Computation 1991 提出混合专家模型,核心思想是"分而治之":不同专家处理不同类型的输入。但彼时计算资源有限,MoE 的扩展性优势无从体现,工程复杂性反而成为障碍,该方向沉寂近二十年。

2017
Shazeer 的稀疏门控 MoE

Noam Shazeer 等人在 ICLR 2017 发表"Outrageously Large Neural Networks: The Sparsely-Gated Mixture-of-Experts Layer",将 MoE 嵌入 LSTM,实现了 1370 亿参数的语言模型。关键创新是 Top-K 稀疏门控:每个 token 只激活 K 个专家(通常 K=2),使计算量与参数量解耦。这篇论文第一次让工程界意识到 MoE 的扩展潜力,但同时也暴露了核心工程难题:专家负载严重不均衡(少数热门专家过载,多数专家闲置),以及跨设备的 All-to-All 通信开销。

2021–2022
Switch Transformer 与工程系统化

Google 的 Switch Transformer(Fedus et al., JMLR 2022)将 Top-K 简化为 Top-1(每 token 只选一个专家),大幅降低路由复杂度,并系统性地研究了专家容量因子(capacity factor)、辅助负载均衡损失等工程手段。同期 GLaM、ST-MoE 等工作进一步验证了 MoE 在大规模训练中的可行性。这一阶段的核心贡献是将 MoE 的工程问题从"能不能跑"推进到"怎么跑得稳"。

2024
DeepSeek-MoE 与 DeepEP 的工程突破

DeepSeek-V2/V3 将 MoE 推向新高度:细粒度专家分割(每层 256 个专家,每 token 激活 8 个)、共享专家机制、以及专门为 MoE 设计的通信库 DeepEP。DeepEP 的核心贡献是将 All-to-All 通信与计算重叠(overlap),使通信延迟从关键路径上移除。2025 年 PyTorch 与 Nebius 在 256 GPU B200 集群上的实验(即今日 [15] 号内容)进一步验证:结合 MXFP8 量化与 DeepEP 优化,训练吞吐提升 41%,证明专家并行调度已成为大规模 MoE 训练的核心工程瓶颈与优化焦点。

核心思想
MoE 专家并行的工程本质是:在动态路由导致的不规则稀疏计算图上,同时解决三个相互制约的问题——跨节点 All-to-All 通信延迟、专家负载不均衡、以及显存碎片化——任何一个处理不好都会让理论上的参数效率优势荡然无存。
数学结构

MoE 层的路由机制定义为: $$y = \sum_{i=1}^{N} G(x)_i \cdot E_i(x)$$ 其中 $N$ 为专家总数,$E_i$ 为第 $i$ 个专家网络,$G(x)$ 为门控函数输出的稀疏权重向量。Top-K 门控的实现为: $$G(x) = \text{Softmax}(\text{TopK}(W_g \cdot x + \epsilon, K))$$ $W_g$ 为门控权重矩阵,$\epsilon \sim \mathcal{N}(0, \sigma^2)$ 为训练时加入的噪声(防止路由坍塌),TopK 将非 Top-K 的 logits 置为 $-\infty$。 负载均衡损失是工程稳定性的关键: $$\mathcal{L}_{\text{aux}} = \alpha \cdot N \cdot \sum_{i=1}^{N} f_i \cdot P_i$$ 其中 $f_i = \frac{1}{T}\sum_{t=1}^{T}\mathbf{1}[\text{token } t \text{ 路由到专家 } i]$ 为实际路由比例,$P_i = \frac{1}{T}\sum_{t=1}^{T} G(x_t)_i$ 为门控概率均值,$\alpha$ 为辅助损失权重(通常 $10^{-2}$ 量级)。两者乘积的求和鼓励均匀分布,但不能设置过大否则会破坏路由的语义专业化。 专家容量约束:每个专家最多处理 $C = \lceil \frac{T}{N} \cdot \text{cf} \rceil$ 个 token,$\text{cf}$ 为容量因子(通常 1.0–1.5),超出容量的 token 被丢弃(token dropping),这是工程上的关键妥协。

工作机制

MoE 专家并行的整体逻辑是:将专家分布在不同 GPU 上,通过两次 All-to-All 通信(dispatch 和 combine)实现 token 的跨设备路由计算,同时用计算-通信重叠和负载均衡策略掩盖延迟、消除热点。

Step 1专家分片与设备映射

将 $N$ 个专家均匀分配到 $D$ 个 GPU 上,每个 GPU 持有 $N/D$ 个专家的完整参数。注意这与张量并行不同:张量并行切分单个算子的权重矩阵,而专家并行切分的是独立的专家网络。两者可以组合:每个专家内部再做张量并行,形成"专家并行×张量并行"的二维并行策略。DeepSeek-V3 的实际配置是:专家并行度 EP=64,张量并行度 TP=1,数据并行度 DP=4,在 512 GPU 上运行。

Step 2门控路由与 Token Dispatch(第一次 All-to-All)

每个 GPU 上的门控网络对本地 batch 的所有 token 计算路由决策,确定每个 token 应发往哪些专家(及其所在 GPU)。随后执行第一次 All-to-All 通信,将 token 的隐状态发送到对应的专家 GPU。这是整个系统的通信热点:通信量为 $O(\text{batch\_size} \times K \times d_{\text{model}})$,在大 batch 和高维度下极为可观。DeepEP 的核心优化是将此通信拆分为细粒度的 chunk,与专家计算流水线重叠,使 GPU 在等待通信时不空转。

python # 伪代码:Token Dispatch router_logits = gate_network(hidden_states)  # [B, T, N] top_k_indices, top_k_weights = topk(router_logits, K)  # [B, T, K] # 构建发送缓冲区(按目标GPU分组) send_buf = group_tokens_by_expert_gpu(hidden_states, top_k_indices) # All-to-All:每个GPU发送自己的token,接收别人发来的token recv_buf = all_to_all(send_buf, group=expert_parallel_group)
Step 3专家计算与容量控制

每个 GPU 接收到发来的 token 后,用本地专家网络(通常是 FFN)进行计算。容量因子 $\text{cf}$ 在此处生效:若某专家接收的 token 数超过容量上限 $C$,超出部分被丢弃(token dropping)或通过 overflow 路由到备用专家。实践中 token dropping 率需监控,超过 1% 通常意味着负载均衡损失权重需要调大。MXFP8 量化(今日 [15] 号内容的优化之一)在此步将专家 FFN 的计算从 BF16 降至 FP8,在 B200 的 FP8 Tensor Core 上获得约 2× 的算力提升,同时显存占用减半。

Step 4Token Combine(第二次 All-to-All)

专家计算完成后,执行第二次 All-to-All,将计算结果发回原始 GPU。每个 GPU 收到来自不同专家的输出后,按 Top-K 权重加权求和:$y_t = \sum_{k=1}^{K} G(x_t)_{i_k} \cdot E_{i_k}(x_t)$。这次通信的数据量与第一次相同,是第二个通信瓶颈。DeepEP 同样对此做了 chunk-level 的计算-通信重叠。

Step 5梯度同步与负载监控

反向传播时,门控网络的梯度需要跨所有 EP 组同步(All-Reduce),而专家参数的梯度只需在持有相同专家的 DP 组内同步。实践中需要持续监控每个专家的实际负载分布(可用 TensorBoard 的专家利用率热力图),若出现持续的专家热点,需要动态调整辅助损失权重或引入专家复制(expert replication)策略。

长远价值

MoE 专家并行已成为万亿参数模型训练的标准基础设施。GPT-4(据传)、Gemini 1.5、Mixtral、DeepSeek-V3 均采用 MoE 架构,其中专家并行调度是决定训练效率的核心工程变量。在音视频领域,多模态大模型(如 Gemini 的音频理解模块)也开始引入 MoE 以在不增加推理计算量的前提下扩大模型容量。掌握专家并行调度工程,是部署和训练下一代多模态模型的必备技能。

前沿动向

当前核心开放问题:①动态专家复制(根据实时负载热点自动复制热门专家)尚无成熟的开源实现;②推理阶段的专家并行(EP inference)在小 batch 场景下通信开销比例极高,prefill 和 decode 阶段需要不同的 EP 策略;③异构专家(不同专家有不同参数量)的调度算法几乎是空白;④跨节点 RDMA 通信与 NVLink 域内通信的混合拓扑优化仍是工程难题。

往期讲解档案 33 个知识点

2026年04月02日波形潜空间扩散TTSwaveform latent diffusionnon-autoregressive TTSlatent space acoustic modeling
2026年04月02日说话人分割工程选型speaker diarizationbenchmark methodologyreal-world evaluation
2026年04月02日波形隐空间扩散原理waveform latent spacediffusion TTSVAE audio codec
2026年04月02日LLM量化权重工程weight quantizationLLM compression4-bit quantization
2026年04月02日扩散语言模型离散生成Discrete DiffusionMasked Diffusion Language ModelNon-autoregressive TTS
2026年04月02日LLM后训练库工程演进RLHF engineeringPPO training stabilityreward hacking
2026年04月02日声学证据瓶颈原理Audio Evidence BottleneckAcoustic GroundingAudio Language Model
2026年04月02日说话人分割工程选型Speaker DiarizationBenchmark EngineeringLow-resource Language
2026年04月02日状态空间模型音频建模State Space ModelMambaSelective Scan
2026年04月02日实时语音增强工程选型Real-time Speech EnhancementNoise SuppressionStreaming Inference
2026年04月02日对话上下文压缩原理Context CompressionAbstractive SummarizationCross-Attention Fusion
2026年04月02日说话人匿名化工程Speaker AnonymizationVoice ConversionStreaming Inference
2026年04月02日视听语音识别融合Audio-Visual Speech RecognitionLip ReadingViseme
2026年04月02日GPU训练吞吐加速工程MXFP8MoE TrainingExpert Parallelism
2026年04月01日熵驱动多样性生成diversity samplingtypicality biasrepulsion in latent space
2026年04月01日说话人分割工程选型speaker diarizationbenchmark methodologystreaming ASR pipeline
2026年03月31日转向检测联合建模turn-taking detectionvoice activity detectionjoint acoustic-linguistic modeling
2026年03月31日基准测试的系统性失效benchmark contaminationevaluation validityLLM judge reliability
2026年03月31日扩散模型声学生成diffusion modelscore matchingstochastic differential equation
2026年03月31日TTS开源生态竞争open-weight TTStime-to-first-audiomultilingual speech synthesis
2026年03月30日注意力机制变体演进Multi-Head AttentionGrouped Query AttentionMulti-head Latent Attention
2026年03月30日设备端语音推理架构on-device inferenceExecuTorchvoice agent pipeline
2026年03月29日混合自回归流匹配TTSautoregressive semantic tokensflow matching acoustic decoderhybrid TTS architecture
2026年03月29日NCCL超时诊断方法论NCCL watchdog timeoutdistributed training debuggingcollective communication
2026年03月29日混合架构音频表示Mambastate space modelaudio representation learning
2026年03月29日DeepSeek预训练加速工程MXFP8 trainingexpert parallelismMoE pretraining
2026年03月27日说话人验证度量学习speaker verificationmetric learningcurriculum learning
2026年03月27日MX浮点格式加速训练MXFP8microscalingmixed precision training
2026年03月26日TTS模型极限压缩model compressionknowledge distillationTTS on-device
2026年03月26日小模型极限压缩哲学model compressionknowledge distillationquantization
2026年03月25日流匹配生成原理flow matchingrectified flowODE
2026年03月25日神经音频编解码器neural audio codecresidual vector quantizationEnCodec
2026年03月25日推测解码加速推理speculative decodingdraft modeltoken verification