目录
1. 简介
2. 资料汇总
3. 示例解释
3.1 快速上手示例
4. 总结
1. 简介
vai_q_pytorch 是 Vitis AI Quantizer for Pytorch 的缩写,主要作用是优化神经网络模型。它是 Vitis AI 平台的一部分,专注于神经网络的深度压缩。
vai_q_pytorch 的作用包括:
- 解析计算图:从 Pytorch 框架中解析神经网络的计算图,并转换为中间表示(IR)。
- 修改计算图:基于 IR 进行计算图的修改,包括剪枝、量化和图优化。
- 部署:将修改后的 IR 部署到不同的平台上,如 DPU(深度学习处理单元)和 Xilinx AI 引擎。
- 重新组装:将修改后的计算图重新组装回 Pytorch,以便继续使用 Pytorch 的预处理、后处理和分布式系统等功能。
Supported and Limitation
- Python
- Support version 3.6 ~ 3.7.
- Pytorch
- Support version 1.2 ~ 1.10.
- QAT does NOT work with pytorch 1.1~1.3.
- Data Parallelism is NOT supported.
- Models
- Classification Models in Torchvision.
- Pytorch models in Xilinx Modelzoo.
- LSTM models (standard LSTM and customized LSTM)
2. 资料汇总
查看 Python 版本:python -V
(vitis-ai-pytorch) Vitis-AI /workspace > python -V
Python 3.7.12
查看 PyTorch 版本:pip show torch
(vitis-ai-pytorch) Vitis-AI /workspace > pip show torch
Name: torch
Version: 1.10.1
Summary: Tensors and Dynamic neural networks in Python with strong GPU acceleration
Home-page: https://pytorch.org/
Author: PyTorch Team
Author-email: packages@pytorch.org
License: BSD-3
Location: /opt/vitis_ai/conda/envs/vitis-ai-pytorch/lib/python3.7/site-packages
Requires: typing_extensions
Required-by: torchvision
查看 PyTorch 版本:pip show torch
pip show torchvision
Name: torchvision
Version: 0.11.2+cpu
Python 的主流版本主要包括:
Python 3.x:这是当前的主要开发版本,持续更新和维护。Python 3.x系列自2008年发布以来,已经经历了多个小版本更新。常见的小版本包括:
Python 3.6:引入了格式化字符串、异步生成器等特性。
Python 3.7:添加了数据类(dataclasses)、上下文变量(contextvars)等。
Python 3.8:引入了海象运算符(walrus operator)和位置参数的语法。
Python 3.9:增加了字典合并运算符和类型提示的增强。
Python 3.10:引入了结构模式匹配(structural pattern matching)等新特性。
Python 3.11:专注于性能提升,许多内置函数和模块进行了优化。
Python 3.12:继续进行性能改进和语言特性的增强。
PyTorch 的主流版本包括以下几个:
2.x 系列:最新的稳定版本是 2.3.01,还有 2.2.0、2.1.0 等。
1.x 系列:包括 1.13、1.12、1.11 等版本。
0.x 系列:早期版本如 0.4.1、0.3.1 等。
3. 示例解释
3.1 快速上手示例
将 example/resnet18_quant.py 复制到 Docker 环境中。
下载预训练的 Resnet18 模型:
wget https://download.pytorch.org/models/resnet18-5c106cde.pth -O resnet18.pth
准备Imagenet验证图像。
修改 resnet18_quant.py 中的默认 data_dir 和 model_dir。
[可选] 评估浮点模型:
python resnet18_quant.py --quant_mode float --inspect
进行量化,使用验证数据的子集(200张图像)进行校准。由于我们处于量化校准过程中,显示的损失和准确度是没有意义的:
python resnet18_quant.py --quant_mode calib --subset_len 200
评估量化模型:
python resnet18_quant.py --quant_mode test
导出xmodel(或onnx):
python resnet18_quant.py --quant_mode test --subset_len 1 --batch_size 1 --deploy
4. 总结
本文分享了 vai_q_pytorch 的功能与应用,该工具是 Vitis AI Quantizer for PyTorch 的缩写,旨在优化深度学习模型,尤其是通过深度压缩技术提高模型的性能与效率。作为 Vitis AI 平台的一部分,vai_q_pytorch 能够解析和修改 PyTorch 框架中的计算图,将其转换为中间表示(IR),并支持剪枝、量化及图优化等多种操作。处理后的 IR 可以部署到多种平台,如深度学习处理单元(DPU)和 Xilinx AI 引擎,用户也可以将修改后的计算图重新整合回 PyTorch,以利用其强大的预处理、后处理和分布式系统功能。
该工具支持 Python 3.6 至 3.7 版本以及 PyTorch 1.2 至 1.10 的模型,包括分类模型、Xilinx Modelzoo 中的模型以及标准和定制的 LSTM 模型。值得注意的是,QAT(量化感知训练)在 PyTorch 1.1 至 1.3 版本中不支持,且不支持数据并行性。
在实际操作中,用户可以通过简单的命令行指令进行模型的量化与评估。下载预训练的 ResNet18 模型并进行参数调整后,用户能够快速上手进行模型的量化校准和测试,最终导出 xmodel 或 ONNX 格式文件。这一系列流程为深度学习模型的优化提供了高效、便捷的解决方案,助力提升模型在不同硬件平台上的运行效率与性能。