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 2.5のGPU版で動かしています。
Vitis-AI 2.5のGPU dockerで確認しています。
下記記事でインストール・環境構築した内容を紹介しています。(リンク先はこちら)
これ以降はVitis AIを立ち上げて、Pytorch用のconda環境で作業しています。
1 2 3 4 |
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.
1 2 3 4 5 6 7 8 9 |
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自体がインストールされていません。
1 2 |
(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
1 2 3 4 5 6 |
(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の最後の手順通りに「sudo apt-get install -y cuda」としないこと。
sudo apt-get install -y cuda-toolkit-10-2 とtoolkitとVerまで指定すること。
docker上のインストールが終わらず、conda環境が構築できないためです。
1 2 3 4 5 6 7 8 |
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環境が確認できます
1 2 |
(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 |
1 2 3 4 5 |
(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にあります。
1 |
(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の環境に切り替わります。)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
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)に切り替わりました。
1 2 |
(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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
#### 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
1 2 3 4 5 6 7 8 9 |
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エッジコンテストの一環でした。
下記にてコンテストでテスト・実施したことのまとめを紹介しています。
コメント