量砍掉40%的全流程)
Minitron剪枝工作流Model Optimizer把LLM參數(shù)量砍掉40%的全流程【免費(fèi)下載鏈接】Model-OptimizerA 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.項(xiàng)目地址: https://gitcode.com/GitHub_Trending/te/Model-OptimizerModel OptimizerModel-Optimizer是 NVIDIA 開源的統(tǒng)一模型優(yōu)化工具庫把量化、蒸餾、剪枝、神經(jīng)架構(gòu)搜索、投機(jī)解碼等 SOTA 壓縮技術(shù)集于一身用于壓縮深度學(xué)習(xí)模型并加速在 TensorRT-LLM、vLLM 等推理框架上的部署。其中Minitron 剪枝是壓縮 LLM 的殺手锏它按激活重要性把 LLM 的層數(shù)、隱層寬度、FFN 寬度、注意力頭、MoE 專家數(shù)逐維度砍掉默認(rèn)搜索空間允許每個寬度維度最多削減 40%再用知識蒸餾把損失的能力找回來。本文將帶你完整走一遍「剪枝 → 蒸餾 → 量化 → 部署」的全流程并附官方復(fù)現(xiàn)數(shù)據(jù)。Minitron 剪枝是什么一分鐘看懂原理剪枝Pruning是移除神經(jīng)網(wǎng)絡(luò)中冗余參數(shù)以減小模型體積的結(jié)構(gòu)性壓縮技術(shù)。Minitron 的核心思路只有四步重要性打分在校準(zhǔn)數(shù)據(jù)約 512–1024 條樣本上跑前向統(tǒng)計(jì)每個神經(jīng)元/注意力頭/層的激活幅值8B 模型約 5 分鐘排序在每個剪枝維度內(nèi)所有隱層維度、所有注意力頭等按重要性排序剪枝移除最不重要的參數(shù)直到滿足目標(biāo)尺寸權(quán)重切片所有層統(tǒng)一剪到相同結(jié)構(gòu)同質(zhì)剪枝得到可直接用標(biāo)準(zhǔn)方式保存/加載的小模型。Minitron 支持兩種模式詳見 examples/pruning/README.md模式你指定什么適合場景手動剪枝各維度目標(biāo)尺寸如hidden_size3584明確知道要壓到多大、或?qū)С?Top-K 架構(gòu)做候選NAS 自動剪枝目標(biāo)參數(shù)量如params6e9不知道具體尺寸讓算法在搜索空間里自動找最優(yōu)架構(gòu)自動模式下算法會在「寬度最多剪 40%、深度最多剪 20%」的約束內(nèi)生成上萬種候選架構(gòu)用打分函數(shù)如 MMLU評估 Top-K 個候選選出得分最高的子網(wǎng)再切權(quán)重——這就是標(biāo)題里砍掉 40%的由來。全流程一覽數(shù)據(jù)準(zhǔn)備 → 剪枝 → 蒸餾 → 評估 → 量化 → 部署官方示例以Nemotron-Nano-9B-v2 從 9B 剪到 7B為最小示例examples/pruning/minitron/NVIDIA-Nemotron-Nano-9B-v2/README.md以Nemotron-3-Nano-30B-A3B 從 31.6B 剪到 22B/A3.0B為進(jìn)階示例examples/megatron_bridge/tutorials/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16/README.md。兩條路徑的步驟完全一致第 1 步準(zhǔn)備蒸餾數(shù)據(jù)蒸餾質(zhì)量決定剪枝后的恢復(fù)上限。官方推薦的數(shù)據(jù)配方是30% 預(yù)訓(xùn)練數(shù)據(jù) 70% 后訓(xùn)練數(shù)據(jù)數(shù)學(xué)、代碼、科學(xué)、指令跟隨各占一定權(quán)重。數(shù)據(jù)集先按官方流程做 tokenize 與配比混合完整命令見 examples/dataset/MEGATRON_DATA_PREP.md。新手沒有自己的語料時可直接使用官方推薦的 Nemotron 系列數(shù)據(jù)集。第 2 步一條命令完成 Minitron 剪枝剪枝腳本是 examples/megatron_bridge/prune_minitron.py在 8×H100 單節(jié)點(diǎn)上約 1 小時跑完 9B 模型torchrun --nproc_per_node 8 prune_minitron.py \ --hf_model_name_or_path nvidia/NVIDIA-Nemotron-Nano-9B-v2 \ --prune_target_params 7e9 \ --hparams_to_skip num_attention_heads \ --seq_length 8192 \ --output_hf_path /path/to/Pruned-7B常用參數(shù)速查--prune_target_params目標(biāo)總參數(shù)量如7e9 壓到 7B--prune_target_active_paramsMoE 模型專用按激活參數(shù)約束MoE 推理成本取決于激活參數(shù)--prune_score_func候選架構(gòu)打分函數(shù)默認(rèn)用 10% 采樣的 MMLU--hparams_to_skip跳過難恢復(fù)的維度官方實(shí)踐中普遍跳過num_attention_heads--max_width_pruning / --max_depth_pruning寬度/深度剪枝上限默認(rèn) 0.40 / 0.20。運(yùn)行日志會打印 Top-10 候選架構(gòu)及得分例如 9B→7B 實(shí)驗(yàn)中最終勝出的是num_layers48, hidden_size4352, mamba_num_heads120, mamba_head_dim80, ffn_hidden_size13824。輸出的就是一個標(biāo)準(zhǔn) HuggingFace 檢查點(diǎn)可以直接進(jìn)入下一步。Qwen3-8B 上 Minitron 與異構(gòu)剪枝 Puzzletron 的「剪枝 蒸餾」MMLU 對比結(jié)果如下剪枝前模型幾乎不可用蒸餾后大幅恢復(fù)第 3 步知識蒸餾找回精度關(guān)鍵一步剪完即用的模型基本失憶9B 剪到 7B 后未經(jīng)蒸餾的平均基準(zhǔn)分只有 18.4。必須用原始模型當(dāng)教師做知識蒸餾腳本是 examples/megatron_bridge/distill.pytorchrun --nproc_per_node 8 distill.py \ --teacher_hf_path nvidia/NVIDIA-Nemotron-Nano-9B-v2 \ --student_hf_path /path/to/Pruned-7B \ --seq_length 8192 --gbs 768 --train_iters 16000 \ --lr 1e-4 --min_lr 1e-5官方推薦的蒸餾超參數(shù)來自 examples/pruning/README.md 的 Pruning Guidelines超參數(shù)建議值序列長度8192數(shù)據(jù)集序列短則用 4096全局 Batch Size與原訓(xùn)練一致或 768學(xué)習(xí)率1e-4 → 1e-5 線性衰減壓縮率越高起點(diǎn)越高訓(xùn)練量80–100B tokens 效果最佳數(shù)據(jù)配比標(biāo)準(zhǔn)模型 100% 預(yù)訓(xùn)練推理模型 70% 推理數(shù)據(jù) 30% 預(yù)訓(xùn)練 經(jīng)驗(yàn)法則若知道原訓(xùn)練的最大學(xué)習(xí)率壓縮約 50% 時用它的1/5作為蒸餾起點(diǎn)。蒸餾過程中各基準(zhǔn)分?jǐn)?shù)的恢復(fù)曲線9B→7B橫軸為訓(xùn)練 token 數(shù)可以看到 2.5B tokens 時大部分能力已恢復(fù)80B tokens 后 7B 模型在 GPQA、IFEval 上甚至反超官方 9B 模型——這得益于 12B→9B→7B 的迭代剪枝策略每次壓 25% 左右。蒸餾損失曲線同樣平穩(wěn)下降Minitron 子網(wǎng)與 Puzzletron 子網(wǎng)都能穩(wěn)定收斂第 4 步評估 FP8 量化疊加恢復(fù)精度后用 NeMo Evaluator 跑 MMLU、MMLU Pro、GPQA、LiveCodeBench、AIME 等基準(zhǔn)配置文件見 nemo_evaluator.yaml。Model Optimizer 的一大亮點(diǎn)是技術(shù)可疊加剪枝蒸餾完成后再用 examples/hf_ptq/hf_ptq.py 做 FP8 量化一行命令完成校準(zhǔn)與導(dǎo)出python hf_ptq.py --pyt_ckpt_path 蒸餾后檢查點(diǎn) \ --export_path 輸出路徑 --qformat fp8 --trust_remote_code第 5 步部署到 vLLM / TensorRT-LLM量化后的檢查點(diǎn)可直接被 vLLM、TensorRT-LLM、SGLang 加載。在單張 H100 上輸入 32K/輸出 1K的實(shí)測吞吐檢查點(diǎn)顯存占用輸出 tokens/s相對原版加速Nemotron-3-Nano-30B-A3B-BF16官方58.9 GiB5981.0×剪枝后 22B/A3.0B-BF1641.5 GiB1,1902.0×剪枝 22B FP822.8 GiB1,5762.6×剪枝-30% 參數(shù)與 FP8 量化疊加后30B MoE 模型實(shí)現(xiàn)2.6× 吞吐加速 2.6× 顯存下降且基準(zhǔn)分僅比官方 30B 低 1.6 分70.5 vs 72.1新手實(shí)踐清單剪枝比例與常見坑官方 Pruning Guidelinesexamples/pruning/README.md總結(jié)的核心經(jīng)驗(yàn)深度 vs 寬度深度剪枝減層數(shù)配置最簡單、固定參數(shù)下推理更快寬度剪枝減 hidden/FFN同參數(shù)下精度更好。追求最優(yōu)效果時兩者結(jié)合但調(diào)參成本更高超過 1/3 的壓縮是安全區(qū)剪掉 1/3 以內(nèi) 高質(zhì)量數(shù)據(jù)80–100B tokens蒸餾通常能得到延遲-精度帕累托前沿上的模型壓縮 50% 請迭代剪枝先壓 30% → 蒸餾 → 再壓 30% → 再蒸餾一次壓太多很難恢復(fù)FFN 比 hidden 更好剪MLP 維度ffn_hidden_size可以比嵌入維度和注意力維度剪得更激進(jìn)注意力頭跳過剪官方復(fù)現(xiàn)中普遍--hparams_to_skip num_attention_heads因?yàn)樽⒁饬︻^剪枝最難恢復(fù)蒸餾后還要后訓(xùn)練若需要推理能力蒸餾后追加指令微調(diào)/偏好對齊如 Nemotron-Post-Training-Dataset-v2。完整資料索引想動手復(fù)現(xiàn)建議按以下順序閱讀倉庫中的文件examples/pruning/README.md — 剪枝總覽Minitron / Puzzletron / FastNAS 三種算法、支持矩陣與調(diào)參指南examples/pruning/minitron/NVIDIA-Nemotron-Nano-9B-v2/README.md — 9B→7B 完整端到端教程數(shù)據(jù)、剪枝、蒸餾、評估、量化、vLLM 壓測examples/megatron_bridge/README.md — Megatron-Bridge 框架下的剪枝與蒸餾操作手冊含多機(jī) Slurm 用法examples/pruning/minitron_vs_puzzletron/README.md — Minitron 與 Puzzletron 的場景選型與對比實(shí)驗(yàn)examples/dataset/MEGATRON_DATA_PREP.md — 蒸餾數(shù)據(jù) tokenize 與配比準(zhǔn)備modelopt/torch/prune/ — 剪枝算法源碼實(shí)現(xiàn)docs/source/guides/3_pruning.rst — 官方剪枝 API 文檔。環(huán)境方面剪枝 LLM 建議直接使用 NeMo 容器nvcr.io/nvidia/nemo:26.08并掛載 Model-Optimizer 倉庫運(yùn)行避免手工安裝 Megatron 全家桶依賴。剪枝后如果還想進(jìn)一步壓顯存記得 Model Optimizer 的量化、QAT量化感知蒸餾、稀疏化都能在同一套工作流里無縫疊加——這就是統(tǒng)一壓縮庫的價值所在?!久赓M(fèi)下載鏈接】Model-OptimizerA 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.項(xiàng)目地址: https://gitcode.com/GitHub_Trending/te/Model-Optimizer創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考