Vitis AIでPytorchのConda環境を新しく構築してみた

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

Vitis AIでPytorchのConda環境を立ち上げてみました。

量子化(vai_q_pytorch)する上でgpuとnvccを使うには、環境のセットアップが必要です。

FPGAに向けてPytorchのモデルを量子化する内容を紹介します。

 

スポンサーリンク

Vitis AIでPytorchのConda環境を新しく構築してみた

Vitis AIでPytorchのConda環境を新しく立ち上げてみました。

3D物体検出用にGPUとnvccを使った、FPGAに向けたモデルの量子化をするためです。

(デフォルトのvai_q_pytorchだとデータ並列化まで対応できていません)

 

量子化(vai_q_pytorch)をインストールし直しました。

公式ドキュメントによると2つ手法があります。今回は前者を紹介します。

  • Docker ContainersのConda環境毎変えてしまう方法
  • ソースコードから入れなおす方法

 https://docs.xilinx.com/r/en-US/ug1414-vitis-ai/Installing-vai_q_pytorch

 

後者のソースコードから入れなおす方法に関しては下記記事で紹介しています。

Vitis AIでvai_q_pytorchをインストールしてみたメモ

Vitis AIでvai_q_pytorchをインストールしてみたメモ
Vitis AI でPytorchの量子化(vai_q_pytorch)する場面があります。 Ver2.5でnvccの並列計算を使うには、環境のセットアップが必要です。 vai_q_pytorchをインストールする方法を紹介します。

 

Vitis AI 2.5のGPU版で動かしています。

Vitis-AI 2.5のGPU dockerで確認しています。

下記記事でインストール・環境構築した内容を紹介しています。(リンク先はこちら)

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

Vitis AI GPU dockerの環境構築をしたメモ
XilinxのFPGAのAI開発環境である、Vitis-AI 2.5のGPU版を立ち上げてみました。 dockerやCUDAなど多くのものを事前にインストールする必要があります。 実際にGPU dockerの環境構築をした手順を紹介します。

 

これ以降はVitis AIを立ち上げて、Pytorch用のconda環境で作業しています。

iotengineer@iotengineer-Inspiron-3650:~/Vitis-AI$ ./docker_run.sh xilinx/vitis-ai-gpu:latest

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

 

Docker ContainersのCondaを入れ替える

公式の手順を(そのまま)従ってインストール作業をすると恐らくエラーが発生します。

#### Vai_q_pytorch is NOT compiled and installed successfully.

Vitis-AI /workspace > conda activate vitis-ai-pytorch
(vitis-ai-pytorch) Vitis-AI /workspace > cd docker/dockerfiles/
(vitis-ai-pytorch) Vitis-AI /workspace/docker/dockerfiles > sh replace_pytorch.sh vitis-ai-pt1_7
~~~~~~~~~~~~~~~~~~~~~~~
WARNING: Requirement './pytorch_nndct-*.whl' looks like a filename, but the file does not exist
ERROR: pytorch_nndct-*.whl is not a valid wheel filename.
-e 
#### Vai_q_pytorch is NOT compiled and installed successfully.
(vitis-ai-pytorch) Vitis-AI /workspace/docker/dockerfiles >

 

vai_q_pytorchのインストール作業についてissueでも挙がっていました。

そこではsudo apt-getでcuda-toolkitを入れてと書いてあります。

 https://github.com/Xilinx/Vitis-AI/issues/990

 

デフォルトCondaではnvcc自体がインストールされていません。

(vitis-ai-pytorch) Vitis-AI /workspace > nvcc -V
bash: nvcc: command not found

 

ただsudo apt-getだけをしても、上手くインストール出来ませんでした。

E: Unable to locate package cuda-toolkit-10-2

(vitis-ai-pytorch) Vitis-AI /workspace > sudo apt-get update
(vitis-ai-pytorch) Vitis-AI /workspace > sudo apt-get install -y cuda-toolkit-10-2
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package cuda-toolkit-10-2

 

cuda-toolkitのインストーラからインストールします

NVIDIAのHPからcuda-toolkitのインストーラを入手して対応します。

(今回はVerの10-2で確認しました。11-0や11-3でも動作しました。)

CUDA Toolkit 10.2 Download
Get CUDA Toolkit 10.2 for Windows, Linux, and Mac OSX.

 

一番注意するのは、cudaの最後の手順通りに「sudo apt-get install -y cuda」としないこと。

sudo apt-get install -y cuda-toolkit-10-2 とtoolkitとVerまで指定すること。

docker上のインストールが終わらず、conda環境が構築できないためです。

conda activate vitis-ai-pytorch 
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/10.2/Prod/local_installers/cuda-repo-ubuntu1804-10-2-local-10.2.89-440.33.01_1.0-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1804-10-2-local-10.2.89-440.33.01_1.0-1_amd64.deb
sudo apt-key add /var/cuda-repo-10-2-local-10.2.89-440.33.01/7fa2af80.pub
sudo apt-get update
sudo apt-get install -y cuda-toolkit-10-2

 

インストーラからcuda-toolkitをインストールするとdocker上でもcuda環境が確認できます

(vitis-ai-pytorch) Vitis-AI /workspace > ls /usr/local/cuda
bin  doc  extras  include  lib64  libnsight  libnvvp  LICENSE  nsightee_plugins  nvml  nvvm  nvvmx  README  samples  share  src  targets  tools  version.txt
(vitis-ai-pytorch) Vitis-AI /workspace > nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2019 NVIDIA Corporation
Built on Wed_Oct_23_19:24:38_PDT_2019
Cuda compilation tools, release 10.2, V10.2.89

 

この状態でCondaを入れなおします。

シェルスクリプトはdocker/dockerfiles/replace_pytorch.shにあります。

(vitis-ai-pytorch) Vitis-AI /workspace > sh docker/dockerfiles/replace_pytorch.sh vitis-ai-pt1_7

 

結構時間がかかります。30分~1時間ほどです。

暫く待つと、下記のようにmambaでConda環境をインストールします。

(デフォルトのスクリプトだとpytorch==1.7.1 cudatoolkit=10.2の環境に切り替わります。)

Successfully installed ninja-1.10.2.4 numpy-1.17.2 pytorch-nndct-0.1.0-06a7249-torch1.7.1 sklearn-0.0
-e 
#### Vai_q_pytorch is compiled and installed successfully.

                  __    __    __    __
                 /  \  /  \  /  \  /  \
                /    \/    \/    \/    \
███████████████/  /██/  /██/  /██/  /████████████████████████
              /  / \   / \   / \   / \  \____
             /  /   \_/   \_/   \_/   \    o \__,
            / _/                       \_____/  `
            |/
        ███╗   ███╗ █████╗ ███╗   ███╗██████╗  █████╗
        ████╗ ████║██╔══██╗████╗ ████║██╔══██╗██╔══██╗
        ██╔████╔██║███████║██╔████╔██║██████╔╝███████║
        ██║╚██╔╝██║██╔══██║██║╚██╔╝██║██╔══██╗██╔══██║
        ██║ ╚═╝ ██║██║  ██║██║ ╚═╝ ██║██████╔╝██║  ██║
        ╚═╝     ╚═╝╚═╝  ╚═╝╚═╝     ╚═╝╚═════╝ ╚═╝  ╚═╝

        mamba (0.15.3) supported by @QuantStack

        GitHub:  https://github.com/mamba-org/mamba
        Twitter: https://twitter.com/QuantStack

█████████████████████████████████████████████████████████████


Looking for: ['python=3.7']

conda-channel/linux-64   [====================] (00m:00s) Done
conda-channel/noarch     [====================] (00m:00s) Done
pkgs/main/linux-64       [====================] (00m:00s) No change
pkgs/main/noarch         [====================] (00m:00s) No change
pkgs/r/noarch            [====================] (00m:00s) No change
pkgs/r/linux-64          [====================] (00m:00s) No change
python =3.7*: overriding channel, version and build from installed packages due to --force-reinstall.
ERROR   Selected channel specific (or force-reinstall) job, but package is not available from channel. Solve job will fail.
Transaction

  Prefix: /opt/vitis_ai/conda/envs/vitis-ai-pt1_7

  All requested packages already installed

Preparing transaction: done
Verifying transaction: done
Executing transaction: done
-e 
#### Cleaned up /scratch .
(vitis-ai-pytorch) Vitis-AI /workspace > 

 

最後にconda activateを行います。これでConda環境が切り替わります。

コマンドの頭が(vitis-ai-pt1_7)に切り替わりました。

(vitis-ai-pytorch) Vitis-AI /workspace > conda activate vitis-ai-pt1_7
(vitis-ai-pt1_7) Vitis-AI /workspace > 

 

Vitis AIのVerを考慮してブランチを指定します

直近の2023/1/12に新しいVerの 3.0がリリースされています。

Vitis AI 2.5だとスクリプト(replace_pytorch.sh)がそのままでは動作できなくなっていました。

途中でvai_q_pytorchのファイルが無いとエラーが出ます。

docker/dockerfiles/replace_pytorch.sh: 110: cd: can't cd to src/Vitis-AI-Quantizer/vai_q_pytorch/ -e

#### Pytorch packages is replaced successfully.
-e 
#### Checkout code of vai_q_pytorch ...
-e >>>> You can apply your local code of vai_q_pytorch and comment out the following lines of git command <<<<
Initialized empty Git repository in /scratch/code_vaiq/.git/
remote: Enumerating objects: 73907, done.
remote: Counting objects: 100% (5246/5246), done.
remote: Compressing objects: 100% (2420/2420), done.
remote: Total 73907 (delta 2155), reused 4967 (delta 2100), pack-reused 68661
Receiving objects: 100% (73907/73907), 2.04 GiB | 9.66 MiB/s, done.
Resolving deltas: 100% (31759/31759), done.
From https://github.com/Xilinx/Vitis-AI
 * branch                master     -> FETCH_HEAD
 * [new branch]          master     -> origin/master
error: Sparse checkout leaves no entry on working directory
docker/dockerfiles/replace_pytorch.sh: 110: cd: can't cd to src/Vitis-AI-Quantizer/vai_q_pytorch/
-e 
#### Vai_q_pytorch code is NOT checked out successfully.

 

もし2.5で同様にConda環境を入れ替えたい場合は、スクリプトファイルを編集します。

vai_q_pytorchだけをチェックアウトしている箇所があります。

pullをmasterではなく、Verを指定して対応します。

git pull origin master → git pull origin 2.5

echo -e "\n#### Checkout code of vai_q_pytorch ..."
echo -e "\e[91m>>>> You can apply your local code of vai_q_pytorch and comment out the following lines of git command <<<<\e[m"
git init code_vaiq && cd code_vaiq 
git config core.sparsecheckout true
echo 'src/Vitis-AI-Quantizer/vai_q_pytorch/' >> .git/info/sparse-checkout
git remote add origin https://github.com/Xilinx/Vitis-AI.git
# git pull origin master
git pull origin 2.5
cd src/Vitis-AI-Quantizer/vai_q_pytorch/

 

まとめ

Vitis AIのConda環境を入れ替えることが出来ました。

Vitis AIのサンプルプログラムの一部では、一度古いVerを指定する必要があります。

またpytorch,cuda-toolkitなどの古い環境に切り替えたい場合にも役立ちます。

 

是非皆さまも試してみて下さい。

 

今回の記事含めて、第6回AIエッジコンテストの一環でした。

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

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

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

 

コメント