Vitis AI 使用 VAI_Q_PYTORCH 工具

目录

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://xiahunao.cn/news/3267979.html

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

相关文章

如何应对SQL注入攻击?

引言 在现今的网络世界中,安全性已成为至关重要的话题。SQL注入(SQL Injection)是一种常见且危险的网络攻击方式,攻击者通过向SQL查询中插入恶意代码来操控数据库,从而获取敏感信息或破坏数据。了解SQL注入的各种类型…

2024中国大学生算法设计超级联赛(2)

🚀欢迎来到本文🚀 🍉个人简介:陈童学哦,彩笔ACMer一枚。 🏀所属专栏:杭电多校集训 本文用于记录回顾总结解题思路便于加深理解。 📢📢📢传送门 A - 鸡爪解题思…

AI在Facebook的应用:预见智能化社交的新前景

在数字化时代,社交媒体平台已成为我们生活的重要组成部分,而人工智能(AI)的快速发展正推动着这些平台向更智能、更个性化的方向发展。Facebook,作为全球最大的社交网络平台之一,正不断探索和应用AI技术&…

MySQL作业四

1. 创建数据库mydb15_indexstu 2. 创建表student,course,sc 2.1 创建表student 2.2 创建表course 2.3 创建表sc 3. 处理表 3.1 修改表student中年龄(sage)字段属性,数据类型由int改变为smallint 3.2 为表course中cno…

智能算法驱动的爬虫平台:解锁网络数据的无限潜力

摘要 在信息爆炸的时代,网络数据如同深海宝藏,等待着有识之士发掘其无尽价值。本文将探索智能算法驱动的爬虫平台如何成为解锁这一宝库的关键,不仅剖析其技术优势,还通过实例展示它如何助力企业与开发者高效、稳定地采集数据&…

专家访谈|王本友:分不清9.11和9.9谁大?大模型该做擅长的,而不是事事完美

作为生成式人工智能的代表,大模型已经进入全新的发展阶段。 红星新闻、红星资本局与OpenEval平台联合发起“巢燧杯”大模型创新发展大赛,已于本月正式启动。2024“巢燧杯”大模型创新发展大赛由通用大模型评测、行业大模型评测大赛、专项挑战赛、大模型…

JavaScript模拟滑动手势

双击回到顶部 左滑动 右滑动 代码展示 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>Gesture…

opencv使用KCF算法跟踪目标,给出目标中心位置

效果图 代码 import cv2class VideoTracker:def __init__(self, video_path: str):self.video_path video_pathself.cap cv2.VideoCapture(video_path)self.tracker cv2.legacy.TrackerKCF_create()self.initBB Noneself.tracker_initialized Falseself.selecting Fals…

河道高效治理新策略:视频AI智能监控如何助力河污防治

一、背景与现状 随着城市化进程的加快&#xff0c;河道污染问题日益严重&#xff0c;对生态环境和居民生活造成了严重影响。为了有效治理河道污染&#xff0c;提高河道管理的智能化水平&#xff0c;TSINGSEE青犀提出了一套河污治理视频智能分析及管理方案。方案依托先进的视频…

Android adb shell ps进程查找以及kill

Android adb shell ps进程查找以及kill 列出当前Android手机上运行的所有进程信息如PID等&#xff1a; adb shell ps 但是这样会列出一大堆进程信息&#xff0c;不便于定向查阅&#xff0c;可以使用关键词查找&#xff1a; adb shell "ps | grep 关键词" 关键词查…

SQLException:Operation not allowed after ResultSet closed

运行代码时出现的错误&#xff1a; 这是在运行简单的JDBC访问数据库时出现的问题&#xff0c;原因是在ResultSet方法中添加了close()关闭方法,如图&#xff1a; ResultSet 是通过 query 方法获得的&#xff0c;并且在 try-catch 块中没有显式地关闭它。这实际上是 一个常见的…

C++STL详解(一)——string类的接口详解(下)

目录 一.string的大小和容量成员函数 1.1size()和length() 1.2capacity() 1.3resize() 1.4reserve() 1.5clear()和empty() ​编辑 二.string元素的访问 2.1operator[]和at() 2.2范围for 三.string中迭代器相关函数 3.1begin()和end() 3.2rbegin()和rend() 四.string…

机械学习—零基础学习日志(高数12——反三角函数)

零基础为了学人工智能&#xff0c;真的开始复习高数 反三角函数很困难&#xff0c;但是当建立了逻辑链条&#xff0c;还是能快速理解的。这个办法就是笛卡尔坐标系。 三角函数与反三角函数的个人理解 sinx与cosx&#xff0c;tanx&#xff0c;secx&#xff0c;其实都可以放在…

react中简单的配置路由

1.安装react-router-dom npm install react-router-dom 2.新建文件 src下新建page文件夹&#xff0c;该文件夹下新建login和index文件夹用于存放登录页面和首页&#xff0c;再在对应文件夹下分别新建入口文件index.js&#xff1b; src下新建router文件用于存放路由配置文件…

加速下载,揭秘Internet Download Manager2024下载器的威力!

1. Internet Download Manager&#xff08;IDM&#xff09;是一款广受欢迎的下载管理软件&#xff0c;以其强大的下载加速功能和用户友好的界面著称。 IDM马丁正版下载如下: https://wm.makeding.com/iclk/?zoneid34275 idm最新绿色版一键安装包链接&#xff1a;抓紧保存以…

C++学习笔记——模板

学习视频 文章目录 模板的概念函数模板函数模板语法函数模板注意事项函数模板案例普通函数与函数模板的区别普通函数与函数模板的调用规则模板的局限性 类模板类模板与函数模板区别类模板中成员函数创建时机类模板对象做函数参数类模板与继承类模板成员函数类外实现类模板分文件…

JS基础知识学习笔记全

JS基础知识学习笔记全 一、引入方式 1、内部脚本 &#xff08;一般定义在body下面会改善执行速度&#xff09; <body></body><!-- 内部脚本 --><script>/* 打开页面警告框显示的内容 */alert(helloJS);</script>2、外部脚本 外部专门新建一…

Nginx系列-10 realIp模块使用

背景 Nginx对每个模块都有说明文档&#xff0c;可参考:https://nginx.org/en/docs/ 当请求被代理后&#xff0c;真实客户端相对服务器被隐藏&#xff0c;即服务端无法判断HTTP消息来源。 如上图所示&#xff0c;IP分别为100.100.100.1和100.100.100.2的两个客户端向服务器200.…

TransformerEngine

文章目录 一、关于 TransformerEngine &#xff1f;亮点 二、使用示例PyTorchJAXFlax 三、安装先决条件Dockerpip从源码使用 FlashAttention-2 编译 四、突破性的变化v1.7: Padding mask definition for PyTorch 五、FP8 收敛六、集成七、其它贡献论文视频最新消息 一、关于 Tr…

traefik 2

不在白名单里的&#xff0c;就不能访问 允许谁访问&#xff0c;就把它加进来 traefik 高级应用 1. 负载均衡 关键在ingressroute 添加多个 svc 验证 就是找一台&#xff0c;配好host, 然后 两个svc 权重都是1&#xff0c;改一下就成了灰度分布 2. 灰度发布 关键在于…