ORT Mobileモデルエクスポートヘルパー
ORT Mobileモデルエクスポートヘルパー
Section titled “ORT Mobileモデルエクスポートヘルパー”ORT Mobileでの使用のためにモデルをエクスポートおよび分析するために利用できるさまざまなツールがあります。
ORT Mobileモデル使用可能性チェッカー
Section titled “ORT Mobileモデル使用可能性チェッカー”モデル使用可能性チェッカーは、モデルがORTモバイルでどれだけうまく動作する可能性があるかについての情報を提供します。これには、AndroidでNNAPIを使用すること、iOSでCoreMLを使用することの適合性が含まれます。また、モデルを更新してORT Mobileでより良く動作するようにするために、特定のツールを実行することを推奨することもできます。
詳細については、こちらを参照してください。
ONNXモデルopsetアップデーター
Section titled “ONNXモデルopsetアップデーター”カスタムビルドを行う場合、カスタムビルドがより少ない数のopsetをサポートしてバイナリサイズを削減できるように、ターゲットモデルを同じONNX opsetまたはopsetに更新することをお勧めします。 ほとんどのONNXモデルは、このツールを使用して新しいONNX opsetに更新できます。
使用方法:
python -m onnxruntime.tools.update_onnx_opset --helpusage: update_onnx_opset.py:update_onnx_opset_helper [-h] [--opset OPSET] input_model output_model
モデルのONNX opsetを更新します。新しいopsetは既存のものよりも後である必要があります。指定されていない場合は、opset 15に更新されます。
positional arguments: input_model 更新するONNXモデルへのパスを提供します。 output_model 更新されたONNXモデルを書き込むパスを提供します。
optional arguments: -h, --help このヘルプメッセージを表示して終了します --opset OPSET 更新するONNX opset。使用例:
python -m onnxruntime.tools.update_onnx_opset --opset 15 model.onnx model.opset15.onnxONNXモデル動的形状フィクサー
Section titled “ONNXモデル動的形状フィクサー”モデルがNNAPIまたはCoreMLで使用される可能性がある場合、動的な次元サイズを特定の値に設定することで、入力形状を「固定」にする必要がある場合があります。
これを行う方法については、onnxruntime.tools.make_dynamic_shape_fixedのドキュメントを参照してください。
QDQ形式モデルヘルパー
Section titled “QDQ形式モデルヘルパー”QDQ形式モデルのソースに応じて、ORTで最適なパフォーマンスを確保するために、その側面を最適化する必要がある場合があります。 onnxruntime.tools.qdq_helpers.optimize_qdq_modelヘルパーを使用してこれを行うことができます。
使用方法:
python -m onnxruntime.tools.qdq_helpers.optimize_qdq_model --helpusage: optimize_qdq_model.py [-h] input_model output_model
QDQ形式ONNXモデルを更新して、ONNX Runtimeを使用して実行する際の最適なパフォーマンスを確保します。
positional arguments: input_model 更新するONNXモデルへのパスを提供します。 output_model 更新されたONNXモデルを書き込むパスを提供します。
optional arguments: -h, --help このヘルプメッセージを表示して終了します最適化がない場合、output_modelはinput_modelと同じになり、破棄できることに注意してください。
PyTorchエクスポートヘルパー
Section titled “PyTorchエクスポートヘルパー”PyTorchからtorch.onnx.exportを使用してモデルをエクスポートする場合、モデル入力の名前を指定でき、モデル入力をタプルに正しく組み立てる必要があります。infer_input_infoヘルパーを使用して、PyTorchモデルで使用される入力名を自動的に検出し、torch.onnx.exportで使用するために入力を正しくフォーマットできます。
以下の例では、torchvision mobilenet_v2モデルを実行するために必要な入力を提供します。 返されるinput_namesとinputs_as_tupleは、torch.onnx.export呼び出しで直接使用できます。 これは、モデルに複数の入力があり、またはそれらの入力に辞書などのより複雑なデータ型が含まれる場合に最も有益です。
import torchimport torchvisionfrom onnxruntime import tools
model = torchvision.models.mobilenet_v2(pretrained=True)model.eval()
input0 = torch.zeros((1, 3, 224, 224), dtype=torch.float32)input_names, inputs_as_tuple = tools.pytorch_export_helpers.infer_input_info(model, input0)
# input_namesとinputs_as_tupleはtorch.onnx.exportに直接渡すことができますtorch.onnx.export(model, inputs_as_tuple, "model.onnx", input_names=input_names, ...)