HyperAI超神経

TVM の初心者からマスターまで TVM のインストール (パート 2)

2年前
情報
Jiaxin Sun
特色图像

内容の概要:TVM のインストール方法には、ソース コードからのインストール、Docker イメージを使用したインストール、および NNPACK Contrib インストールの 3 つの方法があります。この記事では、Docker イメージと NNPACK Contrib を使用してインストールする方法について説明します。

キーワード:TVM Dockerの基本チュートリアル   

この記事は、WeChat パブリック アカウントで最初に公開されました: HyperAI Super Neural

TVM ドキュメント 101 へようこそ。このシリーズでは、TVM の毎日の指導を続けます。

最終号 パート 1  TVM をソースコードでインストールする方法を紹介しました。今回は、TVM を学習する前の準備作業を続けます。Docker イメージと NNPACK Contrib を使用した TVM のインストールについて説明します。

 TVMのインストール Dockerイメージのインストール

開発者は、Docker ツール スクリプトを使用して開発環境を確立できます。これは、TVM デモやチュートリアルを実行する場合にも役立ちます。

Docker が必要です

https://docs.docker.com/engine/installation

CUDA を使用する場合は、nvidia-docker が必要です。

https://github.com/NVIDIA/nvidia-docker

TVM ソース コードの配布を取得するか、GitHub リポジトリのクローンを作成して補助スクリプトを取得します。

git clone --recursive https://github.com/apache/tvm tvm

次のコマンドを使用して、Docker イメージを起動します。

/path/to/tvm/docker/bash.sh <image-name>

ローカル ビルドの完了後、ここでの image-name はローカルの Docker イメージ名になります。次に例を示します。tvm.ci_cpu  。

このヘルパー スクリプトにより、次のことが可能になります。

  •   現在のディレクトリを /workspace にマウントします
  •   ユーザーを bash.sh を呼び出すユーザーに切り替えます (これにより、ホスト システムへの読み取り/書き込みが可能になります)
  •   Linux 上のホストのネットワークを使用します。ホスト ネットワーク ドライブはサポートされていないため、Jupyter Notebook を使用するには、macOS でブリッジ ネットワークを使用し、ポート 8888 を公開します。

次のように入力して Jupyter Notebook を起動します。

jupyter notebook

macOS で Jupyter Notebook を起動するときにエラーが表示される場合 OSエラー: [Errno 99] 要求されたアドレスを割り当てることができませんでは、次の方法でバインドされた IP アドレスを変更できます。

jupyter notebook --ip=0.0.0.0

macOS ではブリッジ ネットワークを使用しているため、Jupyter Notebook は次のようなファイルで報告されることに注意してください。 http://{コンテナのホスト名}:8888/?token=…  URL 上で実行します。ブラウザに貼り付ける場合は、次のことを行う必要があります。 コンテナのホスト名  と置き換えます ローカルホスト

Dockerのソースコード 

Docker ソース コードを表示する: 独自の Docker イメージを構築します。

https://github.com/apache/tvm/tree/main/docker

次のコマンドを実行して、Docker イメージをビルドします。

/path/to/tvm/docker/build.sh <image-name>

非公式のサードパーティ製の事前構築イメージを使用することもできます。 注: これらのイメージはテスト用であり、ASF のバージョンではありません。

https://hub.docker.com/r/tlcpack

TVM のインストール NNPACK Contrib のインストール 

NNPACK は、x86-64、ARMv7、または ARM64 アーキテクチャの CPU 上で実行できるニューラル ネットワーク計算用のアクセラレーション パッケージです。NNPACK を使用すると、MXNet などの高レベル ライブラリは、ラップトップやモバイル デバイスなどのマルチコア CPU コンピュータでの実行を高速化できます。

TVM にはすでにネイティブに調整されたスケジュールがあるため、ここでの NNPACK は主に参照と比較を目的としています。一般的な使用には、ネイティブに調整された TVM 実装の方が適しています。

TVM は、畳み込み層、最大プーリング層、および完全接続層 (推論のみ) での NNPACK 順伝播をサポートします。このドキュメントでは、TVM で NNPACK を使用する方法の概要を説明します。

状態 

NNPACK の基礎となる実装では、fft や winograd などのさまざまな高速化手法が使用されます。これらのアルゴリズムは、一部の特別なバッチ サイズ、カーネル サイズ、ストライド設定で他のアルゴリズムよりも優れたパフォーマンスを発揮するため、コンテキストによっては、すべての畳み込み層、最大プーリング層、または完全接続層が NNPACK で動作できるわけではありません。

NNPACK は Linux および OS X システムのみをサポートしており、現在 Windows はサポートしていません。

NNPACKの構築/インストール 

学習済みモデルが NNPACK を使用するための条件を満たしている場合、NNPACK をサポートする TVM を構築できます。

次の簡単な手順に従います。 次のコマンドを使用して NNPACK 共有ライブラリを構築します。 TVM は NNPACK に動的にリンクします。

注: 次の NNPACK インストール手順は、Ubuntu 16.04 でテストされています。

建築忍者 

NNPACK には最新バージョンの Ninja が必要です。したがって、ソースから Ninja をインストールする必要があります。

git clone git://github.com/ninja-build/ninja.git
cd ninja
./configure.py --bootstrap

環境変数 PATH を設定して、bash に ninja 実行可能ファイルの場所を指示します。たとえば、ホーム ディレクトリ ~ に ninja のクローンを作成したとします。次に、~/.bashrc に次の行を追加します。

export PATH="${PATH}:~/ninja"

NNPACKの構築 

CMAKE 新しいバージョン NNPACK は Peach とその他の依存関係を個別にダウンロードします

https://github.com/Maratyszcza/PeachPy

注: 少なくとも OS X では、以下の ninja install を実行すると、/usr/local/lib にインストールされている googletest ライブラリが上書きされます。 nnpack コピーを置き換えるために googletest を再度ビルドする場合は、必ず -DBUILD_SHARED_LIBS=ON を cmake に渡してください。

git clone --recursive https://github.com/Maratyszcza/NNPACK.git
cd NNPACK

# 在 CFLAG 和 CXXFLAG 中添加 PIC 选项以构建 NNPACK 共享库
sed -i "s|gnu99|gnu99 -fPIC|g" CMakeLists.txt
sed -i "s|gnu++11|gnu++11 -fPIC|g" CMakeLists.txt
mkdir build
cd build

# 生成 ninja 构建规则并在配置中添加共享库
cmake -G Ninja -D BUILD_SHARED_LIBS=ON ..
ninja
sudo ninja install

# 在你的 ldconfig 中添加 NNPACK 的 lib 文件夹
echo "/usr/local/lib" > /etc/ld.so.conf.d/nnpack.conf
sudo ldconfig

NNPACKをサポートするTVMの構築

git clone --recursive https://github.com/apache/tvm tvm

* 存在する config.cmake  中程度の設定 set(USE_NNPACK ON)  。

* 意思 NNPACK_PATH  に設定 $(あなたの_NNPACK_INSTALL_PATH)  構成後、make を使用して TVM をビルドします

make

tvm.hyper.ai にログインして元のドキュメントを表示します。HyperNerve は今後も中国語 TVM チュートリアルを更新し続けますので、引き続きご注目ください。

- 以上 -