PaddleSlim 版本需与 PaddlePaddle、PaddleLite 版本对齐,例如 2.4.0 对应 PaddlePaddle 2.4.0;部分 NAS 与蒸馏方法仅支持静态图或仅支持动态图,选型前需确认;部署到移动端需额外安装 Paddle Lite 预测库。
PaddleSlim
PaddlePaddleApache-2.0更新放缓飞桨生态下的模型压缩与架构搜索库,提供剪枝、量化、蒸馏和 NAS 等能力,帮你在部署前把深度模型压小提速。
PaddleSlim is an open-source library for deep model compression and architecture search.
pip install paddleslimREADME 未说明具体显存要求;压缩效果测试覆盖 Nvidia GPU、ARM CPU 等设备,量化部署支持 Paddle Inference(GPU/Intel CPU)、Paddle Lite 和 ONNX。
PaddleSlim 是飞桨生态的模型压缩库,提供量化、蒸馏、剪枝和 NAS,帮开发者把模型做小做快
飞桨生态下的模型压缩与架构搜索库,提供剪枝、量化、蒸馏和 NAS 等能力,帮你在部署前把深度模型压小提速。
核心能力
- 支持 QAT、PACT、静态/动态 PTQ 与 Embedding 量化
- 提供敏感度、FPGM、L1/L2 Norm 等多种通道剪枝策略
- 内置 SANAS、RLNAS、DARTS、Once-for-All 等 NAS 搜索
- 支持 FSP、DML、DK 知识蒸馏方法
- 自动化压缩只需推理模型和数据即可完成 PTQ/QAT/稀疏训练
容易踩的坑
- v2.6.0最新正式版2024-01-03 · 2024-01-03 12:39 UTC
1.量化:
- 支持量化算法:SmoothQuant、Outlier Suppression+、AWQ、GPTQ
- 新增自研量化算法Piecewise Search Smooth(PSS)
- 支持NF4量化
- v2.4.1v2.4.02023-01-05 · 2023-01-05 06:29 UTC
这个版本没有写更新说明。
- v2.4.02022-11-29 · 2022-11-29 09:41 UTC
查看更新说明
1. 量化
- 新增QDrop, BRECQ两种量化算法
- 支持导出新量化模型格式
- 量化模型新格式与Paddle Inference TensorRT&MKLDNN打通
2. 自动化压缩
- 修复若干易用性问题
- 支持huggingface BERT模型
- 增加SKD(Self-supervised Knowledge Distillation)蒸馏策略
- v2.3.02022-07-11 · 2022-07-11 09:09 UTC
查看更新说明
1.模型自动化压缩
- 发布自动化压缩工具ACT(Auto Compression Toolkit)
- 解耦训练代码,基于推理模型和无监督数据,性能等效人工压缩
- 支持PaddlePaddle、Pytorch、TensorFlow产出的推理模型
- 发布图像语义分割、图像目标检测、图像分类和自然语言预训练模型的自动压缩示例
- 发布Pytorch BERT、Pytorch YOLOv6、TensorFlow MobileNet自动化压缩示例
- 发布自动化压缩工具ACT(Auto Compression Toolkit)
- v2.2.22022-01-21 · 2022-01-21 06:37 UTC
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
PaddleSlim是一个专注于深度学习模型压缩的工具库,提供低比特量化、知识蒸馏、稀疏化和模型结构搜索等模型压缩策略,帮助开发者快速实现模型的小型化。
产品动态
-
🔥 2022.01.18: 发布YOLOv8自动化压缩示例,量化预测加速2.5倍。
-
【直播分享】2022-12-13 20:30 《自动化压缩技术详解及ViT模型实战》,微信扫码报名
- 支持直接加载ONNX模型和Paddle模型导出至ONNX
- 发布量化分析工具,发布YOLO系列离线量化工具
- 更新YOLO-Series自动化压缩模型库
| 模型 | Base mAPval0.5:0.95 | ACT量化mAPval0.5:0.95 | 模型体积压缩比 | 预测时延FP32 | 预测时延INT8 | 预测加速比 |
|---|---|---|---|---|---|---|
| PPYOLOE-s | 43.1 | 42.6 | 3.9倍 | 6.51ms | 2.12ms | 3.1倍 |
| YOLOv5s | 37.4 | 36.9 | 3.8倍 | 5.95ms | 1.87ms | 3.2倍 |
| YOLOv6s | 42.4 | 41.3 | 3.9倍 | 9.06ms | 1.83ms | 5.0倍 |
| YOLOv7 | 51.1 | 50.9 | 3.9倍 | 26.84ms | 4.55ms | 5.9倍 |
| YOLOv7-Tiny | 37.3 | 37.0 | 3.9倍 | 5.06ms | 1.68ms | 3.0倍 |
-
2022.07.01: 发布v2.3.0版本
-
2021.11.15: 发布v2.2.0版本
- 支持动态图离线量化功能.
-
2021.5.20: 发布V2.1.0版本
- 扩展离线量化方法
- 新增非结构化稀疏
- 增强剪枝功能
- 修复OFA功能若干bug
更多信息请参考:release note
基础压缩功能概览
PaddleSlim支持以下功能,也支持自定义量化、裁剪等功能。
注:
- *表示仅支持静态图,**表示仅支持动态图
- 敏感度裁剪指的是通过各个层的敏感度分析来确定各个卷积层的剪裁率,需要和其他裁剪方法配合使用。
PaddleSlim在典型视觉和自然语言处理任务上做了模型压缩,并且测试了Nvidia GPU、ARM等设备上的加速情况,这里展示部分模型的压缩效果,详细方案可以参考下面CV和NLP模型压缩方案:
- YOLOv3: 在移动端SD855上加速3.55倍。
- PP-OCR: 体积由8.9M减少到2.9M, 在SD855上加速1.27倍。
- BERT: 模型参数由110M减少到80M,精度提升的情况下,Tesla T4 GPU FP16计算加速1.47倍。
不同压缩方法效果
安装
安装发布版本:
pip install paddleslim
安装develop版本:
git clone https://github.com/PaddlePaddle/PaddleSlim.git & cd PaddleSlim
python setup.py install
- 验证安装:安装完成后您可以使用 python 或 python3 进入 python 解释器,输入import paddleslim, 没有报错则说明安装成功。
- 版本对齐:
| PaddleSlim | PaddlePaddle | PaddleLite |
|---|---|---|
| 2.0.0 | 2.0 | 2.8 |
| 2.1.0 | 2.1.0 | 2.8 |
| 2.1.1 | 2.1.1 | >=2.8 |
| 2.3.0 | 2.3.0 | >=2.11 |
| 2.4.0 | 2.4.0 | >=2.11 |
| develop | develop | >=2.11 |
文档教程
模型压缩技术
快速开始
更多教程
进阶教程详细介绍了每一步的流程,帮助您把相应方法迁移到您自己的模型上。
-
通道剪裁
-
低比特量化
-
NAS
-
蒸馏
推理部署
CV模型压缩
多场景效果展示
本系列教程均基于Paddle官方的模型套件中模型进行压缩,若您不是模型套件用户,更推荐使用快速教程和进阶教程。
-
检测模型压缩
-
压缩方案
-
方法应用-静态图
-
方法应用-动态图
-
-
分割模型压缩
-
OCR模型压缩
-
压缩方案
-
方法应用-静态图
-
方法应用-动态图
-
NLP模型压缩
API文档
FAQ
1. 量化训练或者离线量化后的模型体积为什么没有变小?
答:这是因为量化后保存的参数是虽然是int8范围,但是类型是float。这是因为Paddle训练前向默认的Kernel不支持INT8 Kernel实现,只有Paddle Inference TensorRT的推理才支持量化推理加速。为了方便量化后验证量化精度,使用Paddle训练前向能加载此模型,默认保存的Float32类型权重,体积没有发生变换。
2. macOS + Python3.9环境或者Windows环境下, 安装出错, "command 'swig' failed"
答: 请参考https://github.com/PaddlePaddle/PaddleSlim/issues/1258
许可证书
本项目的发布受Apache 2.0 license许可认证。
贡献代码
我们非常欢迎你可以为PaddleSlim提供代码,也十分感谢你的反馈。
技术交流
-
如果你发现任何PaddleSlim存在的问题或者是建议, 欢迎通过GitHub Issues给我们提issues。
-
欢迎加入PaddleSlim 微信技术交流群