XilinxのFPGAのAI開発環境である、Vitis-AI 2.5のGPU版を立ち上げてみました。
dockerやCUDAなど多くのものを事前にインストールする必要があります。
実際にGPU dockerの環境構築をした手順を紹介します。
Vitis AI GPU dockerの環境構築をしたメモ
Vitis-AI 2.5のGPU版の環境構築・セットアップをしました。
事前にインストールするものも多くあり、CPU版と比べて手間な作業になります。
但し、Vitis AI のサンプルプログラムなどもGPU版が前提で作られているケースが多いです。
後々楽になりますし、CPU版より確実に使いやすいです。
Vitis AI に関しては出来る限りGPU版をインストールしておくことを推奨します。
Vitis AI のインストール環境
Vitis AI のインストール要件に関しては下記公式ページに記載されています。
バージョンで要件が変わりますのでご注意下さい。(下記のリンクは2.5です)
実際にVitis AI 2.5のGPU版をインストールした、筆者の環境は下記となります。
PC環境としては下記です。
- CPU…Core i5 6400
- GPU…NVIDIA GeForce GTX 1650
- メモリ…16GB
- SSD…500GB
Ubuntu・CUDAの環境としては下記になります。
- Ubuntu 18.04 ※20.04でも確認済
- CUDA-Toolkit 11.3 ※11.0, 11.4でも確認済
グラフィックボード
筆者が使用しているグラフィックボードに関しては玄人志向のGTX1650となります。
補助電源無しで取り付けやすく、そこそこの性能を出してくれるGPUです。
ただ機械学習させるにはGPUメモリが4GBしかなく、物足りないケースも多々です。
下記記事でGTX1650をPCに搭載した内容を紹介しています。(リンク先はこちら)
CUDA-Toolkit
Vitis AI 2.5の要求スペックは「NVIDIA GPU supporting CUDA 11.0 or higher」となります。
筆者の直近の環境はCUDA 11.3です。
※11.0でも11.4でも動作すること確認できています。
もし一度CUDA環境をリセットしたい場合は、下記記事を参考にしてください。
Ubuntu
Vitis AI 2.5では「18.04 or 20.04のUbuntu」が対応しています。
筆者の直近のUbuntu環境は18.04です。
※20.04でもインストールして動作することも確認しています。
もしUbuntuをPCにインストールしたい場合は下記記事をご参考下さい。
OS無しのPCにLinux(Ubuntu)をインストールしてみた
メモリ
PCのメモリに関しては要求の記載はありませんが、理想は32GB以上あった方が良いです。
理由としてはVitis AI 2.5のGPU版をインストール時に16GBではメモリ不足になったからです。
但し、メモリ16GBでも仮想メモリを増やせばインストール可能です。(また別途後述)
下記記事でメモリ不足でインストール失敗した詳細を紹介しています。
Vitis AIでdocker_build_gpu.shが失敗するメモ
ストレージ
ストレージに関しては最低でも200GB程度は空けておいた方が良いです。
GPU版のdockerインストールしただけで120GB近く容量を使います。
最初は500GBのSSDを使っていましたが、最後には1000GBのSSDと交換しました。
実際にSSDを交換した記事が下記となっています。
Linuxでクローン!ddコマンドからパーティション拡張までしてみた
CUDA Toolkit をインストール
今回はCUDA Toolkit 11.3をインストールしました。
下記のコマンドに関しては、あくまでUbuntu18.04 + CUDA Toolkit 11.3の場合です。
上記のダウンロードのページに記載している内容です。
インストールする環境によって異なります。必ずCUDAのダウンロードページをご確認下さい。
1 2 3 4 5 6 7 |
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600 wget https://developer.download.nvidia.com/compute/cuda/11.3.0/local_installers/cuda-repo-ubuntu1804-11-3-local_11.3.0-465.19.01-1_amd64.deb sudo dpkg -i cuda-repo-ubuntu1804-11-3-local_11.3.0-465.19.01-1_amd64.deb sudo apt-key add /var/cuda-repo-ubuntu1804-11-3-local/7fa2af80.pub sudo apt-get update sudo apt-get -y install cuda |
インストール後にはホームディレクトリで環境変数を追加しておきます。
sudo vim ~/.bashrc
1 2 |
export PATH="/usr/local/cuda/bin:$PATH" export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH" |
再起動して nvidia-smi や nvcc -V で正常にインストールされているか分かります。
CUDA11.3、またNVIDIAのDriverが465.19.01であることが確認できました。
NVIDIA-SMI 465.19.01 Driver Version: 465.19.01 CUDA Version: 11.3
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
iotengineer@iotengineer-Inspiron-3650:~$ nvidia-smi Sat Oct 22 19:01:57 2022 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 465.19.01 Driver Version: 465.19.01 CUDA Version: 11.3 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |===============================+======================+======================| | 0 NVIDIA GeForce ... On | 00000000:01:00.0 Off | N/A | | 30% 32C P8 N/A / 75W | 16MiB / 3910MiB | 0% Default | | | | N/A | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=============================================================================| | 0 N/A N/A 846 G /usr/lib/xorg/Xorg 9MiB | | 0 N/A N/A 998 G /usr/bin/gnome-shell 4MiB | +-----------------------------------------------------------------------------+ |
1 2 3 4 5 6 |
iotengineer@iotengineer-Inspiron-3650:~$ nvcc -V nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2021 NVIDIA Corporation Built on Sun_Mar_21_19:15:46_PDT_2021 Cuda compilation tools, release 11.3, V11.3.58 Build cuda_11.3.r11.3/compiler.29745058_0 |
dockerのインストール
Vitis AIではdocker環境が必要となります。下記記事のように、docker環境を整えました。
VItis AI 2.5やPetaLinuxなどインストールしてみたメモ
「sudo docker run hello-world」の前に一度再起動して、dockerが動作するか確認します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
sudo apt-get update sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable" sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io sudo docker run hello-world sudo usermod -aG docker $USER |
※ただ1回目は上手くいかず、下記記事を参考に2回目を実施したら上手くいきました。
内容としては同じはずですが、今回Ubuntuが18.04だったためか?結局分かりませんでした。
https://penguin-coffeebreak.com/archives/333
Vitis AIのGPU版インストールする
Vitis AIの公式ページに従い、インストールします。
但し、筆者の環境(PCのメモリが16GB)ではメモリ不足でにエラーになりました。
そのためメモリスワップ(拡張メモリ)の容量を、更に16GB増やして対応します。
1 2 3 |
sudo dd if=/dev/zero of=/var/swap bs=1M count=16384 sudo mkswap /var/swap sudo swapon /var/swap |
エラーが出た詳細は下記記事に記載しています。
Vitis AIでdocker_build_gpu.shが失敗するメモ
GitHubからVitis AI をダウンロードします。
1 2 |
git clone --recurse-submodules https://github.com/Xilinx/Vitis-AI cd Vitis-AI |
Vitis AIのdockerフォルダに移動して、GPU版をビルドします。(1~2時間かかりました)
1 2 |
cd docker/ ./docker_build_gpu.sh |
無事ビルド出来ると、下記のように「Successfully…」という形でした。
dockerのイメージファイルを確認すると、合計で120GBほど使用しています。
1 2 3 4 5 6 7 8 |
iotengineer@iotengineer-Inspiron-3650:~$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE xilinx/vitis-ai-gpu 2.5 040ee6032315 27 minutes ago 33.7GB xilinx/vitis-ai-gpu 2.5.0 040ee6032315 27 minutes ago 33.7GB xilinx/vitis-ai-gpu 2.5.0.1260 040ee6032315 27 minutes ago 33.7GB xilinx/vitis-ai-gpu latest 040ee6032315 27 minutes ago 33.7GB nvidia/cuda 11.0.3-cudnn8-runtime-ubuntu18.04 dc5221f05596 2 months ago 3.82GB hello-world latest feb5d9fea6a5 12 months ago 13.3kB |
Vitis AIのGPU版インストールフォルダを環境変数を追加しておいた方が良いです。
「~」箇所は各自で保存した場所です。下記追記しておけば、毎回入力せずに済みます。
sudo vim ~/.bashrc
1 2 |
export VITIS_AI_HOME="~/Vitis-AI" export CUDA_HOME=/usr/local/cuda |
NVIDIA-Container-Toolkitをインストールする
docker上でNVIDIAを使う場合は、コンテナへのToolkitもインストールします。
恐らくインストールしないと、dockerで動かすとき下記のようなエラーが出ます
docker: Error response from daemon: could not select device driver "" with capabilities: [[gpu]].
そのため、NVIDIA-Container-Toolkitをインストールします。
1 2 3 4 5 6 |
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 |
nvidia-container-cli info で正常にインストールされたか確認できます
1 2 3 4 5 6 7 8 9 10 11 12 |
iotengineer@iotengineer-Inspiron-3650:~$ nvidia-container-cli info NVRM version: 465.19.01 CUDA version: 11.3 Device Index: 0 Device Minor: 0 Model: NVIDIA GeForce GTX 1650 Brand: GeForce GPU UUID: GPU-c0f4fe80-6a26-e299-b0d7-7115cde7755d Bus Location: 00000000:01:00.0 Architecture: 7.5 iotengineer@iotengineer-Inspiron-3650:~$ |
Vitis AI 2.5 GPU docker を起動する
インストールしたVitis AIのフォルダからGPU dockerを起動できます。
下記のようにVitis AIのロゴが出てきて、VerとGPU版が表示されました。
Docker Image Version: 2.5.0.1260 (GPU)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
cd Vitis-AI/ ./docker_run.sh xilinx/vitis-ai-gpu:latest Setting up iotengineer '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 (GPU) Vitis AI Git Hash: 06a72491b Build Date: 2022-10-22 |
まとめ
XilinxのFPGAのAI開発環境である、Vitis-AI 2.5のGPU版を立ち上げてみました。
サンプルプログラムなどもGPU版が前提で作られているケースが多いです。
Vitis AI に関しては出来る限りGPU版をインストールしておくことを推奨します。
是非皆さまも試してみて下さい。
今回の記事含めて、第6回AIエッジコンテストの一環でした。
下記にてコンテストでテスト・実施したことのまとめを紹介しています。
コメント