fasterai
PyTorch 模型压缩工具箱,一行代码实现稀疏化、剪枝、蒸馏、量化,让大模型减肥50%~90%
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
PyTorch 模型压缩工具箱,一行代码实现稀疏化、剪枝、蒸馏、量化,让大模型减肥50%~90%
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。

想象这样一个场景:你花了一周训练了一个图像分类模型,准确率 95%,但模型文件 500MB,部署到手机 App 上用户下载要等 10 分钟,还特别耗电。这是很多 AI 开发者都会遇到的问题——模型越来越大,效果越来越好,但部署却越来越难。
FasterAI 就是来解决这个矛盾的。这个由 FasterAI-Labs 团队(以研究员 Nathan Hubens 为核心)开发的开源库,专门提供稀疏化、剪枝、知识蒸馏、量化、正则化五大模型压缩技术,让 PyTorch 模型的体积缩小 50%~90%,同时尽量保持精度。
随着深度学习模型越来越大(如 GPT-4、ViT 等),模型部署面临三重困境:
学术界和工业界已形成共识:模型压缩不是在「牺牲精度」,而是在「优雅地取舍」。FasterAI 的出现正是为了让这些前沿压缩技术变得触手可及,无需深入研究底层原理,开发者也能快速应用到自己的项目中。

图1:稀疏化效果示意——将部分权重置零,减小模型体积
稀疏化是将模型中「不重要」的权重直接置为零,从而减少有效参数量。FasterAI 提供了高度可配置的 Sparsifier 类,支持:
对于 FastAI 用户,只需一行代码即可集成:
from fasterai.sparse.all import *
learn = vision_learner(dls, model)
learn.fit_one_cycle(n_epochs, cbs=SparsifyCallback(sparsity, granularity, context, criteria, schedule))
剪枝在稀疏化基础上更进一步——不仅将权重置零,还会物理上移除对应节点和连接,让模型结构本身变得更精简。FasterAI 的 Pruner 基于 torch_pruning 库实现,支持结构化剪枝(移除整个 filter/channel),这比非结构化剪枝在硬件层面更容易获得加速收益。

图2:剪枝效果——移除低权重节点,精简网络结构
知识蒸馏的核心思想是让「学生模型」学习「教师模型」的行为,不仅仅是模仿最终输出 logits,还包括中间层的激活值、注意力分布等多维度信息。FasterAI 实现了 KnowledgeDistillationCallback,支持:
activations_student 和 activations_teacher 对应层
图3:知识蒸馏——大教师模型指导小学生模型学习
量化将模型参数从高精度浮点数(通常是 FP32)转换为低精度表示(INT8、FP16 等)。FasterAI 的 Quantizer 基于 PyTorch 原生量化 API,支持:
正则化模块通过在训练损失函数中加入额外的正则项,推动权重向零靠近,从而间接达到稀疏效果。这与稀疏化的区别在于:正则化在训练过程中持续约束权重,而稀疏化通常在训练后应用。FasterAI 的 RegularizeCallback 可以指定正则强度、层级类型和调度策略。

图4:性能基准对比——压缩后模型精度基本持平
FasterAI 的代码采用典型的模块化插件架构,顶层分为六大子模块:
| 模块 | 核心类 | 功能 |
|---|---|---|
sparse | Sparsifier | 稀疏化核心引擎 |
prune | Pruner | 结构化剪枝 |
distill | KnowledgeDistillationCallback | 知识蒸馏 |
quantize | Quantizer | 量化转换 |
regularize | RegularizeCallback | 训练期正则化 |
core | criteria, schedule, granularity | 通用配置基元 |
值得注意的是,整个代码库通过 nbdev 框架 管理——所有核心逻辑以 Jupyter Notebook(.ipynb)形式存储,Python 源码(.py 文件)由 nbdev nbdev_export 自动生成。这种开发流程确保了文档和代码永远同步。
依赖层次:
torch、fastai(提供训练循环和工具函数)torch_pruning(结构化剪枝底层实现)einsops(张量重排)、fastcore(基础工具)matplotlib(可视化调度曲线)FasterAI 提供了两种使用方式:
方式一:pip 安装(推荐)
pip install fasterai
方式二:Docker 一键环境
项目根目录提供了 docker-compose.yml,包含预装 FasterAI 的 Jupyter Notebook 环境:
git clone https://github.com/FasterAI-Labs/fasterai.git
cd fasterai
docker-compose up notebook
# 访问 http://localhost:8080
文档网站 https://FasterAI-Labs.github.io/fasterai/ 提供了从入门到进阶的完整教程,涵盖:
尽管 FasterAI 功能强大,但仍有一些局限:
FasterAI 不仅仅是一个工具库,更代表了一种趋势——让模型压缩从科研走向工程。它有以下三个层面的价值:
作者 Nathan Hubens 在 Hugging Face 博客和 arXiv 上发表了相关研究,论文被引用于学术社区(HAL-Science 收录)。作为 Apache-2.0 许可的开源项目,商业使用无限制。

图5:filter 级别剪枝效果对比
项目信息