首页优化地图方法索引基础概念
返回技术汇总表 ↗

M001 · 独立详解

剪枝与知识蒸馏:先做出更小的模型,再谈推理提速

用一个两层MLP看清删除结构与置零的区别,再手算教师软标签如何改变学生梯度。压缩准备成本与部署收益分开计。

模型与算法详解已编写
视频讲解待制作

这篇文章的小视频尚未制作;可以先阅读下方文字详解。

本页目录

01 · 模型为什么可以变小,代价在哪里

假设每次请求都需要执行一套很大的参数矩阵。优化kernel能更快完成这些乘法;模型压缩则尝试让部署时需要的结构本身更小。剪枝从已有模型删部分权重或结构;蒸馏用教师输出等信号训练学生,可以从小模型出发,也可以恢复剪枝后的模型。

二者不是必须同时使用,也不是保持原模型逐项输出的等价执行变换。要先定义允许的质量损失、部署硬件与目标负载,再决定压缩方案。准备时的校准、教师推理、学生训练和评测都要计成本。

依据:NVIDIA Model Optimizer · LLM结构剪枝与蒸馏示例 ↗

02 · 权重为零,与矩阵真的变小,是两回事

路线矩阵或计算路径发生什么速度条件
非结构化剪枝删散落权重,通常保存mask或稀疏表示普通dense GEMM仍遍历原shape;需要合适稀疏表示和执行。
受约束的结构稀疏每组按特定模式保留权重,如2:4需模型/精度/形状与稀疏kernel及设备匹配。
结构化宽度剪枝删通道、MLP中间单元、部分头等,并同步相关矩阵真正缩小shape后普通dense计算也可少做,但tile利用率可能下降。
深度剪枝移除部分层或块,连接前后路径减少串行层,通常需恢复训练与任务评测。

只乘mask,或把mask永久折入原权重,未必改变矩阵尺寸。PyTorch剪枝教程展示了mask、重参数化和移除重参数化;这与重建更窄的模块不是同一动作。

依据:PyTorch · mask、剪枝重参数化与移除教程 ↗

剪注意力头时,要同时处理投影、输出拼接和KV头映射;剪隐藏维度可能牵连残差、归一化、Embedding和输出头。不能只删一张矩阵几列就认为整个Transformer可运行。

依据:NVIDIA Model Optimizer · LLM结构剪枝与蒸馏示例 ↗

03 · 手算一个可真正缩小shape的例子

取没有bias的MLP:X→W1→ReLU→W2。输入与输出维度均4,中间维度H=8;W1为4×8,W2为8×4。共有64个参数,每个token执行64次乘法。若保留4个中间单元,就同时选择W1的对应列和W2的对应行,变成4×4与4×4,共32个参数和32次乘法。

教学示意 · 不代表设备实测
原路径:Y = ReLU(X @ W1) @ W2
保留中间索引keep
W1_small = W1[:, keep]
W2_small = W2[keep, :]
Y_small = ReLU(X @ W1_small) @ W2_small
# 无bias教学例;有bias时还需取对应bias并处理其他依赖。

缩小后的路径应与“原shape但屏蔽已删中间单元”的路径一致。它通常不与未剪的原模型一致。这两个对照分别检查改写正确性与质量变化,不能混用。

保留相同单元,矩阵shape是否真的变了?

无bias、输入/输出4维,原中间8维;参数量和乘法按矩阵shape计。masked使用普通dense乘法;不模拟稀疏kernel、填充或速度。输出语义以同一删除策略对照。

04 · 蒸馏让学生学什么,为什么不只看正确类别

分类或同词表token级蒸馏中,教师给出各候选的概率。只给正确标签C,学生只知道“C是目标”;软分布还会表达教师对其他候选的相对倾向。教师通常固定,不通过学生Loss更新;学生执行前向和反向。

一个常用定义:温度T下p_T=softmax(z_teacher/T),q_T=softmax(z_student/T)。Loss=(1−α)×CE(y,q_1)+α×T²×KL(p_T||q_T),其中KL方向是教师到学生。教师熵对学生梯度为常数,因此软标签交叉熵与此KL有相同学生梯度。

教学示意 · 不代表设备实测
教师:固定参数,前向得到z_teacher(或读取离线目标)
学生:前向得到z_student
p_T = softmax(z_teacher / T)
q_T = softmax(z_student / T)
L = (1-alpha)*CE(label, softmax(z_student))
  + alpha*T*T*sum(p_T*log(p_T/q_T))
仅对学生求梯度 → optimizer更新学生

依据:Hinton等 · Distilling the Knowledge in a Neural Network ↗

T>1让分布更平缓;T²是这份Loss配方对温度造成梯度缩放的补偿,不是越大越好,也不是推理时必须用同一温度。不同配方的α约定可能相反,比较实现先对公式。

05 · 三个候选的数值与梯度

自设教师logits=[2,1,0]、学生=[0,0,0],T=2。教师概率约[0.5065,0.3072,0.1863],学生各1/3。仅软项T²KL时,对学生logit梯度为T×(q_T−p_T),约[−0.3463,0.0523,0.2940]。梯度下降会提高第一个logit,并降低另外两个,幅度也有区别。

若硬标签选第一个,普通交叉熵梯度为[−2/3,1/3,1/3];它不表达教师更偏向第二个而非第三个的差别。混合Loss将两种信号按α结合。教师也可能错,学生容量有限,学软分布不保证所有任务都更好。

教学示意 · 不代表设备实测
只优化三维学生logits的教学步骤:
grad[i] = (1-alpha)*(q_1[i]-onehot_y[i])
        + alpha*T*(q_T[i]-p_T[i])
student_logits[i] -= lr*grad[i]
# 真实网络还需通过logits对学生参数链式求导。

依据:Hinton等 · Distilling the Knowledge in a Neural Network ↗

06 · LLM蒸馏还有哪些路线

路线目标来源额外条件
token级软目标教师在同一前缀上的词表分布token对齐、词表映射、有效位置mask;完整logits可能很大。
序列级目标教师生成的回答/推理样本作为训练文本可只保存文本,但不再等同于完整软分布匹配。
中间特征匹配隐藏状态、Attention等表征维度/层数不同时需要对齐或投影,增加训练计算。
剪枝后恢复剪出的学生再用教师/标签训练恢复质量需要数据、训练预算及独立评测。

在线教师会增加每个训练step的前向成本;离线目标把成本提前到数据生成,并增加存储、版本与数据处理。自设软目标有10万条、每条100位置、词表5万、每概率2B,完整原始载荷约1 TB;稀疏top-k等压缩又改变保存信息与Loss定义。

NVIDIA Model Optimizer提供LLM结构剪枝与蒸馏示例;示例配方与支持矩阵不是任意模型、设备和数据的效果保证。

依据:NVIDIA Model Optimizer · LLM结构剪枝与蒸馏示例 ↗

07 · CPU验证结构改写和蒸馏梯度

下载脚本用无bias两层ReLU MLP比较真正缩小矩阵与同shape屏蔽单元,展示未剪输出差异和保留错行的反例。蒸馏部分对混合Loss做有限差分梯度核对,并多步优化学生logits,包含温度1/2/4和数值稳定Softmax。它不训练真实LLM、不运行剪枝搜索或设备内核。

教学示意 · 不代表设备实测
先记录未压缩质量/延迟/吞吐/容量基线
选定结构与部署shape,按校准数据确定保留项
完成所有依赖矩阵改写,验证屏蔽参考的一致性
按明确Loss与数据预算蒸馏/恢复
导出到目标引擎,测真实负载与质量
核对准备成本,决定是否值得部署

依据:PyTorch · mask、剪枝重参数化与移除教程 ↗ · NVIDIA Model Optimizer · LLM结构剪枝与蒸馏示例 ↗

08 · 验收:少参数、少运算、少时间各有证据

  • 改写:索引、形状、残差/头映射,和相同删除策略的参考输出。
  • 蒸馏:教师固定、KL方向、温度/权重、token对齐、mask与数据覆盖。
  • 质量:任务、长上下文、稀有能力和生成行为;不能只看训练Loss。
  • 硬件:真实shape、dtype、稀疏支持、Prefill/Decode及并发下延迟与吞吐。
  • 总成本:校准/教师生成/恢复训练/评测与部署运行之和。

若压缩准备新增成本C,每个业务请求节省s,简化回本量为C/s;二者必须使用同一成本单位,并计质量约束。GPU/NPU上相同shape减少可能有不同收益,稀疏格式更不能直接跨平台套用。

  • 为什么将一半权重置零,dense GEMM可能仍没有变快?
  • 怎样区分“结构改写正确”与“压缩后质量可接受”?
  • 蒸馏教师更大,为什么训练可能更贵而部署推理更便宜?

流程位置与关联方法

这个方法可能出现在多个位置;计算线包含模型计算与算子实现,执行线包含运行时、内存和通信。

资料与核查范围

原理依据以原始论文和官方文档为主;算例与时间线是教学推导。文档核查日期:2026-10-10。引用 main / latest 文档时,实际接口以安装版本为准。

代码为接入片段或教学伪代码;本页没有声称完成 NVIDIA / 昇腾硬件实测。

← 返回总表中的 M001继续阅读:注意力结构选择:MQA / GQA / MLA →
AI Infra 知识库 · 总览 → 独立讲解网站更新 2026-10-08
搜索知识库

搜索方法与基础概念 · Esc 关闭