README.md 7.7 KB
Newer Older
W
whs 已提交
1
# PaddleSlim
W
wanghaoshuang 已提交
2

W
whs 已提交
3 4 5
[![Documentation Status](https://img.shields.io/badge/docs-latest-brightgreen.svg?style=flat)](https://paddleslim.readthedocs.io/en/latest/)
[![Documentation Status](https://img.shields.io/badge/中文文档-最新-brightgreen.svg)](https://paddleslim.readthedocs.io/zh_CN/latest/)
[![License](https://img.shields.io/badge/license-Apache%202-blue.svg)](LICENSE)
V
vincentXiyu 已提交
6

W
whs 已提交
7 8 9 10 11 12 13 14 15 16
## 简介

PaddleSlim是一个专注于深度学习模型压缩的工具库,提供**剪裁、量化、蒸馏、和模型结构搜索**等模型压缩策略,帮助用户快速实现模型的小型化。

## 版本对齐

|  PaddleSlim   | PaddlePaddle   | PaddleLite    | 备注        |
| :-----------: | :------------: | :------------:| :----------:|
| 1.0.1         | <=1.7          |       2.7     | 支持静态图  |
| 1.1.1         | 1.8            |       2.7     | 支持静态图  |
W
whs 已提交
17
| 1.2.0         | 2.0Beta/RC     |       2.8     | 支持静态图  |
W
whs 已提交
18 19
| 2.0.0         | 2.0            |       2.8     | 支持动态图和静态图  |

V
vincentXiyu 已提交
20

21
## 安装
V
vincentXiyu 已提交
22

W
whs 已提交
23
安装最新版本:
W
whs 已提交
24
```bash
W
whs 已提交
25
pip install paddleslim -i https://pypi.tuna.tsinghua.edu.cn/simple
W
whs 已提交
26
```
27

W
whs 已提交
28
安装指定版本:
29
```bash
W
whs 已提交
30
pip install paddleslim=2.0.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
31 32
```

W
whs 已提交
33 34 35
## 最近更新

2021.2.5: 发布V2.0.0版本,新增支持动态图,新增OFA压缩功能,优化剪枝功能。
W
whs 已提交
36 37 38
2020.9.16:  发布V1.2.0版本,新增PACT量化训练功能,新增DML(互蒸馏功能),修复部分剪裁bug,加强对depthwise_conv2d的剪裁能力,优化剪裁和量化API的易用性和灵活性。

更多信息请参考:[release note](https://github.com/PaddlePaddle/PaddleSlim/releases)
W
whs 已提交
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89

## 功能概览

PaddleSlim支持以下功能,也支持自定义量化、裁剪等功能。
<table>
<tr align="center" valign="bottom">
  <th>Quantization</th>
  <th>Pruning</th>
  <th>NAS</th>
  <th>Distilling</th>
</tr>
<tr valign="top">
  <td>
    <ul>
      <li>QAT</li>
      <li>PACT</li>
      <li>PTQ-Static</li>
      <li>PTQ-Dynamic</li>
      <li>Embedding Quant</li>
    </ul>
  </td>
  <td>
    <ul>
      <li>SensitivityPruner</li>
      <li>FPGMFilterPruner</li>
      <li>L1NormFilterPruner</li>
      <li>L2NormFilterPruner</li>
      <li>*SlimFilterPruner</li>
      <li>*OptSlimFilterPruner</li>
    </ul>
  </td>
  <td>
    <ul>
      <li>*Simulate Anneal based NAS</li>
      <li>*Reinforcement Learning based NAS</li>
      <li>**DARTS</li>
      <li>**PC-DARTS</li>
      <li>**Once-for-All</li>
      <li>*Hardware-aware Search</li>
    </ul>
  </td>

  <td>
    <ul>
      <li>*FSP</li>
      <li>*DML</li>
      <li>*DK for YOLOv3</li>
    </ul>
  </td>
</tr>
</table>
90

W
whs 已提交
91
注:*表示仅支持静态图,**表示仅支持动态图
92

W
whs 已提交
93
### 效果展示
94

W
whs 已提交
95 96 97 98 99 100
PaddleSlim在典型视觉和自然语言处理任务上做了模型压缩,并且测试了Nvidia GPU、ARM等设备上的加速情况,这里展示部分模型的压缩效果,详细方案可以参考下面CV和NLP模型压缩方案:

<p align="center">
<img src="docs/images/benchmark.png" height=185 width=849 hspace='10'/> <br />
<strong>表1: 部分模型压缩加速情况</strong>
</p>
101

W
whs 已提交
102 103 104 105
注:
- YOLOv3: 在移动端SD855上加速3.55倍。
- PP-OCR: 体积由8.9M减少到2.9M, 在SD855上加速1.27倍。
- BERT: 模型参数由110M减少到80M,精度提升的情况下,Tesla T4 GPU FP16计算加速1.47倍。
106

W
whs 已提交
107
## 文档教程
W
wanghaoshuang 已提交
108

W
whs 已提交
109
### 快速开始
W
wanghaoshuang 已提交
110

W
whs 已提交
111 112 113 114 115
- 量化训练 - [动态图](docs/zh_cn/quick_start/dygraph/dygraph_quant_aware_training_tutorial.md) | [静态图](docs/zh_cn/quick_start/static/quant_aware_tutorial.md)
- 离线量化 - [动态图](docs/zh_cn/quick_start/dygraph/dygraph_quant_post_tutorial.md) | [静态图](docs/zh_cn/quick_start/static/quant_post_static_tutorial.md)
- 剪裁 - [动态图](docs/zh_cn/quick_start/dygraph/dygraph_pruning_tutorial.md) | [静态图](docs/zh_cn/quick_start/static/pruning_tutorial.md)
- 蒸馏 - [静态图](docs/zh_cn/quick_start/static/distillation_tutorial.md)
- NAS - [静态图](docs/zh_cn/quick_start/static/nas_tutorial.md)
W
wanghaoshuang 已提交
116

W
whs 已提交
117
### 进阶教程
W
wanghaoshuang 已提交
118

W
whs 已提交
119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138
- 通道剪裁
  - [四种剪裁策略效果对比与应用方法](docs/zh_cn/tutorials/pruning/overview.md)
    - [L1NormFilterPruner](docs/zh_cn/tutorials/pruning/overview.md#l1normfilterpruner)
    - [FPGMFilterPruner](docs/zh_cn/tutorials/pruning/overview.md#fpgmfilterpruner)
    - [SlimFilterFilterPruner](docs/zh_cn/tutorials/pruning/overview.md#slimfilterpruner)
    - [OptSlimFilterPruner](docs/zh_cn/tutorials/pruning/overview.md#optslimfilterpruner)
  - 剪裁功能详解: [动态图](docs/zh_cn/tutorials/pruning/dygraph/filter_pruning.md) | [静态图](docs/zh_cn/tutorials/pruning/static/image_classification_sensitivity_analysis_tutorial.md)
  - 自定义剪裁策略:[动态图](docs/zh_cn/tutorials/pruning/dygraph/self_defined_filter_pruning.md)

- 低比特量化
  - [三种量化方法介绍与应用](docs/zh_cn/tutorials/quant/overview.md)
    - 量化训练:[动态图](docs/zh_cn/tutorials/quant/dygraph/quant_aware_training_tutorial.md) | [静态图](docs/zh_cn/quick_start/static/quant_aware_tutorial.md)
    - 离线量化:[动态图](docs/zh_cn/tutorials/quant/dygraph/dygraph_quant_post_tutorial.md) | [静态图](docs/zh_cn/tutorials/quant/static/quant_post_tutorial.md)
    - embedding量化:[静态图](docs/zh_cn/tutorials/quant/static/embedding_quant_tutorial.md)

- NAS
  - [四种NAS策略介绍和应用](docs/zh_cn/tutorials/nas/overview.md)

- 蒸馏
  - [知识蒸馏示例](demo/distillation)
W
wanghaoshuang 已提交
139

W
wanghaoshuang 已提交
140

W
whs 已提交
141
#### 推理部署
W
wanghaoshuang 已提交
142

W
whs 已提交
143 144 145
- [Intel CPU量化部署](demo/mkldnn_quant/README.md)
- [Nvidia GPU量化部署](demo/quant/deploy/TensorRT/README.md)
- [PaddleLite量化部署](docs/zh_cn/deploy/deploy_cls_model_on_mobile_device.md)
W
wanghaoshuang 已提交
146

W
whs 已提交
147
### CV模型压缩
W
wanghaoshuang 已提交
148

W
whs 已提交
149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165
- 检测模型压缩(基于PaddleDetection)
  - 压缩方案
    - YOLOv3 3.5倍加速方案: 文档整理中...
  - 方法应用-静态图
    - [在COCO和VOC上蒸馏MobileNetV1-YOLOv3](docs/zh_cn/cv/detection/static/paddledetection_slim_distillation_tutorial.md)
    - [MobileNetV1-YOLOv3低比特量化训练](docs/zh_cn/cv/detection/static/paddledetection_slim_quantization_tutorial.md)
    - [人脸检测模型小模型结构搜索](docs/zh_cn/cv/detection/static/paddledetection_slim_nas_tutorial.md)
    - [剪枝](docs/zh_cn/cv/detection/static/paddledetection_slim_pruing_tutorial.md)
    - [剪枝与蒸馏的结合使用](docs/zh_cn/cv/detection/static/paddledetection_slim_prune_dist_tutorial.md)
    - [卷积层敏感度分析](docs/zh_cn/cv/detection/static/paddledetection_slim_sensitivy_tutorial.md)
  - 方法应用-动态图
    - 文档整理中...

- 分割模型压缩(基于PaddleSeg)

  - 压缩方案
    - 方案建设中...
W
wanghaoshuang 已提交
166

W
whs 已提交
167 168 169 170 171
  - 方法应用-静态图
    - 文档整理中...

  - 方法应用-动态图
    - 文档整理中...
W
wanghaoshuang 已提交
172

W
whs 已提交
173
- [OCR模型压缩(基于PaddleOCR)]()
W
wanghaoshuang 已提交
174

W
whs 已提交
175 176 177 178 179 180
  - 压缩方案
    - 3.5M模型压缩方案: 文档整理中...

  - 方法应用-静态图
    - [低比特量化训练](https://github.com/PaddlePaddle/PaddleOCR/tree/release/1.1/deploy/slim/quantization)
    - [剪枝](https://github.com/PaddlePaddle/PaddleOCR/tree/release/1.1/deploy/slim/prune)
W
wanghaoshuang 已提交
181

W
whs 已提交
182 183
  - 方法应用-动态图
    - 文档整理中...
W
wanghaoshuang 已提交
184 185


W
whs 已提交
186 187 188 189
### NLP模型压缩

- [BERT](docs/zh_cn/nlp/paddlenlp_slim_ofa_tutorial.md)
- [ERNIE](docs/zh_cn/nlp/ernie_slim_ofa_tutorial.md)
W
wanghaoshuang 已提交
190

W
whs 已提交
191 192
### API文档

W
whs 已提交
193 194
- [动态图](docs/zh_cn/api_cn/dygraph)
- [静态图](docs/zh_cn/api_cn/static)
W
whs 已提交
195 196

### [FAQ]()
W
whs 已提交
197 198 199

## 许可证书

W
whs 已提交
200 201 202
本项目的发布受[Apache 2.0 license](https://github.com/PaddlePaddle/PaddleSlim/blob/develop/LICENSE)许可认证。

## 贡献代码
W
whs 已提交
203 204

我们非常欢迎你可以为PaddleSlim提供代码,也十分感谢你的反馈。
W
whs 已提交
205 206

## 欢迎加入PaddleSlim技术交流群
W
whs 已提交
207 208

请添加微信公众号"AIDigest",备注“压缩”,飞桨同学会拉您进入微信交流群。