ONNX MLIRに付属のdebug.pyを動かす
ONNX MLIRに付属のdebug.pyを動かす手順。
.so
ファイルの実行手順を解析するための事前準備。
前提条件
- 環境
- macOS Catalina 10.15.6
- Python 3.7.5 (pyenvで導入)
- ONNX MLIR commit id dbe0d734b5687e0aa7da911684912163cea07bd2
- ONNX MLIRをビルド済み(ONNX MLIRをビルドする)
- ビルドディレクトリは
$HOME/workspace/onnx-mlir/build
とする
- ビルドディレクトリは
- 作業ディレクトリは
$HOME/workspace/debug_test
とする
環境変数の設定
ONNX_MLIR_HOME
にONNX MLIRのビルドディレクトリを設定する。
export ONNX_MLIR_HOME=$HOME/workspace/onnx-mlir/build
準備
debug.py
を作業ディレクトリにコピーする。
ONNXモデルファイルの例としてmnistをダウンロードする。
cp $HOME/workspace/onnx-mlir/utils/debug.py $HOME/workspace/debug_test/
wget https://github.com/onnx/models/raw/master/vision/classification/mnist/model/mnist-8.onnx
Pythonのonnxパッケージを導入する。
pip3 install onnx
実行
debug.py
を見る限り、ONNX MLIRでONNXモデルファイルを.so
へ変換し、実行するようだ。
python3 debug.py mnist-8.onnx
Temporary directory has been created at /var/folders/mg/v57g_1jj3s52wgwtd61rt8t80000gn/T/tmp1megvpue
%8 = "krnl.getref"(%7, %c0_i64) : (memref<10368xi8>, i64) -> memref<1x8x18x18xf32>
Verifying value of Parameter193_reshape1
Verifying value of Convolution28_Output_0
Verifying value of Plus30_Output_0
Verifying value of ReLU32_Output_0
Verifying value of Pooling66_Output_0
Verifying value of Convolution110_Output_0
Verifying value of Plus112_Output_0
Verifying value of ReLU114_Output_0
Verifying value of Pooling160_Output_0
Verifying value of Pooling160_Output_0_reshape0
Verifying value of Times212_Output_0
Verifying value of Plus214_Output_0
ヘルプ情報
python3 debug.py -h
usage: debug.py [-h] model_path
positional arguments:
model_path Path to the model to debug.
optional arguments:
-h, --help show this help message and exit