Vitis AI Tutorial #1 - 작업 환경

OilyHand·2024년 2월 24일
0

Vitis AI Tutorials

목록 보기
1/3
post-thumbnail

0. ResNet18 CNN 실행 예제

0.1. Environment

  • 버전: Vitis AI 3.5 with TensorFlow 2.12.0
  • 실행 환경: Ubuntu (WSL)

0.2. Tutorial Overview

 실습을 진행할 튜토리얼은 "Running ResNet18 CNN Through Vitis AI 3.5 Flow for ML" 입니다. 이 튜토리얼에서는 ImageNet 데이터를 학습한 ResNet18 모델을 이용하여 FPGA 보드에서 추론을 실행해보는 실습을 진행합니다.

Vitis AI 환경에서 FPGA 보드에 모델을 배포하는 과정:

① Run Model Inspector (optional)

  • DPU 아키텍처와 호환되는지 확인

② Run Model Quantizer

  • Model Quantizer를 이용하여 FP32 모델로부터 INT8 모델을 생성

③ Run Inference with INT8 (optional)

  • INT8 모델의 예측 정확도 확인

④ Run Model Compiler

  • 컴파일을 진행하여 DPU에서 실행가능한 .xmodel 파일을 생성

⑤ Compile the Application

  • VART(Vitis AI RunTime) API를 이용하여 DPU와 연결된 ARM 프로세서에서 실행되는 애플리케이션 컴파일

 


1. Working Directory

Vitis AI를 실행하기 위해 GitHub 레포지토리 내용을 복제합니다. 저는 home directory에 복제하였습니다.

# Vitis AI repository 복제
~$ git clone https://github.com/Xilinx/Vitis-AI.git

# workin directory로 이동
~$ cd Vitis-AI

 
여기서 복제한 디렉토리에 추가적으로 Vitis AI Tutorials 저장소에 있는 RESNET18 디렉토리를 tutorials 디렉토리 안에 추가합니다.

# 튜토리얼 저장소 복제
~/Vitis-AI$ git clone -b 3.5  https://github.com/Xilinx/Vitis-AI-Tutorials.git

# 필요한 디렉토리 가져오기
~/Vitis-AI$ mv ./Vitis-AI-Tutorials/Tutorials/RESNET18/ ./tutorials/

# 나머지는 삭제
rm -rf ./Vitis-AI-Tutorials/

 
필요한 디렉토리 내용을 다 가져오면 working directory는 다음과 같이 형성됩니다. 실습에서 ${WRK_DIR}이라 하는 디렉토리는 ~/Vitis-AI/를 의미합니다.

~/Vitis-AI$
.
├── bck
├── board_setup
│   ├── v70
│   └── vek280
├── demos
├── docker
│   ├── common
│   ├── conda
│   └── dockerfiles
├── docs
│   ├── docs
│   ├── _downloads
│   ├── doxygen
│   ├── _images
│   ├── _sources
│   └── _static
├── docsrc
│   ├── build
│   └── source
├── dpu
├── examples
│   ├── custom_operator
│   ├── ofa
│   ├── OnBoard
│   ├── vai_library
│   ├── vai_optimizer
│   ├── vai_profiler
│   ├── vai_quantizer
│   ├── vai_runtime
│   ├── waa
│   └── wego
├── model_zoo
│   ├── images
│   └── model-list
├── src
│   ├── AKS
│   ├── vai_library
│   ├── vai_optimizer
│   ├── vai_petalinux_recipes
│   ├── vai_quantizer
│   └── vai_runtime
├── third_party
│   ├── tflite
│   └── tvm
└── tutorials
    └── RESNET18

 


2. The Docker Tools Image

2.1. Docker Overview

 Docker는 컨테이너 기반의 가상화 기술을 제공하는 플랫폼으로, 애플리케이션을 효율적으로 개발, 배포, 실행할 수 있도록 도와줍니다. Docker image를 통해 애플리케이션과 모든 종속성을 패키징하고, 컨테이너를 통해 격리된 환경에서 실행할 수 있습니다.

2.2. Install Docker

Docker는 다음 명령어를 차례대로 입력하여 설치를 진행합니다.

# 0. apt-get 업그레이드 (필요시)
sudo apt-get upgrade

# 1. 필요 패키지 설치
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common

# 2. Docker의 공식 GPG키를 추가
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

# 3. Docker의 공식 apt 저장소를 추가
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

# 4. Docker 설치
sudo apt-get install docker-ce docker-ce-cli containerd.io

2.3. Build the Image

cd docker # in ${WRK_DIR}
sudo ./docker_build.sh -t gpu -f tf2

실행 화면

빌드가 끝난 이후에 docker images라고 입력하면 다음과 같이 docker image 리스트를 확인할 수 있습니다.

2.4. Launch the Docker Image

${WRK_DIR}로 이동하여 다음과 같이 명령어를 입력하면 Docker Image를 실행하여 격리된 환경에서 작업을 수행할 수 있습니다.

cd ${WRK_DIR} # you are now in Vitis_AI subfolder
sudo ./docker_run.sh xilinx/vitis-ai-tensorflow2-gpu:3.5.0.001-810814926
conda activate vitis-ai-tensorflow2

ERROR

저는 실행하려고 하니 다음과 같이 에러가 표시되어 nvidia-container-toolkit을 추가하여 문제를 해결하였습니다.
docker: Error response from daemon: could not select device driver "" with capabilities: \[\[gpu]].

nvidia-container-toolkit 설치

distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
   && curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - \
   && curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list

sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit

sudo systemctl restart docker

변경사항 저장

작업을 진행한 뒤 새롭게 추가한 패키지 등에 대해서 저장하기 위해서는 새로운 터미널을 실행하여 다음과 같이 명령어를 입력하면 저장됩니다.

$ docker images
REPOSITORY                        TAG                  IMAGE ID       CREATED        SIZE
xilinx/vitis-ai-tensorflow2-gpu   3.5.0.001-b56bcce50  3c5d174a1807   11 days ago    14.4GB
xiinx/vitis-ai-gpu-tf2-base       latest               90d22054e565   3 weeks ago    6.43GB

$ sudo docker ps -l
[sudo] password for danieleb:
CONTAINER ID   IMAGE                                                 COMMAND                  CREATED          
d9f942cdf7de   xilinx/vitis-ai-tensorflow2-gpu:3.5.0.001-b56bcce50   "/opt/nvidia/nvidia_…"   43 minutes ago                

$ sudo docker commit -m"latest" d9f942cdf7de   xilinx/vitis-ai-tensorflow2-gpu:latest
sha256:d7af2c3ac4fb131054f9e326015d3572ceea1ec074caea0d50274ecfd76a3688

$ docker images
REPOSITORY                        TAG                                 IMAGE ID       CREATED          SIZE
xilinx/vitis-ai-tensorflow2-gpu   latest                              d7af2c3ac4fb   47 seconds ago   22.3GB
xilinx/vitis-ai-tensorflow2-gpu   3.5.0.001-b56bcce50                 3c5d174a1807   11 days ago      14.4GB
xiinx/vitis-ai-gpu-tf2-base       latest               

References
1. https://github.com/Xilinx/Vitis-AI-Tutorials/tree/3.5/Tutorials/RESNET18
2. https://docs.docker.com/get-started/overview/

profile
Electrical Engineering

0개의 댓글