0


Vitis AI 基本认知(入门 Vitis AI 开发环境+运行模型检查器)

1. 介绍

1.1 Vitis AI 是什么?

Vitis AI 是赛灵思公司推出的一款综合 AI 推断开发平台,它可以帮助开发者在赛灵思的 FPGA 和自适应 SoC 上实现高效的 AI 应用部署。它是一个强大而灵活的 AI 开发平台,它可以充分利用赛灵思硬件平台的优势。

  • Vitis AI 在 Linux 环境中运行,并使用命令行操作。

1.2 Vitis AI 可以做什么?

Vitis AI 可以做很多事情,例如:

  • 优化和编译深度学习模型,使其适应赛灵思硬件平台的架构和性能。
  • 提供丰富的 AI 库,包括常用的计算机视觉和自然语言处理模型,以及相应的推断接口。
  • 提供多种工具和框架,如 Vitis Model Composer, Vitis Video Analytics SDK, Vitis AI Optimizer 等,以支持不同层次的开发需求。
  • 提供多种示例设计和教程,展示如何在赛灵思硬件平台上实现各种 AI 应用场景。

1.3 Visits AI 怎么用?

第一步:在ubuntu环境下,执行如下命令:

git clone --recurse-submodules https://github.com/Xilinx/Vitis-AI
cd Vitis-AI
docker pull xilinx/vitis-ai-cpu:latest

第二步,可以使用了………完………


(^_^),当然不是这么简单,Vitis AI 不仅仅是一个工具,而是一个综合的 AI 推断开发平台,它包括了从模型优化到应用部署的全流程支持。需要做的不只是执行几条命令,还需要了解赛灵思硬件平台的特点,选择合适的模型和框架,使用 Vitis AI 提供的工具和库进行优化和编译,最后在目标设备上运行您的 AI 应用。这个过程可能会遇到一些挑战和困难,但也会带来很多乐趣和收获。

Xilixn官方对于构建Vitis AI环境有非常详细的说明,我主要参考这个链接:

https://xilinx.github.io/Vitis-AI/3.0/html/docs/install/install.html

这个链接介绍了如何在不同的操作系统和硬件平台上安装和配置 Vitis AI 的相关组件,包括 Vitis AI 优化器、Vitis AI 库、Vitis Model Composer 等。这些组件可以帮助我对深度学习模型进行优化和编译,以适应赛灵思硬件平台的架构和性能。

并且我并不打算使用GPU来优化模型(主要是我本地PC性能并不高),所以我直接使用CPU版本的Vitis AI docker来进行模型的量化、编译和部署。Vitis AI docker 是一个预先配置好的 Vitis AI 环境,它可以让我在一个容器中运行 Vitis AI 的所有工具和库,而不需要在本地安装任何依赖。CPU版本的Vitis AI docker 可以在没有 GPU 的机器上运行,但是模型优化的速度会比 GPU 版本慢一些。

实际上,我会选择通过云端的计算资源进行模型优化,这些云端资源都可以即用付费的,使用pytorch或者tensorflow原生的优化方法,最后使用Vitis AI来编译部署即可。这样我可以利用云端的强大的计算能力和灵活的扩展性,对模型进行更快速和更高效的优化。我可以使用 pytorch 或者 tensorflow 提供的一些优化技术,如剪枝、量化、蒸馏等,来减少模型的大小和复杂度。然后我可以使用 Vitis AI compiler来将优化后的模型转换为赛灵思硬件平台支持的格式,并生成相应的xmodel,来在目标设备上部署我的 AI 应用。

2. 配置Vitis AI环境

安装Vitis AI确实非常简单,只需一条命令:

docker pull xilinx/vitis-ai-cpu:latest

只需等待docker镜像下载完毕,运行docker images即可查看所有docker镜像。

>> docker images
---
REPOSITORY            TAG       IMAGE ID       CREATED         SIZE
hello-world           latest    9c7a54a9a43c   5 months ago    13.3kB
xilinx/vitis-ai-cpu   latest    41ed5c7e3331   16 months ago   19.5GB

然后切换到Vitis AI目录,启动docker。

./docker_run.sh xilinx/vitis-ai-cpu:latest

看到如下画面,表示Vitis 安装完毕:

Setting up dong 's environment in the Docker container...
usermod: no changes
Running as vitis-ai-user with ID 0 and group 0 

==========================================
 
__      ___ _   _                   _____
\ \    / (_) | (_)            /\   |_   _|
 \ \  / / _| |_ _ ___ ______ /  \    | |
  \ \/ / | | __| / __|______/ /\ \   | |
   \  /  | | |_| \__ \     / ____ \ _| |_
    \/   |_|\__|_|___/    /_/    \_\_____|
 
==========================================

Docker Image Version: 2.5.0.1260   (CPU) 
Vitis AI Git Hash: 502703c 
Build Date: 2022-06-12

接下来根据所使用的深度学习框架激活对应的环境,比如:

conda activate vitis-ai-pytorch
conda activate vitis-ai-tensorflow2

本文选择pytorch:

(vitis-ai-pytorch) Vitis-AI /workspace >

其实到这步,Vitis AI的环境就算配置完毕了,但为了更方便使用Vitis AI,本文再安装一个Jupyter Lab的server,这样我们后续使用Vitis AI会非常方便。

(vitis-ai-pytorch) Vitis-AI /workspace > jupyter --version
---
Selected Jupyter core packages...
IPython          : 7.33.0
ipykernel        : 6.13.1
ipywidgets       : 7.7.0
jupyter_client   : 7.3.4
jupyter_core     : 4.10.0
jupyter_server   : not installed
jupyterlab       : not installed
nbclient         : 0.6.4
nbconvert        : 6.5.0
nbformat         : 5.4.0
notebook         : 6.4.12
qtconsole        : 5.3.1
traitlets        : 5.2.2

可以看到,原生Vitis AI环境并不包含jupyter_server和jupyterlab,需要手动安装:

(vitis-ai-pytorch) Vitis-AI /workspace > pip install jupyterlab

安装完毕,我们再次查看jupyter版本:

(vitis-ai-pytorch) Vitis-AI /workspace > jupyter --version
---
Selected Jupyter core packages...
IPython          : 7.33.0
ipykernel        : 6.13.1
ipywidgets       : 7.7.0
jupyter_client   : 7.3.4
jupyter_core     : 4.12.0
jupyter_server   : 1.24.0
jupyterlab       : 3.6.6
nbclient         : 0.6.4
nbconvert        : 6.5.0
nbformat         : 5.4.0
notebook         : 6.4.12
qtconsole        : 5.3.1
traitlets        : 5.9.0

至此,Vitis AI环境配置完毕。

3. 使用inspector检查模型

运行jupyterlab,新建Notebook:

image.png

导入相关python包和要分析的深度学习模型,本文以resnet18为例:

import torch
from torchvision.models import resnet18
from pytorch_nndct.apis import Inspector
from IPython.display import Image

进行必要的配置,本文KV260中的DPU为例,Target为DPUCZDX8G_ISA1_B4096,resnet18的输入shape为[batchsize, 3, 224, 224]:

device = torch.device("cuda" if torch.cuda.is_available() else "cpu")

target = "DPUCZDX8G_ISA1_B4096"
inspector = Inspector(target)

model = resnet18(pretrained=True)
model.eval()
dummy_input = torch.randn(1, 3, 224, 224)

inspector.inspect(model, (dummy_input,), device=device, output_dir="inspect", image_format="png")

执行上述单元格,得到如下结果:

[VAIQ_NOTE]: =>Inspector is initialized successfully with target:
name: DPUCZDX8G_ISA1_B4096
type: DPUCZDX8G
isa_version: 1

[VAIQ_NOTE]: =>Start to inspect model...
[VAIQ_NOTE]: =>Quant Module is in 'cpu'.
[VAIQ_NOTE]: =>Parsing ResNet...
[VAIQ_NOTE]: Start to trace model...
[VAIQ_NOTE]: Finish tracing.
[VAIQ_NOTE]: Processing ops...
██████████████████████████████████████████████████| 71/71 [00:00<00:00, 596.12it/s, OpInfo: name = return_0, type = Return]                                                                                
[VAIQ_NOTE]: =>Doing weights equalization...
[VAIQ_NOTE]: =>Quantizable module is generated.(inspect/ResNet.py)
[VAIQ_NOTE]: All the operators are assigned to the DPU(see more details in 'inspect/inspect_DPUCZDX8G_ISA1_B4096.txt')
[VAIQ_NOTE]: Dot image is generated.(inspect/inspect_DPUCZDX8G_ISA1_B4096.png)
[VAIQ_NOTE]: =>Finish inspecting.

模型检查完毕,将在工作目录下新建inspect文件夹,并且包含四个文件:

image.png

它们的作用如下:

  • inspect_DPUCZDX8G_ISA1_B4096.gv:这是一个 Graphviz 格式的文件,它描述了模型在 DPU 上的计算图,包括各个节点的名称、类型、输入输出、参数等信息。
  • inspect_DPUCZDX8G_ISA1_B4096.png:这是一个 PNG 格式的图片,它展示了模型在 DPU 上的计算图的可视化效果,可以直观地看到模型的结构和流程。
  • inspect_DPUCZDX8G_ISA1_B4096.txt:这是一个文本格式的文件,它记录了模型在 DPU 上的执行情况,包括各个节点的执行时间、占用资源、性能指标等信息。
  • ResNet.py:这是一个 Python 格式的文件,它是模型在 DPU 上执行时使用的代码,包括模型定义、数据加载、推理过程等内容。

4. 查看模型的结构

新建单元格,通过Image命令可以查看模型的结构和流程图:

Image('inspect/inspect_DPUCZDX8G_ISA1_B4096.png')

image.png

5. 总结

Xilinx使用docker分发Vitis AI,这让开发者可以非常方便地构建Vitis AI开发环境,借助Jupyter Lab,可以很轻松运行Vitis AI各项指令,并在其中添加注释信息。

Inspector可以以图形化的方式展示PyTorch或TensorFlow模型的网络结构,包括运算层、数据尺寸、数据流动等信息。这可以帮助开发者更直观地理解模型结构。


本文转载自: https://blog.csdn.net/DongDong314/article/details/137428845
版权归原作者 hi94 所有, 如有侵权,请联系我们删除。

“Vitis AI 基本认知(入门 Vitis AI 开发环境+运行模型检查器)”的评论:

还没有评论