内容の概要: TVM には、ソース コードからのインストール、Docker イメージを使用したインストール、および NNPACK Contrib インストールの 3 つのインストール方法があります。この記事では、ソース コードを使用して TVM をインストールする方法に焦点を当てます。
キーワード: TVM クイック スタート ソース コードのインストール
以前の記事で 「TVM中国局が正式に開局します!」最も完成度の高い機械学習モデル導入の「参考書」はこちらでは、TVM 全体の重要な役割と、TVM の中国語ドキュメントを利用して機械学習コンパイラーの探索を開始する方法を紹介しました。
次に、一連のチュートリアルを作成します。 TVM の入門から習熟までの学習経路を詳しく説明し、すべての開発者が優れた機械学習コンパイル エンジニアになれることを願っています。
この記事では、「基礎を築く」重要なステップである TVM のインストールを紹介します。
TVM のインストールは 3 つの方法で実行できます。
TVM インストール チュートリアルのパート 1 として、この記事ではソース コードからインストールするためのベスト プラクティスについて詳しく説明します。 また、柔軟な構成とコンパイルを最大限に活用できます。
TVM パッケージを 0 から 1 までビルドしてさまざまなシステムにインストールするには、次の 2 つの手順が必要です。
2. プログラミング言語パッケージ (Python パッケージなど) をセットアップします。
TVM ソース コードをダウンロードするには、次のサイトにアクセスしてください。https://tvm.apache.org/download
GitHub からソース リポジトリのクローンを作成するには、-recursive オプションを使用してサブモジュールのクローンを作成します。
git clone --recursive https://github.com/apache/tvm tvm
Windows ユーザーは、Git シェルを開いて次のコマンドを入力できます。
git submodule init
git submodule update
私たちの目標は、共有ライブラリを構築することです。
ランタイム ライブラリのみをビルドすることも可能です。
https://tvm.hyper.ai/docs/how_to/deploy/
TVM ライブラリの最小ビルド要件は次のとおりです。
Ubuntu/Debian などの Linux オペレーティング システムで、これらの依存環境をインストールするには、ターミナルで次のコマンドを実行してください。
sudo apt-get update
sudo apt-get install -y python3 python3-dev python3-setuptools gcc libtinfo-dev zlib1g-dev build-essential cmake libedit-dev libxml2-dev
Homebrew を使用して、Intel または M1 チップを搭載した macOS に必要な依存関係をインストールします。これらの依存関係が正しくインストールされ、構成されていることを確認するには、Homebrew によって指定されたインストール手順に従う必要があります。
brew install gcc git cmake
brew install llvm
brew install python@3.8
TVM の構成は、config.cmake を編集するか、コマンド ラインで cmake フラグを渡すことによって変更できます。
mkdir build
cp cmake/config.cmake build
build/config.cmake
カスタムコンパイルオプション-lc++abi
リンクエラーを避けるためにset(USE_CUDA OFF)
に変更します set(USE_CUDA ON)
CUDA バックエンドを有効にします。構築する他のバックエンドとライブラリ (OpenCL、RCOM、METAL、VULKAN...) についても同じことを行います。set(USE_GRAPH_EXECUTOR ON)
そして set(USE_PROFILER ON)
埋め込みグラフ エグゼキュータとデバッグ機能を有効にします。set(USE_RELAY_DEBUG ON)
、同時に環境変数 TVM_LOG_DEBUG を設定します。build/config.cmake
追加する set(USE_LLVM /path/to/your/llvm/bin/llvm-config)
set(USE_LLVM ON)
、CMake を使用して、利用可能な LLVM バージョンを検索します。set(USE_LLVM llvm-config-10)
set(USE_LLVM "/path/to/llvm-config --link-static")
そして set(HIDE_PRIVATE_SYMBOLS ON)
TVM と PyTorch で使用される LLVM の異なるバージョンの間で潜在的なシンボルの競合を回避するため。cmake -DCMAKE_CXX_COMPILER=/usr/lib/ccache/c++ ...
cmake -DCMAKE_CXX_COMPILER_LAUNCHER=ccache ...
cd build
cmake ..
make -j4
Ninja を使用するとビルドを高速化できます
cd build
cmake .. -G Ninja
ninja
TVM のルート ディレクトリには Makefile もあり、次のいくつかの手順を自動的に完了できます。 ビルドディレクトリを作成してデフォルトを変更する config.cmake
ビルド ディレクトリにコピーし、cmake を実行して、make を実行します。
ビルドディレクトリは環境変数を使用して設定できます TVM_BUILD_PATH
指定すること。もし TVM_BUILD_PATH
設定しない場合、Makefile は TVM 内のビルド ディレクトリが使用されると想定します。による TVM_BUILD_PATH
指定したパスは、絶対パスまたは TVM ルート ディレクトリを基準とした相対パスです。もし TVM_BUILD_PATH
スペースで区切られたパスのリストに設定すると、リストされたすべてのパスが作成されます。
別のビルド ディレクトリを使用する場合は、コンパイル済みディレクトリを指すように環境変数 TVM_LIBRARY_PATH を実行時に設定する必要があります。 libtvm.so
そして libtvm_runtime.so
位置。設定されていない場合、TVM は TVM Python モジュールに関連する場所を検索します。そして TVM_BUILD_PATH
異なります。これは絶対パスである必要があります。
# 在 "build" 目录下构建
make
# 替代位置,"build_debug"
TVM_BUILD_PATH=build_debug make
# 同时构建 "build_release" 和 "build_debug"
TVM_BUILD_PATH="build_debug build_release" make
# 使用调试构建
TVM_LIBRARY_PATH=~/tvm/build_debug python3
すべてがうまくいけば、Python パッケージのインストールを確認できます。
Conda を使用すると、TVM の実行に必要な依存関係を取得できます。 Conda がインストールされていない場合は、以下を参照してください。 Conda インストール ガイド Miniconda または Anaconda をインストールします。 Conda 環境で次のコマンドを実行します。
# 用 yaml 指定的依赖创建 Conda 环境
conda env create --file conda/build-environment.yaml
# 激活所创建的环境
conda activate tvm-build
上記のコマンドは、CMake や LLVM などの必要なビルド依存関係をすべてインストールします。 次に、前のセクションの標準ビルド プロセスを実行できます。
Conda 環境の外部でコンパイルされたバイナリを使用すると、LLVM が静的リンク モードに設定されます set(USE_LLVM "llvm-config --link-static")
。このようにして、生成されたライブラリは、Conda 環境の動的 LLVM ライブラリに依存しません。
上記は、Conda を使用して libtvm を構築するために必要な依存関係を提供する方法を示しています。すでに Conda をパッケージ マネージャーとして使用していて、TVM を Conda パッケージとして直接ビルドしてインストールしたい場合は、以下の手順に従うことができます。
conda build --output-folder=conda/pkg conda/recipe
# 在启用 CUDA 的情况下运行 conda/build_cuda.sh 来构建
conda install tvm -c ./conda/pkg
TVM は MSVC 経由での CMake によるビルドをサポートしています。 Visual Studio コンパイラが必要です。 VS の最小バージョンは Visual Studio Enterprise 2019 です
注: GitHub Actions の完全なテストの詳細を確認するには、Windows 2019 Runner にアクセスしてください。
必要な依存関係を取得し、tvm-build 環境をアクティブ化するには、ビルドに Conda 環境を使用することが公式に推奨されています。
次のコマンドラインを実行します。
mkdir build
cd build
cmake -A x64 -Thost=x64 ..
cd ..
上記のコマンドにより、ビルド ディレクトリにソリューション ファイルが生成されました。次に、次を実行します。
cmake --build build --config Release -- /m
現在、ROCm は Linux でのみサポートされているため、すべてのチュートリアルは Linux を念頭に置いて作成されています。
このセクションでは、仮想環境と、virtualenv や conda などのパッケージ マネージャーを使用して、Python パッケージと依存関係を管理する方法を紹介します。
Python パッケージは tvm/python にあります。インストール方法は 2 つあります。
この方法は、コードを変更する可能性のある開発者に適しています。
環境変数 PYTHONPATH を設定して、このライブラリの場所を Python に指示します。たとえば、私たちがいると仮定します。 /path/to/tvm
tvm はディレクトリ内に複製されます。 ~/.bashrc
次のコードを追加します。これにより、setup を再度呼び出すことなく、コードをプルしてプロジェクトを再構築できるようになり、これらの変更はすぐに反映されます。
export TVM_HOME=/path/to/tvm
export PYTHONPATH=$TVM_HOME/python:${PYTHONPATH}
setup.py を介して TVM の Python バインディングをインストールします。
# 为当前用户安装 TVM 软件包
# 注意:如果你通过 homebrew 安装了 Python,那么在安装过程中就不需要 --user
# 它将被自动安装到你的用户目录下。
# 在这种情况下,提供 --user 标志可能会在安装时引发错误。
export MACOSX_DEPLOYMENT_TARGET=10.9 # 这是 mac 所需要的,以避免与 libstdc++ 的符号冲突
cd python; python setup.py install --user; cd ..
Python の依存関係
管理されたローカル環境にインストールする場合は注意してください。 virtualenv
なら必要ない --user
ロゴ。
pip3 install --user numpy decorator attrs
pip3 install --user tornado
pip3 install --user tornado psutil xgboost cloudpickle
注: M1 チップを搭載した Mac では、 xgboost / scipy
いくつかの問題が発生する可能性があります。 scipy と xgboost は、openblas などの追加の依存関係をインストールする必要があります。次のコマンド ラインを実行して、scipy と xgboost、および必要な依存関係と構成をインストールします。
brew install openblas gfortran
pip install pybind11 cython pythran
export OPENBLAS=/opt/homebrew/opt/openblas/lib/
pip install scipy --no-use-pep517
pip install xgboost
NNPACK Contrib のインストール、表示
https://tvm.hyper.ai/docs/install/nnpack
Google Test を使用すると、TVM で C++ テストを実行できます。 GTest をインストールする最も簡単な方法は、ソースからインストールすることです。
git clone https://github.com/google/googletest
cd googletest
mkdir build
cd build
cmake -DBUILD_SHARED_LIBS=ON ..
make
sudo make install
インストールが成功したら、使用できるようになります ./tests/scripts/task_cpp_unittest.sh
C++ テストを構築して起動するか、直接使用します。 make cpptest
建てる。
このチュートリアル – TVM インストールのパート 1 はこれで終わりです。パート 2 では、他の 2 つの TVM インストール方法、Docker イメージのインストールと NNPACK Contrib のインストールについて引き続き説明します。
皆様、引き続き注目してください tvm.hyper.ai、TVM中国語の最高の進歩を理解してください!
- 以上 -