十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Torch-Pruning 选型指南:6 个官方示例场景让模型瘦身,该从哪一步开始?

Torch-Pruning 选型指南:6 个官方示例场景让模型瘦身,该从哪一步开始? Torch-Pruning 选型指南6 个官方示例场景让模型瘦身该从哪一步开始【免费下载链接】Torch-Pruning[CVPR 2023] DepGraph: Towards Any Structural Pruning; LLMs, Vision Foundation Models, etc.项目地址: https://gitcode.com/gh_mirrors/to/Torch-Pruning如果你的 PyTorch 模型体积太大、推理太慢Torch-Pruning 这个开源结构剪枝框架值得花 4 分钟了解一下。本文带你逐个看它examples/目录下的 6 个即用示例场景读完你就能判断剪 LLM、剪视觉模型、剪检测模型各该从哪个入口起步以及用 4 步拿到一个真正变小的模型。 3 分钟快速选型6 个场景一张表模块核心场景上手难度推荐指数examples/torchvision_models/一键批量剪 77 个 torchvision 模型⭐⭐⭐⭐⭐examples/LLMs/Llama / Qwen / Phi-3 宽度压缩⭐⭐⭐⭐⭐⭐⭐examples/timm_models/ViT、ConvNext 等 timm 模型剪枝⭐⭐⭐⭐⭐⭐examples/transformers/HF ViT / Swin / BERT 剪枝加微调⭐⭐⭐⭐⭐⭐⭐examples/yolov5/等YOLO 系列检测模型瘦身⭐⭐⭐⭐⭐⭐reproduce/复现论文基准、对比重要度方法⭐⭐⭐⭐⭐⭐⭐三句话选路想当天看结果先跑examples/torchvision_models/的一键批量脚本几十分钟剪完 77 个模型。想把大模型塞进显存用examples/LLMs/prune_llm.py7B 一条命令压到 2B。剪完想找回精度走examples/transformers/剪枝与微调的 shell 脚本都配好了。 它是什么真正删掉权重的剪枝框架Torch-PruningTP是一个面向 PyTorch 的结构剪枝框架核心是 CVPR 2023 论文提出的 DepGraph 算法剪掉某一层的通道时它自动沿计算图找出所有耦合的层把它们一起删干净。这和 PyTorch 自带的torch.nn.utils.prune有本质区别——后者只是给权重打掩码、数值置零模型结构不变、推理照样慢TP 改的是模型本身体积和耗时都真实下降。它依赖极简只需 PyTorch 和 Numpy。 一句话理解掩码剪枝省的是纸面参数结构剪枝省的是真实显存和推理时间TP 把后者繁琐的牵一发动全身记账工作自动化了。 逐站点评6 个示例每站都有能直接跑的脚本DepGraph 要解决的核心问题是剪一处、牵一片。下图是 Residual、Concat 等 4 类常见依赖被高亮的参数必须同时剪掉而 TP 会自动帮你找到它们。第一站一键批量剪 77 个 torchvision 模型适合谁想最快体验结构剪枝效果的人examples/torchvision_models/torchvision_pruning.py覆盖 ResNet、VGG、EfficientNet、ViT、FasterRCNN、DeepLab 等 77 个模型一条命令批量剪枝并如实列出 8 个暂不支持的模型。✅ 一键跑批成功与失败清单一目了然✅ 直接打印剪枝前后 MACs 与参数量对比⚠️ swin、shufflenet 等 8 个模型暂不支持需自行适配第二站把 Llama、Qwen、Phi-3 压到原体积三分之一适合谁需要降低大模型显存与部署成本的人examples/LLMs/prune_llm.py用幅值重要度均匀压缩模型宽度实测覆盖 Llama-2/3、Qwen2/2.5、Phi-3-mini、DeepSeek-R1-Distill 等 9 个模型7B 一条命令变 2B并自动在 wikitext2 上算困惑度。✅ 一条命令从 7B 压到 2B结构清晰可见✅ 自动评估 wikitext2 困惑度效果当场可查⚠️ 剪枝比须为 KV 头数的整数倍否则 HF 无法加载第三站剪 ViT 与 ConvNext 等 timm 模型适合谁使用 timm 模型库做分类的人examples/timm_models/prune_timm_models.py支持列出全部 timm 模型再按名字剪枝ViT-B/32 的 MACs 从 4.42G 降到 1.15GConvNext-xxlarge 参数从 846M 降到 213M。✅--list_models一条命令列出全部可用模型✅ ConvNext 的 gamma 等特殊参数开箱即可处理⚠️ 部分 ViT 需改写 forward参考examples/transformers/的做法第四站HF 的 ViT、Swin、BERT 剪枝加微调适合谁剪枝后要补回精度再上线的人examples/transformers/为 ViT、Swin、BERT 配好了成对的剪枝与微调 shell 脚本L1、L2、Taylor、Hessian 四种重要度随便换微调后 ViT-B/16 可回到 79%~80% 精度。✅ 剪枝、微调、测时延脚本全齐按序执行即可✅ 四种重要度方法可切换附预剪枝模型下载⚠️ 微调需要 ImageNet 数据集建议多卡环境运行第五站YOLO 检测模型瘦身适合谁做端侧或边缘设备推理的人examples/yolov5/、examples/yolov7/、examples/yolov8/各自带剪枝脚本和剪枝后的检测验证脚本剪完当场看 mAP 掉没掉。✅ 附剪枝后检测验证脚本效果当场可查✅ yolov7 同时给出训练与推理两套示例⚠️ yolov8 示例受上游仓库升级影响注意版本锁定第六站复现论文基准对比重要度方法适合谁想横向对比方法或调参做研究的人reproduce/提供 ResNet-56CIFAR-10与 ResNet-50ImageNet基准脚本L1、BN、GReg、Group 四种重要度可并列跑还配了时延测试量化真实加速。✅ 四种重要度方法并列对比结论可复现✅ 时延基准脚本加速比不靠猜⚠️ CIFAR 预训练权重需自行下载或先训练一轮 从零跑起来4 步拿到瘦身模型安装框架运行pip install torch-pruning要求 PyTorch 不低于 2.0若要改源码先git clone https://gitcode.com/gh_mirrors/to/Torch-Pruning再执行pip install -e .。挑一个示例跑通看examples/目录索引选与你模型最接近的场景例如在examples/torchvision_models/下运行python torchvision_pruning.py控制台直接输出剪枝前后的 MACs 与参数量。换成自己的模型参照 README 的 QuickStart——构建 DepGraph 依赖图、取剪枝组、调用group.prune()把模型和示例输入换成你自己的即可改动只有几行。正确保存瘦身模型剪枝后结构已变必须用torch.save(model, ...)保存整个模型别用.state_dict()否则加载时对不上结构。⚠️ 版本对齐三件事TP 要求 PyTorch 不低于 2.0LLM 剪枝比要满足 KV 头数整除约束才能用 HF 格式加载PyTorch 2.6 之后加载模型可能需要加weights_onlyFalse。 下一步本周就能做的 3 件事如果模型已在生产环境、你想先验证瘦身空间建议本周就走一遍上面 4 步先用 torchvision 批量脚本建立手感再换成自己的模型跑一次最后用整模型方式存盘验证加载。剪完精度不达标时回examples/transformers/抄一遍剪枝 微调的脚本流程是最快的补救路径。另外记住一个小技巧剪枝后把通道数对齐到 4 或 8 的倍数GPU 加速效果最明显。核心库源码torch_pruning/DepGraph 在torch_pruning/dependency/全部示例索引examples/基准复现脚本reproduce/中文文档README_CN.md安装与依赖声明setup.py【免费下载链接】Torch-Pruning[CVPR 2023] DepGraph: Towards Any Structural Pruning; LLMs, Vision Foundation Models, etc.项目地址: https://gitcode.com/gh_mirrors/to/Torch-Pruning创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表