PaddleSlim

PaddlePaddleApache-2.0更新放缓

飞桨生态下的模型压缩与架构搜索库,提供剪枝、量化、蒸馏和 NAS 等能力,帮你在部署前把深度模型压小提速。

PaddleSlim is an open-source library for deep model compression and architecture search.

v2.6.0发布于 2024-01-03 12:39 UTC1,614star351fork同步于 2026-11-07 07:33 UTC

怎么上手

由 README 提炼,执行前请确认
pip install paddleslim
硬件要求按 README 说明

README 未说明具体显存要求;压缩效果测试覆盖 Nvidia GPU、ARM CPU 等设备,量化部署支持 Paddle Inference(GPU/Intel CPU)、Paddle Lite 和 ONNX。

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

PaddleSlim 是飞桨生态的模型压缩库,提供量化、蒸馏、剪枝和 NAS,帮开发者把模型做小做快

飞桨生态下的模型压缩与架构搜索库,提供剪枝、量化、蒸馏和 NAS 等能力,帮你在部署前把深度模型压小提速。

核心能力

  • 支持 QAT、PACT、静态/动态 PTQ 与 Embedding 量化
  • 提供敏感度、FPGM、L1/L2 Norm 等多种通道剪枝策略
  • 内置 SANAS、RLNAS、DARTS、Once-for-All 等 NAS 搜索
  • 支持 FSP、DML、DK 知识蒸馏方法
  • 自动化压缩只需推理模型和数据即可完成 PTQ/QAT/稀疏训练

容易踩的坑

PaddleSlim 版本需与 PaddlePaddle、PaddleLite 版本对齐,例如 2.4.0 对应 PaddlePaddle 2.4.0;部分 NAS 与蒸馏方法仅支持静态图或仅支持动态图,选型前需确认;部署到移动端需额外安装 Paddle Lite 预测库。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本v2.6.0
  1. v2.6.0最新正式版2024-01-03 · 2024-01-03 12:39 UTC

    1.量化:

    • 支持量化算法:SmoothQuant、Outlier Suppression+、AWQ、GPTQ
    • 新增自研量化算法Piecewise Search Smooth(PSS)
    • 支持NF4量化
  2. v2.4.1v2.4.02023-01-05 · 2023-01-05 06:29 UTC

    这个版本没有写更新说明。

  3. 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)蒸馏策略
  4. 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自动化压缩示例
  5. v2.2.22022-01-21 · 2022-01-21 06:37 UTC
    查看更新说明

    v2.2.2 Release Note

    问题修复

    1. 离线量化支持DataLoader. PR#968 @yghstill
    2. 修复非结构化稀疏训练从checkpoint恢复训练的问题。PR #960 @minghaoBD
    3. 为非结构化稀疏添加uniform sparsity功能,可以进一步加快推理速度,同时可能会带来比较小的精度损失(较上一版非结构化稀疏精度)。 #956 @minghaoBD
    4. 修复动态图非结构化稀疏跳过参数过多的问题。#955 @minghaoBD

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    PaddleSlim是一个专注于深度学习模型压缩的工具库,提供低比特量化、知识蒸馏、稀疏化和模型结构搜索等模型压缩策略,帮助开发者快速实现模型的小型化。

    产品动态

    • 🔥 2022.01.18: 发布YOLOv8自动化压缩示例,量化预测加速2.5倍。

    • 【直播分享】2022-12-13 20:30 《自动化压缩技术详解及ViT模型实战》,微信扫码报名

    模型Base mAPval0.5:0.95ACT量化mAPval0.5:0.95模型体积压缩比预测时延FP32预测时延INT8预测加速比
    PPYOLOE-s43.142.63.9倍6.51ms2.12ms3.1倍
    YOLOv5s37.436.93.8倍5.95ms1.87ms3.2倍
    YOLOv6s42.441.33.9倍9.06ms1.83ms5.0倍
    YOLOv751.150.93.9倍26.84ms4.55ms5.9倍
    YOLOv7-Tiny37.337.03.9倍5.06ms1.68ms3.0倍
    • 2022.07.01: 发布v2.3.0版本

      • 发布自动化压缩功能
        • 支持代码无感知压缩:开发者只需提供推理模型文件和数据,既可进行离线量化(PTQ)、量化训练(QAT)、稀疏训练等压缩任务。
        • 支持自动策略选择,根据任务特点和部署环境特性:自动搜索合适的离线量化方法,自动搜索最佳的压缩策略组合方式。
        • 发布自然语言处理、图像语义分割、图像目标检测三个方向的自动化压缩示例。
        • 发布X2Paddle模型自动化压缩方案:YOLOv5、YOLOv6、YOLOv7、HuggingFace、MobileNet。
      • 升级量化功能
        • 统一量化模型格式;离线量化支持while op;修复BERT大模型量化训练过慢的问题。
        • 新增7种离线量化方法, 包括HIST, AVG, EMD, Bias Correction, AdaRound等。
      • 支持半结构化稀疏训练
      • 新增延时预估工具
        • 支持对稀疏化模型、低比特量化模型的性能预估;支持预估指定模型在特定部署环境下 (ARM CPU + Paddle Lite) 的推理性能;提供 SD625、SD710、RK3288 芯片 + Paddle Lite 的预估接口。
        • 提供部署环境自动扩展工具,可以自动增加在更多 ARM CPU 设备上的预估工具。
    • 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, 没有报错则说明安装成功。
    • 版本对齐:
    PaddleSlimPaddlePaddlePaddleLite
    2.0.02.02.8
    2.1.02.1.02.8
    2.1.12.1.1>=2.8
    2.3.02.3.0>=2.11
    2.4.02.4.0>=2.11
    developdevelop>=2.11

    文档教程

    模型压缩技术

    快速开始

    更多教程

    进阶教程详细介绍了每一步的流程,帮助您把相应方法迁移到您自己的模型上。

    推理部署

    CV模型压缩

    多场景效果展示

    本系列教程均基于Paddle官方的模型套件中模型进行压缩,若您不是模型套件用户,更推荐使用快速教程和进阶教程。

    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 微信技术交流群