Vitis AI GPU dockerの環境構築をしたメモ

本サイトはアフィリエイト広告を利用しています。
AI

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/docs/learn/system_requirements.md at 2.5 · Xilinx/Vitis-AI
Vitis AI is Xilinx’s development stack for AI inference on Xilinx hardware platforms, including both edge devices and Al...

 

実際に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に搭載した内容を紹介しています。(リンク先はこちら)

グラボの補助電源なしのメリット!玄人志向のGTX1650編

グラボの補助電源なしのメリット!玄人志向のGTX1650編
玄人志向の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でCUDAの削除から再インストールまでのメモ

UbuntuでCUDAの削除から再インストールまでのメモ
CUDAのインストールに失敗した場合、またバージョンを変更したい場合は多々あります。 UbuntuでCUDAの削除から再インストールまで実施しました。 自身への覚書含めて、ブログ記事として紹介します。

 

Ubuntu

Vitis AI 2.5では「18.04 or 20.04のUbuntu」が対応しています。

筆者の直近のUbuntu環境は18.04です。

※20.04でもインストールして動作することも確認しています。

 

もしUbuntuをPCにインストールしたい場合は下記記事をご参考下さい。

OS無しのPCにLinux(Ubuntu)をインストールしてみた

OS無しのPCにLinux(Ubuntu)をインストールしてみた
OS無しの中古PCを購入しましたので、Linuxをインストールしました。 Ubuntuを入れています。 ダウンロードからインストール方法まで紹介します。

 

メモリ

PCのメモリに関しては要求の記載はありませんが、理想は32GB以上あった方が良いです。

理由としてはVitis AI 2.5のGPU版をインストール時に16GBではメモリ不足になったからです。

但し、メモリ16GBでも仮想メモリを増やせばインストール可能です。(また別途後述)

 

下記記事でメモリ不足でインストール失敗した詳細を紹介しています。

Vitis AIでdocker_build_gpu.shが失敗するメモ

Vitis AIでdocker_build_gpu.shが失敗するメモ
VItis AIでGPU版のDockerをビルドすると失敗しました。 エラーの症状とメッセージ、ログをメモしておきます。 また原因を調べてみました。

 

ストレージ

ストレージに関しては最低でも200GB程度は空けておいた方が良いです。

GPU版のdockerインストールしただけで120GB近く容量を使います。

最初は500GBのSSDを使っていましたが、最後には1000GBのSSDと交換しました。

 

実際にSSDを交換した記事が下記となっています。

Linuxでクローン!ddコマンドからパーティション拡張までしてみた

Linuxでクローン!ddコマンドからパーティション拡張までしてみた
Linux(Ubuntu)でCドライブの容量が足りなくなり、SSDを交換しました。 ddコマンドでのクローン、またパーティション拡張まで対応しました。 無事500GB→1TBにSSDの容量アップできた旨を紹介します。

 

CUDA Toolkit をインストール

今回はCUDA Toolkit 11.3をインストールしました。

CUDA Toolkit 11.3 Downloads
Get CUDA Toolkit 11.3 for Linux and Windows.

 

下記のコマンドに関しては、あくまでUbuntu18.04 + CUDA Toolkit 11.3の場合です。

上記のダウンロードのページに記載している内容です。

インストールする環境によって異なります。必ずCUDAのダウンロードページをご確認下さい。

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

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

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 |
+-----------------------------------------------------------------------------+

 

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が動作するか確認します。

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増やして対応します。

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が失敗するメモ

Vitis AIでdocker_build_gpu.shが失敗するメモ
VItis AIでGPU版のDockerをビルドすると失敗しました。 エラーの症状とメッセージ、ログをメモしておきます。 また原因を調べてみました。

 

GitHubからVitis AI をダウンロードします。

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

 

Vitis AIのdockerフォルダに移動して、GPU版をビルドします。(1~2時間かかりました)

cd docker/
./docker_build_gpu.sh

 

無事ビルド出来ると、下記のように「Successfully…」という形でした。

 

dockerのイメージファイルを確認すると、合計で120GBほど使用しています。

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

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をインストールします。

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 で正常にインストールされたか確認できます

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)

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エッジコンテストの一環でした。

下記にてコンテストでテスト・実施したことのまとめを紹介しています。

第6回AIエッジコンテストが凄く難しいけど勉強になった感想

第6回AIエッジコンテストが凄く難しいけど勉強になった感想
第6回AIエッジコンテストに参加していました。 RISC-Vを使って、画像とLIDAR点群からの3D物体検出が課題でした。 ただ貴重な勉強の機会になりましたし、自身への忘備録としても内容を紹介します。

コメント