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

AI

Vitis AIでPytorchの量子化(vai_q_pytorch)する場面があります。

Ver2.5でnvccの並列計算を使うには、環境のセットアップが必要です。

vai_q_pytorchをインストールする方法を紹介します。

 

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

Vitis AI 2.5でPytorchの量子化(vai_q_pytorch)を使う場面です。

GPU+NVCCなどを使った並列計算する場合は、セットアップが必要です。

(簡単なモデルの量子化に関しては、特に気にする必要はありません。)

 

2つ対応方法があり、vai_q_pytorchを(再)インストールする手法があります。

今回は後者を紹介します。(前者に関しては、最後に別記事のリンク貼っています)

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

 

あくまで一例ですので、正しい手順は公式を参照してください。

Vitis-AIの下記マニュアル箇所の「Install from the Source Code」箇所です。

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

 

vai_q_pytorchをインストールは出来ました。

ただし最終的に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の環境構築をした手順を紹介します。

 

Pytorchのconda環境を立ち上げて、使用するライブラリのセットアップを進めます。

 

 

 

cuda-toolkitをインストールします

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

今回はGPUで動作させるためです。

(筆者はcudaのVer10-2で確認しました。各自にあったものをダウンロードします)

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環境が構築できないためです。

 

vai_q_pytorchをインストールする

公式の手順通り、bashrcにCUDAの環境変数は追記済です。

ホームディレクトリにて下記コマンドで編集可能です。

sudo vim ~/.bashrc

 

Pytorchのconda環境を立ち上げて、使用するライブラリのセットアップを進めます。

各自でPytorchで学習する際に必要なものをインストールしておきます。(筆者例は下記でした)

 https://github.com/pometa0507/6th-ai-reference2

 

「Install other dependencies」箇所は環境で異なります。筆者のは一例です。

requirements.txtをインストールしています。

 

特に狙ったわけではありませんが、公式の手順のVerと同じでした。

PytorchのVerに関しては1.7.1です。

※おそらくtorch環境を入れていないと最終的にエラーになります。

torch==1.7.1+cu110

torchvision==0.8.2+cu110

 

Vitis-AIのpytorch_bindingのフォルダに移動して、インストールします。

ただしvai_q_pytorchの動作確認をすると、Ninjaが必要とエラーが出ます。

RuntimeError: Ninja is required to load C++ extensions

 

ninjaをインストールする

そのままdocker上でninjaをインストールします。

ninjaはCMAKEより高速・軽量というビルドシステムです。下記記事で紹介しています。

Ubuntuでninja-buildをインストールしてみた

Ubuntuでninja-buildをインストールしてみた
CMAKEよりも高速にビルドできると言われるninjaがあります。 機械学習などのライブラリを使うときにもninjaを求められる場合があります Ubuntuでインストールしてみましたので紹介します。

 

下記手順で対応可能です。

 

pytorchのインストールは出来たが…

ninjaインストール後はvai_q_pytorchの動作確認できました。

[VAIQ_NOTE]: Loading NNDCT kernels...

 

但し、実際にPytorchを使った学習をさせてみた所、下記エラーが出ました。

OSError: /opt/vitis_ai/conda/envs/vitis-ai-pytorch/lib/python3.7/site-packages/pytorch_nndct/nn/_kernels.cpython-37m-x86_64-linux-gnu.so: undefined symbol: _ZN3c106detail12infer_schema20make_function_schemaENS_8ArrayRefINS1_11ArgumentDefEEES4_

 

エラーを調べると、下記のような内容でした。

  • pytorchのverがdockerと合っていないよ
  • 別の手法のPytorchのConda環境ごと立ち上げる方法を試してみてね

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

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

 

まとめ

Vitis AIでPytorchの量子化(vai_q_pytorch)する場面があります。

Ver2.5でnvccの並列計算を使うには、環境のセットアップが必要です。

ただし今回の手法では、筆者が実施したいPytorchの量子化が出来ませんでした。

 

今回の手順では上手くいきませんでしたが、別の手段で量子化することが出来ました。

下記記事で紹介しています。(リンク先はこちら)

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

Vitis AIでPytorchのConda環境を新しく構築してみた
Vitis AIでPytorchのConda環境を立ち上げてみました。 量子化(vai_q_pytorch)する上でgpuとnvccを使うには、環境のセットアップが必要です。 FPGAに向けてPytorchのモデルを量子化する内容を紹介します。

コメント