news 2026/9/26 18:54:07

Model-Optimizer 高级压缩实验全解析:蒸馏扩展、方法串联、Blockwise 局部蒸馏与混合架构压缩

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Model-Optimizer 高级压缩实验全解析:蒸馏扩展、方法串联、Blockwise 局部蒸馏与混合架构压缩
  • 人工智能
  • 大模型
  • 模型优化
  • 模型量化
  • 模型压缩

【免费下载链接】Model-Optimizer

A unified library of SOTA model optimization techniques like quantization, distillation, pruning, neural architecture search, speculative decoding, etc. It compresses deep learning models for downstream deployment frameworks like TensorRT-LLM, TensorRT, vLLM, etc. to optimize inference speed.

项目地址:https://gitcode.com/GitHub_Trending/te/Model-Optimizer
点击查看免费下载

本篇技术指南以 advanced_compression_experiments.md 为骨架,系统梳理 NVIDIA Model-Optimizer(ModelOpt)在 Minitron(同构剪枝)与 Puzzletron(异构 NAS 剪枝)两条压缩路径上的进阶实验结论:从蒸馏规模放大(WikiText → Nemotron-v2)到两种方法的串联组合,再到 Blockwise Local Distillation(BLD)与 Mamba-Transformer 混合架构的压缩探索。读完你将掌握:在不同压缩强度下如何选择与组合剪枝方法、蒸馏数据规模对精度恢复的影响规律、BLD 在激进压缩下为何能扭转方法排名,以及异构架构在混合模型上的适用边界。


0. 实验背景与方法速览

本文的所有实验均以Qwen3-8B(36 层、hidden size 4096、FFN intermediate 12288、GQA 32Q/8KV、约 8B 参数)为基准模型展开,与主教程保持同一套方法学:

  • Minitron:同构(homogeneous)剪枝,基于重要性评分统一移除神经元/注意力头或整层,直接以参数量为压缩目标,输出标准同构模型。
  • Puzzletron:基于神经架构搜索(NAS)+ 混合整数规划(MIP)的异构剪枝,逐层生成 FFN 宽度候选与"移除注意力"(no_op)候选,以内存预算为硬约束求解最优逐层组合。

该进阶文档正是对主教程 Section 9 "Open Questions" 中提出的若干开放问题的实证回答,包括:蒸馏数据规模与质量的影响、Minitron 深度剪枝与 Puzzletron 宽度剪枝能否串联、如何缓解"剪枝后架构排名在蒸馏后翻转"的问题,以及异构搜索在非稠密架构(Mamba 混合)上的表现。

从源码确认两条路径的底层流程

ModelOpt 中 Puzzletron 的完整管线在 entrypoint.py 中按步骤落地:

  1. score_pruning_activations(分布式):校准数据上的激活重要性评分;
  2. pruning_ckpts(单进程):按评分剪枝并保存候选 checkpoint;
  3. build_library_and_stats(单进程):构建替换库(replacement library)与子块统计;
  4. calc_one_block_scores(分布式):对每个候选 block variant 打分;
  5. mip_and_realize_models(分布式):运行 MIP 求解并落地最终模型。

其中每个 Transformer 块的候选结构由 block_config.py 中的BlockConfig/AttentionConfig/FFNConfig描述:FFNConfig.intermediate_size控制 FFN 候选宽度,SubblockConfig.no_op表示整个子块被移除。MIP 求解的约束类型在 run_puzzle.py 的PuzzleConstraints._ALLOWED_HUMAN_CONSTRAINTS中定义,包括target_memory、target_throughput、target_latency_seconds、target_time_to_first_token、num_params与stats.has_attention——这正是进阶实验中"80% 内存目标""10B 参数量目标"等约束的直接来源。


1. 扩展蒸馏实验:WikiText vs. Nemotron-v2(80% 内存目标)

1.1 实验设计

主教程刻意采用最小蒸馏配置:100 次迭代的 WikiText-103(约 160 万 token)。本实验将其大幅放大:改用质量更高的Nemotron-Post-Training-Dataset-v2(约 19 亿 token,是前者的 1000 倍),在 Qwen3-8B 压缩至原始内存约 80% 的设定下对比两种蒸馏配方的恢复效果。

1.2 全基准结果

ModelParamsDistillationTokensMMLUHellaSwag acc_normGSM8K flex
Original Qwen3-8B8B——0.74930.76530.8749
Puzzletron 80%
Puzzletron — pruned7.75B——0.59100.68630.5762
Puzzletron + WikiText7.75Bgbs=4, seq=4096, 100 iters1.6M0.69210.73900.7612
Puzzletron + Nemotron-v27.75Bgbs=768, seq=8192, 300 iters1.9B0.71860.73810.8378
Minitron 80% (36→28 layers)
Minitron — pruned6.65B——0.50840.52950.0114
Minitron + WikiText6.65Bgbs=4, seq=4096, 100 iters1.6M0.73020.61660.4761
Minitron + Nemotron-v26.65Bgbs=768, seq=8192, 300 iters1.9B0.73940.63570.7453

1.3 关键结论

高质量蒸馏对两种方法都有增益,但收益分布不均。MMLU 上的提升相对温和(Puzzletron +2.65pp、Minitron +0.92pp),真正的回报体现在推理能力上:Puzzletron 的 GSM8K 提升 +7.66pp,Minitron 更是暴涨 +26.92pp。这强烈提示:更高品质的蒸馏数据能够不成比例地恢复推理能力。

"最小蒸馏的 Minitron" 依然能在 MMLU 上击败"千倍数据的 Puzzletron"。Minitron + WikiText(160 万 token)恢复到教师模型的 97.5%,而 Puzzletron 需要 1000 倍的计算量才能达到 95.9%。这说明在 MMLU 这类通用知识基准上,同构深度剪枝的恢复效率极高。

在推理基准(GSM8K)上,Puzzletron 无论何种蒸馏配方都保持领先。配合 Nemotron-v2 后,Puzzletron 保留了教师模型的 96.0%,而 Minitron 仅 85.4%。深度剪枝对推理链路的破坏可以被更好的蒸馏部分补偿,但异构剪枝在结构上更好地保留了推理结构。

蒸馏损失依然无法预测下游精度。Minitron 的最终损失(5.59e-1)比 Puzzletron + Nemotron-v2(5.63e-2)高约 10 倍,但 Minitron 在 MMLU 上反而得分更高——这与主教程 Section 6.3 的观察一致:KL 损失收敛不能作为任务精度的代理指标。


2. 方法串联:Minitron 深度剪枝 + Puzzletron 宽度剪枝

2.1 动机:Puzzletron 全层移除的评分缺陷

主教程将两种方法独立使用。本实验验证组合的可行性,其动机来自 Puzzletron 的一个已知局限:其独立 block 级评分在同时移除多个整层时,没有考虑层间依赖关系,导致层选择质量下降。

MethodLayers dropped (1-indexed)Pre-distill MMLUPost-distill MMLU
Minitron (BI scoring)L27–L340.50840.7302
Puzzletron (Cosine Embedding Loss)L3–L4, L8–L9, L15, L19, L21, L270.29490.4993

注意:为隔离深度剪枝行为,该 Puzzletron 运行被配置为只允许整层移除。

Minitron 的 Block Importance(BI)评分把待删除层集中在靠后的层(L27–L34),产出的模型明显更好;Puzzletron 的独立评分则散布在各处。这直接引出了链式思路:先用 Minitron 做深度剪枝,再用 Puzzletron 对存活层做异构宽度剪枝。

从源码看,这一组合在工具链层面是顺畅的:Puzzletron 的BlockConfig天然支持"存活层 + 逐层 FFN 宽度 / 注意力开关"的描述(见 block_config.py),而 Minitron 剪枝后的 checkpoint 可作为 Puzzletron 的输入模型继续走 entrypoint.py 的 NAS 管线。

2.2 中间步骤:Minitron 36→32L(约 90% 内存)

ModelParamsDistillationTokensMMLUHellaSwag acc_normGSM8K flex
Qwen3-8B (teacher)8.19B——0.74930.76530.8749
Minitron 36→32L — pruned7.42B——0.73960.66710.2873
Minitron 36→32L + WikiText7.42Bgbs=4, seq=4096, 100 iters1.6M0.74210.69870.7604

关键发现:Minitron 深度剪枝在零蒸馏下保留了 98.7% 的 MMLU(0.7396),印证被删的 4 个深层对通用知识贡献很小;GSM8K 则从 0.2873 暴跌,但最小蒸馏即可恢复到 0.7604。

2.3 80% 内存目标:三种路径对比

ModelParamsDistillationTokensMMLUHellaSwag acc_normGSM8K flex
Qwen3-8B (teacher)8.19B——0.74930.76530.8749
Chained: Minitron 36→32L + Puzzletron
Pruned7.42B——0.66740.66980.6331
+ WikiText7.42Bgbs=4, seq=4096, 100 iters1.6M0.70740.68740.7081
+ Nemotron-v27.42Bgbs=768, seq=8192, 300 iters1.9B0.73320.71260.8499
Puzzletron only
Pruned7.75B——0.59100.68630.5762
+ WikiText7.75Bgbs=4, seq=4096, 100 iters1.6M0.69210.73900.7612
+ Nemotron-v27.75Bgbs=768, seq=8192, 300 iters1.9B0.71860.73810.8378
Minitron depth only (36→28L)
Pruned6.65B——0.50840.52950.0114
+ WikiText6.65Bgbs=4, seq=4096, 100 iters1.6M0.73020.61660.4761
+ Nemotron-v26.65Bgbs=768, seq=8192, 300 iters1.9B0.73940.63570.7453

2.4 关键结论

链式组合在扩展蒸馏下给出最均衡的结果。配合 Nemotron-v2 后,Minitron+Puzzletron 取得 MMLU 0.7332、HellaSwag 0.7126、GSM8K 0.8499。没有任何单一方法能匹配这种平衡:Minitron 单独在 MMLU 领先(0.7394)但 HellaSwag(0.6357)与 GSM8K(0.7453)落后;Puzzletron 单独在 HellaSwag 领先(0.7381)但 MMLU 落后(0.7186)。

串联充分发挥了各自所长。Minitron 干净利落地完成深度剪枝(BI 评分准确定位应删的深层),Puzzletron 再对存活的 32 层做逐层"外科手术式"宽度优化——既保留通用知识,又比任一方法单独使用更好地保留了推理能力。

链式方案的蒸馏前质量远高于单方法。未蒸馏前链式模型 MMLU 即达 0.6674,明显高于 Puzzletron 单独的 0.5910 和 Minitron 单独的 0.5084,为后续蒸馏提供了更好的结构起点。

结论:在 Qwen3-8B 上瞄准 80% 内存目标时,先用 Minitron 深度剪枝约 10%(36→32L)、再用 Puzzletron 宽度剪枝约 10%,最后以 Nemotron-v2 做扩展蒸馏,是所有测试基准上最均衡的取舍。


3. Blockwise Local Distillation(BLD)

3.1 原理:为什么"局部可恢复性"比"即时替换质量"更重要

主教程 Section 6.4 已经观察到:蒸馏前最优的架构,蒸馏后不一定恢复得最好。BLD(bypass)正是针对此问题的改进——在 MIP 组装之前局部训练各 block 变体,使搜索更偏好"蒸馏后能良好恢复"的块,而不是"作为即时替换看起来不错"的块。

源码层面,pruning_ckpts.py 已引入from ..tools.bypassed_training import init_child_from_parent,说明 bypass 训练机制在 Puzzletron 管线中已有实现雏形。文档同时注明:改进后的 bypass 功能将在未来版本合入main分支。

3.2 中等压缩(7B 目标):边际影响

在 Scenario 1 设定(Qwen3-8B → 7B)下,BLD 应用于被剪到原中间尺寸 50% 以下的 FFN 子块变体:

ModelParametersMMLU (pruned)MMLU (distilled)% of Teacher
Minitron 7B6.96B0.70380.716695.6%
Puzzletron 7B6.99B0.66210.682391.1%
Puzzletron 7B + BLD6.99B0.66960.686791.6%

BLD 相对标准 Puzzletron 仅有 +0.44pp 的蒸馏后提升,且 MIP 选择了非常相似的架构。在此压缩强度下收益不足以抵偿额外复杂度,Minitron 仍在 MMLU 上大幅领先。

3.3 激进压缩(80% 内存目标):显著影响

内存优化下反复出现的模式是:MIP 求解器会从许多层移除完整注意力块(因为 KV cache 主导内存),这使得这些"无注意力"变体的 FFN 部分变得关键——这正是 BLD 最能发挥作用的场景。此处 BLD 被应用于训练丢弃注意力(no_op)的 block 变体中的 FFN 部分。

蒸馏后结果(教师模型百分比,WikiText 蒸馏):

BenchmarkPuzzletron 80%Puzzletron 80% + BLDMinitron 80%
MMLU92.4%98.0%97.5%
HellaSwag acc_norm96.6%95.6%80.6%
GSM8K flex87.0%92.0%54.4%

完整结果:

ModelMMLU (pruned)MMLU (distilled)HellaSwag acc_norm (pruned)HellaSwag acc_norm (distilled)GSM8K flex (pruned)GSM8K flex (distilled)
Qwen3-8B (teacher)0.7493—0.7653—0.8749—
Puzzletron 80%0.59100.69210.68630.73900.57620.7612
Puzzletron 80% + BLD0.72770.73410.70970.73170.73310.8044
Minitron 80%0.50840.73020.52950.61660.01140.4761

3.4 关键结论

BLD 在这个压缩强度下彻底改写了 Puzzletron 的成绩。蒸馏前 MMLU 从 0.5910 跃升至 0.7277;WikiText 蒸馏后达到 0.7341,同时超越标准 Puzzletron(0.6921)与 Minitron(0.7302)——直接翻转了 Puzzletron vs. Minitron 在 MMLU 上的排名(无 BLD 时 Minitron 领先)。所有基准均有提升,GSM8K 增益尤其显著(0.8044 vs. 0.7612)。

与中等压缩下的"微乎其微"形成鲜明对比:在激进压缩下,BLD 显著改变了 MIP 选出的架构以及最终模型质量。这也从机制上解释了原因——当大量注意力块被移除后,FFN 的局部可蒸馏性直接决定了最终精度,而这正是 BLD 局部训练所优化的对象。

未来工作:改进后的 bypass 功能将在未来版本合入main分支。


4. 超越稠密 Transformer:压缩 Mamba-Transformer 混合模型

4.1 实验设定

此前所有实验均基于稠密纯 Transformer 的 Qwen3-8B。本实验将两种方法应用于Nemotron-Nano-12B-v2——一个Mamba-Transformer 混合模型:12.3B 参数、62 层(Mamba 块与注意力块交替排列)。该探索处于早期阶段,仅报告蒸馏前的 MMLU结果。对应配置可参考 examples/puzzletron/configs/nemotron-nano-12b-v2/ 下的 YAML。

4.2 结果

ModelMMLU% of Teacher
Nemotron-Nano-12B-v2 (baseline, 49k MiB)78.6100%
~10B parameter target
Minitron 10B73.793.8%
Puzzletron 10B48.962.2%
~34k MiB memory target
Minitron 34k51.865.9%
Puzzletron 34k54.369.1%

4.3 观察

Puzzletron 从不移除 Mamba 块。在所有 Puzzletron 运行(10B 与 34k MiB 目标)中,每个 Mamba 块都被完整保留:MIP 求解器只针对注意力块和 FFN 层进行剪枝。这说明移除单个 Mamba 块对模型质量而言代价过高。

中等压缩(约 10B)下 Minitron 占据主导。Minitron 保留了教师 93.8% 的 MMLU,Puzzletron 仅 62.2%——与 Qwen3-8B 上"中等压缩 Minitron 胜出"的模式一致,但差距大得多。

激进压缩(约 34k MiB)下 Puzzletron 小幅领先。Puzzletron 以 54.3 vs. 51.8 的 MMLU 略胜,与 Qwen3-8B 上观察到的模式类似。

混合架构给 Puzzletron 带来独特挑战。在稠密 Transformer 上,Puzzletron 的优势是逐层异构优化;而在混合模型上,Mamba 块实际上被冻结——Puzzletron 只能优化模型中注意力/FFN 的那一半,有效搜索空间被大幅压缩。这可能解释了为何在中等压缩强度下,Minitron 更简单的统一式方法反而胜出。

从BlockConfig的设计看,这一现象在源码层面有其依据:block_config.py 的AttentionConfig支持mamba: Optional[MambaConfig]字段,Mamba 子块与标准注意力同属 attention 槽位,而no_op校验逻辑(assert not self.is_mamba)在no_op=True时会拒绝移除 Mamba 块,与实验结果"Mamba 块被完整保留"完全一致。


5. 综合启示与实践建议

将四个实验合并来看,可以得出对 ModelOpt 剪枝实践有直接指导意义的规律:

  1. 按压缩强度选方法:中等压缩(<20%)优先 Minitron(简单、同构、通用知识恢复高效);激进压缩(>20%,尤其硬内存预算)优先 Puzzletron(逐层异构优化保住推理结构);介于两者之间的压缩带(约 20%–38%)是排名交叉区,需要按目标基准实测。
  2. 按目标能力选方法:偏重通用知识(MMLU 类)时 Minitron 往往占优;偏重推理(GSM8K、HellaSwag 类)时 Puzzletron 的结构保留优势更明显。
  3. 串联 > 单打:在 80% 内存这类激进目标上,"Minitron 深度剪枝 + Puzzletron 宽度剪枝 + Nemotron-v2 扩展蒸馏"取得最均衡的多基准表现。
  4. 蒸馏数据质量至关重要:Nemotron-v2 级数据能不成比例地恢复推理能力(GSM8K +7.66pp 至 +26.92pp),而 MMLU 增益相对有限;蒸馏损失不预测下游精度。
  5. BLD 只在激进压缩下物有所值:当 MIP 大量移除注意力块、FFN 成为精度关键时,局部蒸馏能显著改善架构选择并翻转方法排名;中等压缩下收益可忽略。
  6. 混合架构限制异构搜索:Mamba-Transformer 混合模型上 Puzzletron 的搜索空间被压缩到注意力/FFN 一半,Minitron 在中度压缩下反而更合适。

复现入口

所有实验结果均可在仓库中复现与深入:

  • 主教程与全部实验设定:examples/pruning/minitron_vs_puzzletron/README.md,配套四个 Notebook(00_prerequisites.ipynb、scenario1_minitron.ipynb、scenario1_puzzletron.ipynb、scenario2_minitron.ipynb、scenario2_puzzletron.ipynb);
  • Puzzletron 算法端到端教程(含内存/运行时约束、MIP sweep 模式、vLLM AnyModel 部署):examples/puzzletron/README.md 及其 Qwen3-8B 配置、Nemotron-Nano-12B-v2 配置;
  • 核心实现:pipeline 入口、block 配置模型、MIP 约束与求解、MIP sweep 模式、剪枝与 bypass 训练衔接;
  • 蒸馏环节可参考 Megatron-Bridge 的蒸馏说明:examples/megatron_bridge/README.md。

说明:文档中所有结论均基于 Qwen3-8B(单一模型)与 Nemotron-Nano-12B-v2(单一混合模型)在特定蒸馏配方下的实验,跨模型泛化仍需谨慎;文中引用的模型与数据集(WikiText-103、Nemotron-Post-Training-Dataset-v2、Nemotron-Nano-12B-v2、Qwen3-8B)均可通过 Hugging Face Hub 获取,按各自许可协议使用。

  • 人工智能
  • 大模型
  • 模型优化
  • 模型量化
  • 模型压缩

【免费下载链接】Model-Optimizer

A unified library of SOTA model optimization techniques like quantization, distillation, pruning, neural architecture search, speculative decoding, etc. It compresses deep learning models for downstream deployment frameworks like TensorRT-LLM, TensorRT, vLLM, etc. to optimize inference speed.

项目地址:https://gitcode.com/GitHub_Trending/te/Model-Optimizer
点击查看免费下载

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/26 18:51:19

Windows下Git Bash高效配置:解决中文乱码与终端体验问题

1. 为什么 Git Bash 在 Windows 上值得单独配置——不是替代 CMD&#xff0c;而是补足它做不到的事Git Bash 是 Windows 用户接触类 Unix 工作流的第一道门&#xff0c;但绝大多数人装完就用默认配置&#xff1a;黑底白字、字体小、复制粘贴反人类、中文乱码、路径不兼容、快捷…

作者头像 李华
网站建设 2026/9/26 18:50:53

不想注册账号,有没有能直接免费查AI率的网站?

不想注册账号&#xff0c;有没有能直接免费查AI率的网站&#xff1f; 有&#xff0c;Scribbr官方明确提供免费、免注册的AI检测&#xff0c;但支持英语、西班牙语、德语和法语&#xff0c;没有列出中文。查英文论文可以先选它&#xff1b;查中文论文&#xff0c;可以用率零或P…

作者头像 李华
网站建设 2026/9/26 18:49:30

原神后台不杀真相:状态快照而非保活黑科技

1. 从“原神挂后台”这个现象说起&#xff1a;它根本不是技术问题&#xff0c;而是系统级资源调度的错觉 “原神挂后台还能跑”——这句话在手游玩家圈里流传多年&#xff0c;几乎成了某种玄学共识。但凡聊起多任务、后台保活、游戏优化&#xff0c;总有人拿它当标杆&#xff1…

作者头像 李华
网站建设 2026/9/26 18:49:29

网页转墨水屏阅读器电子书:EPUB清洗与批量转换全指南

这段时间一直在琢磨一个事儿&#xff1a;怎么把网页上那些值得反复读的长文、连载小说&#xff0c;弄到墨水屏阅读器上去看。用手机刷屏幕刺眼&#xff0c;用电脑看又坐不住&#xff0c;还是墨水屏舒服。但网页直接发给阅读器&#xff0c;排版直接乱到没法看&#xff0c;图片加…

作者头像 李华
网站建设 2026/9/26 18:49:28

智慧交通互联网应用怎么做?智能公交ETA到路况预测的完整拆解

最近有个学生朋友拿着“人工智能赋能智慧交通互联网应用”这个题目来问我&#xff0c;说课程大作业不知道该从哪里下手。我看了下他列的大纲&#xff0c;从城市大脑写到车路协同&#xff0c;从数字孪生写到自动驾驶&#xff0c;一个项目写了八页PPT&#xff0c;但问到“数据从哪…

作者头像 李华
网站建设 2026/9/26 18:49:23

AI Agent开发实战:从框架选型到落地避坑的完整指南

作为一个在AI应用层面折腾了好几年的老兵&#xff0c;我明显感觉今年“AI agent 方向”的讨论热度跟去年完全不是一个量级。热搜里那句“教别人用AI赚翻了”和“别人被琐事缠身&#xff0c;你用千问AI代劳专注核心工作”&#xff0c;其实已经透露了真实信号&#xff1a;大家不再…

作者头像 李华