[AMD DL Study]11주차 Vitis AI tutorials(1)

Loloh_the_great·2024년 1월 17일
0

AMD-DL

목록 보기
9/12
post-thumbnail

Refence : https://github.com/Xilinx/Vitis-AI-Tutorials/tree/3.5/Tutorials/RESNET18/

목차.
1. Vitis AI tutorials 소개
2. Vitis AI 설치 및 WSL 환경설정
3. Vitis AI tutorials : Running RESNET18 CNN through Vitis AI 3.5 Flow for ML

1. Vitis AI tutorials 소개

이 챕터에서는 AMD 사의 Vitis AI tutorials에 대해서 다룰 것이다.

Vitis AI tutorials는 AMD에서 Vitis AI에 대한 tutorial들을 만들어 둔 것이다. ResNet 18을 tensorflow나 pytorch로 하는 법 등이 있는데
여기서는 tensorflow로 ResNet18을 실행시킬 것이다.

System Requirement

Ubuntu 18.04 이상의 운영체제
딥러닝에 대한 지식
Vitis AI user guide 및 Online documentation 읽어보기
AMD target board : ZCU102, ZCU104, VCK190, VEK280, Alveo V70 AI Accelerator

2. Vitis AI 설치 및 WSL 환경 설정

2.1 Vitis AI 클로닝

Vitis AI를 wsl (Ubuntu 22.04)환경에서 설치할 것이다.
wsl을 키고 거기서 git clone 커맨드 라인을 입력한다.

git clone https://github.com/Xilinx/Vitis-AI

2.2 docker 설치

docker container 환경을 만들어 주기 위해서 docker desktop을 사용한다.
docker를 wsl에서 사용하려면 ubuntu 버전을 받아야 하는 줄 알았으나 windows와 연동되어 사용될 수 있다고 한다.

자세한 건 여길 참조하자.

Docker WSL2 설치 가이드

단계별 설명

  1. 먼저 docker desktop을 다운로드하고 설치한다.
    https://docs.docker.com/desktop/wsl/#download
  2. 설치하고 킨 다음에
    setting을 누른 다음 좌측의 general에서 wsl2 based engine을 활성화 해준다.
  3. Resources에서 WSL integration에 들어가서 해당하는 Ubuntu 버전을 활성화 해준다.

이제 다시 wsl에 들어가서 아래의 커맨드를 작성해보자

docker --version
docker run hello_world

2.3 Vitis AI tutorials folder 집어 넣기

먼저 Vitis AI tutorials를 github에서 다운 받는다.
압축을 풀면 Tutorials라는 폴더가 있는데 이름을 tutorials로 바꿔준다.
그리고 이 tutorials folder를 Vitis AI 디렉토리에 복사해준다.
이후 tree -d -L 2 명령어를 넣어보자. 그러면 아래와 같은 폴더 트리가 출력될 것이다.

2.4 gpu (만약 gpu가 설치 되어 있을 시)

CUDA gpu 설치는 아래의 명령어로 설치한다.

apt purge nvidia* libnvidia*
apt install nvidia-driver-xxx
apt install nvidia-container-toolkit

여기서 xxx는 드라이버의 버전이다.

이제 nvidia-smi를 입력하여 보고 CUDA가 잘 설치되었는지 확인하여 보자

3. Vitis AI tutorials : Running RESNET18 CNN through Vitis AI 3.5 Flow for ML

3.1 Docker Tools image

이제 docker 이미지를 docker 컨테이너에 넣을 것이다.
Vitis AI는 online documentation에 따르면 다양한 플랫폼으로 돌릴 수 있다.

Vitis AI Container 설치에는 방법이 3가지 정도가 있다.

1. Leverage the Pre-Built Docker

최신의 docker를 다운 받기 위해선 아래의 커맨드를 입력한다.

docker pull xilinx/vitis-ai-<Framework>-<Arch>:latest

여기서 <Framework>와 Arch는 아래의 표를 통해 고를 수 있다.

Desired Docker<Framework>Arch
Pytorch cpu-onlypytorchcpu
Tensorflow 2 cpu-onlytensorflow2cpu
Tensorflow 1.15 cpu-onlytensorflowcpu
Pytorch ROCmpytorchrocm
Tensorflow2 ROCmtensorflow2rocm

2. Build the Docker Container from Xilinx Recipes

이 방법으로 특정한 컨테이너와 프레임워크를 빌드할 수 있다.
만약 gpu가 있다면 gpu docker를 빌드하면 된다.

방법 : 아래의 디렉토리로 이동

cd <Vitis-AI install path>/Vitis-AI/docker


./docker_build.sh -t <DOCKER_TYPE> -f <FRAMEWORK>

여기서 <DOCKER_TYPE>은 cpu, gpu, rocm 중에서 고르는 것이다.
는 텐서플로2, 텐서플로, 파이토치 중에서 원하는 버전을 빌드해준다.

Docker_TYPE (-t)TARGET_FRAMEWORK (-f)Desired environment
cpupytorchPytorch cpu-only
tf2TensorFlow2 cpu-only
tf1TensorFlow cpu-only
gpupytorchPytorch gpu-only
gputf2TensorFlow2 gpu-only
gputf`TensorFlow1 gpu-only

이러한 종류를 아래의 명령어로 설치해 주면 된다.

cd <Vitis-AI install path>/Vitis-AI/docker
./docker_build.sh -t gpu -f pytorch

tutorial에서 우리는 gpu를 tensorflow2로 하는 컨테이너를 사용하므로
./docker_build.sh -t gpu -f tf2를 입력 해준다.

./docker_build.sh -t gpu -f tf2

이제 설치가 끝나고 docker images를 입력하면 다음과 같이 출력되는지 확인하자.

REPOSITORY TAG IMAGE ID CREATED SIZE
xilinx/vitis-ai-tensorflow2-gpu 3.5.0.001-b56bcce50 3c5d174a1807 11-days-ago 14.4GB

이제 docker image를 실행해 보겠다.

cd Vitis-AI ./docker_run.sh xilinx/vitis-ai-tensorflow2-gpu:3.5.0.001-cc6f2308a

만약 실행이 되지 않을시에는

./docker_run.sh b972ba8246d5

이런식으로 image ID를 넣어준다. 그러면 다음과 같이 출력되는 것을 확인할 수 있다.

이 다음에는

conda activate vitis-ai-tensorflow2
cd /workspace/tutorials/
cd RESNET18

이제 workspace라는 폴더가 docker container와 host PC와 파일을 공유하게 해준다.

docker container에는 그래픽 에디터가 없으므로 wsl 터미널 창을 새로 열어서 graphic editor를 설치하는 것이 좋다.

pip install image-classifiers

이제 docker를 영구적으로 다른 터미널에서 저장하기 위해서 이 커맨드를 실행해준다.

docker images

sudo docker ps -l

sudo docker commit -m"latest" <container ID>   xilinx/vitis-ai-tensorflow2-gpu:latest

docker images

그러면 다음과 같이 실행되는 것을 알 수 있다.

별책부록
a. docker에 connect 하지 못했다고 나올시

sudo systemctl restart docker

b. container 휴지통에 버리기

docker rmi -f $(docker images -f "dangling=true" -q)

c. 공간 청소하기

docker system df
docker image prune --all
docker system prune --all
profile
병아리 전자공학부생

0개의 댓글