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

内容の概要: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 チュートリアルを更新し続けますので、引き続きご注目ください。
- 以上 -