Vitis AI 使用 VAI_Q_PYTORCH 工具

news2024/11/27 21:48:42

目录

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 格式文件。这一系列流程为深度学习模型的优化提供了高效、便捷的解决方案,助力提升模型在不同硬件平台上的运行效率与性能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1952019.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大数据管理中心设计规划方案(可编辑的43页PPT)

引言:随着企业业务的快速发展,数据量急剧增长,传统数据管理方式已无法满足高效处理和分析大数据的需求。建立一个集数据存储、处理、分析、可视化于一体的大数据管理中心,提升数据处理能力,加速业务决策过程&#xff0…

Spring Boot:图书管理系统(一)

1.编写用户登录接口 代码: package com.example.demo;import jakarta.servlet.http.HttpSession; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotatio…

HarmonyOS和OpenHarmony区别联系

前言 相信我们在刚开始接触鸿蒙开发的时候经常看到HarmonyOS和OpenHarmony频繁的出现在文章和文档之中,那么这两个名词分别是什么意思,他们之间又有什么联系呢?本文将通过现有的文章和网站内容并与Google的AOSP和Android做对比,带…

Vue.js 2 项目实战(五):水果购物车

前言 Vue.js 是一个用于构建用户界面的渐进式 JavaScript 框架。它的设计目标是通过采用易于上手的结构和强大的功能,使前端开发变得更加简便和高效。以下是 Vue.js 的一些关键特性和优点: 核心特性 声明式渲染 Vue.js 使用声明式语法来描述用户界面&a…

AI周报(7.21-7.27)

AI应用-一款能提供情绪价值的智能鸟类喂食器(Bird Buddy) 图像识别技术:Bird Buddy装备了图像识别技术,能够识别超过1000种鸟类,涵盖了常见的鸟类品种。这种技术能够在鸟类经过时,通过内置麦克风捕捉的声音…

PID 控制实验 - 整定实验

Arduino PID Arduino-PID-LibraryArduino-PID-AutoTune-Library PID控制实验 – 制作测试台 PID Control Experiment – Making the Testing Rig PID (Proportional, Integral, Derivative) control is a classic control algorithm that I have used for a few projects,…

Debug-018-elementUI-el-tree中通过CSS隐藏任意一项的选择框checkbox

前情提要: 我们项目中使用的是elementUI,业务中经常需要使用到el-tree组件去实现一些有层级关系的功能。现在有一个需求描述一下:首先是这个el-tree是个有checkbox的树,每一子节点都可以被选择,用于去实现一些系统的权…

Shell编程之正则表达式与文本三剑客

目录 一、正则表达式 1.引言--什么是正则表达式 1.1正则表达式的功能 2.基础正则表达式(BRE) 2.1特殊字符 2.2定位符 2.3非打印字符 3.扩展正则表达式(ERE) 4.元字符操作的案列 二、命令小工具 1.cut:列截取工具 2.sort排序 …

vue3获取、设置元素高度

前言 在web端常见的需求场景中,会经常遇到table表格需要根据页面可视区域使高度自适应的情况。 傻喵(作者本人)昨天在尝试使用vue3实现这个需求时,看了几篇网上写的回答,都不太全面,所以干脆自己写个总结吧.(第一次写&#xff0c…

深入探讨 I/O 多路复用:提升系统 I/O 效率的关键技术

摘要 I/O(输入/输出)操作是计算机系统中不可或缺的一部分,而 I/O 多路复用技术则是提高系统 I/O 效率的重要手段。本文将浅谈 I/O 的基本概念,重点探讨 I/O 多路复用技术的原理、优势以及在现代系统中的应用。 引言 在现代计算…

php收银系统源码-收银员操作权限

收银系统是很多门店,尤其是连锁门店营业的必备工具,收银员每天需要通过收银系统记录商品的售卖数量,以及收款,会员开卡,核销订单等工作。但很多门店都不希望给收银员太高的权限,自然就离不开收银员的权限管…

flask开启调试模式,热部署

这里写自定义目录标题 功能快捷键 什么是热部署?简单说就是你程序改了,现在要重新启动服务器,嫌麻烦?不用重启,服务器会自己悄悄的把更新后的程序给重新加载一遍,这就是热部署(抄的)…

NameSilo域名注册和解析2024版教程(附优惠码)

上次给大家介绍了国外知名的域名注册商Dynadot,今天再给大家分享另一家国外知名的域名注册商NameSilo,同样性价比很高。使用本站提供的优惠码:ieearn.com,你还可以在首次注册购买域名时享受1美元的优惠: NameSilo简介…

10 VUE Element

文章目录 VUE1、概述2、快速入门3、Vue 指令4、生命周期5、案例 Elemant1、快速入门2、Element 布局3、常用组件-案例 VUE 1、概述 Vue 是一套前端框架,免除原生JavaScript中的DOM操作,简化书写基于MVVM(Model-View-ViewModel)思想,实现数据…

AI机器人本地免费部署(部署Llama 3.1详细教程)

昨日,Meta公司发布了人工智能模型——Llama 3.1。 那么Llama 3.1 405B的效果怎么样?我们来对比一张图,横向对比一下GPT-4。 可以看出,Llama 3.1 405B在各类任务中的表现可以与GPT-4等顶级的模型相差无几。 那么,我们…

4G新型智能电表是什么?

4G新型智能电表是一种利用第四代移动通信技术(4G)进行数据传输的先进计量设备。它不仅具备传统电表的基本功能,如电量计量,还能实现远程抄表、用电监控、故障检测等多种智能化服务。本文旨在详细介绍4G新型智能电表的技术特点、优势及应用场景。 一、4G…

【C++刷题】优选算法——队列+宽搜

N 叉树的层序遍历 vector<vector<int>> levelOrder(Node* root) {vector<vector<int>> ret;if (root nullptr) return ret;queue<Node*> q;q.push(root);ret.push_back({root->val});int size 1;while (!q.empty()) {vector<int> v…

03。正式拿捏ArkTS语言第一天

1, 打印日志命令 &#xff1a; console.log() 2, 三种基本数据类型&#xff1a; number 数字类型 &#xff08;数字&#xff09; string 字符串类型&#xff08;例如&#xff1a;“我是字符串”&#xff09; boolean 布尔类型 (true 或者 false) ***…

宝塔Docker部署Nuxt3 BBS项目

体验地址 BBS&#xff1a;http://bbs.sourcebyte.vip Nuxt3&#xff1a;https://nuxt.com.cn BBS项目介绍 BBS是开源字节最新研发的社区项目&#xff0c;包含产品中心&#xff0c;需求墙&#xff0c;工具&#xff0c;资讯4大板块。 1、产品中心&#xff1a;开源字节有众多…

常见的jmeter面试题及答案

1、解释什么是JMeter? JMeter是一款Java开源工具&#xff0c; 用于性能负载测试。它旨在分析和衡量Web应用程序和各种服务的性能和负载功能行为。 2、说明JMeter的工作原理? JMeter就像一群将请求发送到目标服务器的用户-样。它收集来自目标服务器的响应以及其他统计数据&…