概要
- 公式のビルドガイドを見ながら導入しようとしたときにいろいろ躓いたのでメモ
- クロスコンパイルの方はどうにもうまくいかなかったので、Jetson TX2側でやる
cmakeのインストール(>=3.13)、ついでにpip最新化
最近のLinux系なら、たいていパッケージマネージャーに登録されてるpython3-pip
が入ってるはず。
これはこれで便利なんだけど、自分自身が結構な確率でうっかりsudo pip3 install -U pip
とかやらかして環境壊す残念なタイプという………
なので、cmake
を入れ替えるついでにpip
も入れ替えてしまう。
cmake
内蔵のcurl
のバグ?で本体ビルド時に引っかかったので、OS側のを使うようにしておくのが無難っぽい。
sudo apt remove python3-pip cmake -y
wget https://bootstrap.pypa.io/get-pip.py
sudo python3 ./get-pip.py
sudo apt install -y libcurl4-openssl-dev libhdf5-dev
tar zxvf cmake-3.15.4.tar.gz
cd cmake-3.15.4
./bootstrap --system-curl
make -j$(nproc)
sudo make install
cmake --version
依存関係のインストール
入れていないとwheel作成時にエラー
- scipyの最新は手持ちの環境だとエラー、1.2.1だと通った
sudo apt install libprotobuf-dev protobuf-compiler
sudo pip3 install -U cython codecov jinja2 numpy onnx onnxmltools packaging pandas protobuf pytest pytest-cov scikit-learn scipy==1.2.1 six sympy wheel sphinx sphinx_gallery sphinx_modern_theme
ビルド
とりあえず最新バージョンを持ってくる。
うっかりrecursiveつけ忘れると、サードパーティが引っ張られないので哀しいことになる(なった
git clone --recursive https://github.com/microsoft/onnxruntime.git -b v1.0.0 --depth 1
ビルド設定の編集
- L430付近にある
CMAKE_CXX_FLAGS
とCMAKE_C_FLAGS
の-Wall
を削除 - L441近辺にある
HAS_UNUSED_PARAMETER
とHAS_UNUSED_BUT_SET_VARIABLE
を含む行のコメントアウト - L595近辺の
CMAKE_CUDA_FLAGS
でM seriesの箇所をコメントアウトして以下の内容追加
set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -gencode=arch=compute_53,code=sm_53") # Jetson support
Warnでビルドエラーにされるの回避+CUDA有効化するときのJetsonのモデル追加なので、2つめはいらないかもしれない
ビルド実行
- まずは普通にビルド(そしてエラー
./build.sh --config MinSizeRel --parallel --cudnn_home /usr/lib/aarch64-linux-gnu/ --cuda_home /usr/local/cuda/ --use_tensorrt --tensorrt_home /usr/src/tensorrt/
-
ここでしばらくエラーとくんずほぐれつしてた
-
onnxruntimeでTensorRT使う場合は3~4が必要(?
- チケットざっと見る限り、5系はサポートまだっぽい
- https://github.com/onnx/onnx-tensorrt/issues/197
-
仕方ないのでTensorRTを外し、ついでにwheelまで作る
# ./build.sh --config MinSizeRel --parallel --build_wheel --cudnn_home /usr/lib/aarch64-linux-gnu/ --cuda_home /usr/local/cuda/ --use_tensorrt --tensorrt_home /usr/src/tensorrt/
./build.sh --config MinSizeRel --parallel --build_wheel --cudnn_home /usr/lib/aarch64-linux-gnu/ --cuda_home /usr/local/cuda/
- ここまで来るとwheelファイルができてるので、あとはpipでよしなにする
- python3上でお試しimportして、version確認できればOK