mmrazor
OpenMMLab 生态模型压缩工具箱,支持 NAS、剪枝、量化、蒸馏四大技术
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
OpenMMLab 生态模型压缩工具箱,支持 NAS、剪枝、量化、蒸馏四大技术
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象你训练出了一个精度超高的目标检测模型,准确率高达 98%,但当你把它部署到边缘设备——比如仓库里的巡检机器人、车载摄像头——却发现帧率只有 2 FPS,显存爆满,设备直接死机。这就是 AI 落地时最常见的"精度-效率"矛盾:学术 benchmark 上的 SOTA 模型,往往是 GPU 服务器上的性能怪兽,而非用户手中的实用工具。
OpenMMLab MMRazor(模型压缩工具箱和基准测试)就是为了解决这个矛盾而生的。它的核心使命是:在尽量不损失精度的前提下,让大模型变小、变快、变轻,从而真正跑得动、跑得快、跑得起。
图1:MMRazor 设计与实现架构图——覆盖 NAS、剪枝、量化、知识蒸馏四大技术路线
MMRazor 隶属于OpenMMLab 开源计算机视觉算法库体系——这是国内最具影响力的 CV 开源社区之一,旗下拥有 MMDetection(目标检测)、MMSegmentation(语义分割)、MMClassification(图像分类)等数十个工具箱,覆盖了 CV 领域几乎所有主流任务。
在 OpenMMLab 生态中,各工具箱解决的是"如何训练高精度模型"的问题,而 MMRazor 解决的是"如何让模型真正落地部署"的问题。两者相辅相成:一个负责炼丹(训练),一个负责炼金(压缩)。2021年正式开源以来,MMRazor 已集成超过 20 种主流模型压缩算法,覆盖 NeurIPS、ICLR、ICCV 等顶会核心工作,成为学界与工业界沟通的桥梁。
可以把大模型想象成一位知识渊博但行动迟缓的专家教授——他什么都懂,但讲话太慢、走太慢,无法在有限时间内完成大量任务。MMRazor 就是这位教授的私人健身教练,通过四种方式帮他"塑形":
神经架构搜索(NAS):实现了 SPOS、DARTS、BigNAS、Autoformer、DSNAS 等主流方法。其中 SPOS(Single Path One-Shot)通过随机采样单路径实现高效搜索,BigNAS 则在一次性训练中同时完成搜索和微调,大幅降低计算成本。
模型剪枝(Pruning):包括通道剪枝(Channel Pruning)和层级剪枝。DCFF(Dynamic Convolution Feature Fusion)、DMCP(Differentiable Multi-Architecture Search)等算法通过可微分方式自动确定剪枝比例,Group Fisher 方法则基于 Fisher 信息量评估通道重要性。
量化(Quantization):支持 PTQ(训练后量化)和 QAT(量化感知训练)两种范式。LSQ(Learned Step Size Quantization)通过学习量化步长提升精度,MMArchitectureQuant 专门针对 OpenMMLab 架构优化。
知识蒸馏(Distillation):覆盖单教师蒸馏(CWD、WSLD)、无数据蒸馏(DAFL、DFAD)、特征蒸馏(OFD、FitNets)、自蒸馏(BYOT、SelfDistill)等多种范式。DKD(Decoupled Knowledge Distillation)通过解耦暗知识目标提升了蒸馏效率。
MMRazor 的代码架构遵循 OpenMMLab 的"配置驱动 + 模块化"风格:
mmrazor/
├── models/algorithms/ # 算法核心:NAS/Pruning/Quantization/Distillation
├── models/architectures/ # 视觉骨干网络和完整模型
├── models/distillers/ # 知识蒸馏实现
├── models/mutables/ # 可变通道/值抽象层
├── models/mutators/ # 搜索策略控制器
├── models/task_modules/ # 任务特定模块(分类头、检测头等)
├── implementations/ # 落地实现(Group Fisher、SparseGPT 等)
├── engine/ # 训练钩子、优化器、Runner
└── visualization/ # 可视化工具
这种设计的核心思想是**"可变(Mutable)"抽象**——网络中的通道数、卷积核大小等不再是硬编码,而是可以被"搜索代理"(Mutator)动态调整的对象。这使得同一个剪枝算法可以应用于完全不同的网络架构,极大提升了代码复用性。
图2:OpenMMLab 模型压缩产品矩阵,MMRazor 是其中核心压缩引擎
用户无需修改 Python 代码,只需编写 YAML 配置文件指定算法和超参数,即可运行压缩任务:
# 通过 configs 目录下的配置文件一键运行
python tools/train.py configs/pruning/mmcls/autoslim.py
python tools/ptq.py configs/quantization/ptq/base.py
configs 目录按任务类型组织(nas、pruning、quantization、distill、vanilla),每个算法都有对应的基准配置,覆盖图像分类、目标检测、语义分割等任务。
优点:
局限:
MMRazor 所在的模型压缩赛道正处于爆发期。随着大模型(LLM、Vision-Language Model)规模越来越大,如何在端侧设备(手机、嵌入式芯片、IoT设备)上高效部署,成为制约 AI 落地的关键瓶颈。MMRazor 代表的"工具箱"路线,通过集成多种压缩算法并提供统一接口,降低了研究人员和企业工程师的实验成本。
从行业趋势看,模型压缩正从"手工设计"走向"自动搜索"(NAS),MMRazor 的 mutables + mutators 抽象正是这一趋势的代码级体现。同时,随着 GPT-4V 等多模态大模型的出现,如何压缩多模态模型也将成为下一阶段的研究重点,MMRazor 的架构设计为接入新任务类型预留了扩展空间。
| 维度 | 评估 |
|---|---|
| 算法丰富度 | ★★★★★(20+ 算法,覆盖 NAS/剪枝/量化/蒸馏) |
| OpenMMLab 生态整合 | ★★★★★(原生对接 MM 系列工具箱) |
| 部署便利性 | ★★☆☆☆(无 Web UI,依赖复杂,需 GPU) |
| 文档质量 | ★★★★☆(基础文档完善,高级功能文档偏少) |
| 社区活跃度 | ★★★☆☆(有一定用户基础但更新节奏放缓) |
MMRazor 适合有 OpenMMLab 使用基础的研究者和工程师——如果你已经在用 MMDetection 做目标检测,想把训练好的模型压缩后部署到边缘设备,MMRazor 是目前最成熟的选择之一。如果你需要纯 Python pip 安装就能用的轻量压缩工具,或者需要图形界面操作,则可以考虑其他方案。