ORT Mobile Model Export Helpers

Es gibt eine Reihe von Tools, die beim Exportieren und Analysieren eines Modells für die Verwendung mit ORT Mobile hilfreich sind.

Inhalt

ORT Mobile Model Usability Checker

Der Model Usability Checker liefert Informationen darüber, wie gut ein Modell wahrscheinlich mit ORT Mobile laufen wird, einschließlich der Eignung für die Verwendung von NNAPI unter Android und CoreML unter iOS. Er kann auch empfehlen, spezifische Tools auszuführen, um das Modell zu aktualisieren, damit es besser mit ORT Mobile funktioniert.

Weitere Details finden Sie hier.

ONNX Model Opset Updater

Wenn Sie einen benutzerdefinierten Build erstellen, möchten Sie möglicherweise Ihre Zielmodelle auf denselben ONNX Opset oder Opsetts aktualisieren, damit der benutzerdefinierte Build eine kleinere Anzahl von Opsetts unterstützen kann, um die Binärgröße zu reduzieren. Die meisten ONNX-Modelle können mit diesem Tool auf eine neuere ONNX Opset aktualisiert werden.

Verwendung

python -m onnxruntime.tools.update_onnx_opset --help
usage: update_onnx_opset.py:update_onnx_opset_helper [-h] [--opset OPSET] input_model output_model

Update the ONNX opset of the model. New opset must be later than the existing one. If not specified will update to opset 15.

positional arguments:
  input_model    Provide path to ONNX model to update.
  output_model   Provide path to write updated ONNX model to.

optional arguments:
  -h, --help     show this help message and exit
  --opset OPSET  ONNX opset to update to.

Beispielverwendung


python -m onnxruntime.tools.update_onnx_opset --opset 15 model.onnx model.opset15.onnx

ONNX Model Dynamic Shape Fixer

Wenn das Modell potenziell mit NNAPI oder CoreML verwendet werden kann, muss es möglicherweise die Eingabeformen ‘fixieren’, indem dynamische Dimensionsgrößen auf spezifische Werte gesetzt werden.

Informationen dazu finden Sie in der Dokumentation zu onnxruntime.tools.make_dynamic_shape_fixed.

QDQ Format Model Helpers

Abhängig von der Quelle eines QDQ-Formatmodells kann es notwendig sein, Aspekte davon zu optimieren, um eine optimale Leistung mit ORT zu gewährleisten. Der Helper onnxruntime.tools.qdq_helpers.optimize_qdq_model kann dafür verwendet werden.

Verwendung

python -m onnxruntime.tools.qdq_helpers.optimize_qdq_model --help
usage: optimize_qdq_model.py [-h] input_model output_model

Update a QDQ format ONNX model to ensure optimal performance when executed using ONNX Runtime.

positional arguments:
  input_model   Provide path to ONNX model to update.
  output_model  Provide path to write updated ONNX model to.

optional arguments:
  -h, --help    show this help message and exit

Beachten Sie, dass, wenn keine Optimierungen vorgenommen werden, das output_model dasselbe wie das input_model ist und verworfen werden kann.

PyTorch Export Helpers

Beim Exportieren eines Modells aus PyTorch mit torch.onnx.export können die Namen der Modelleingaben angegeben werden und die Modelleingaben müssen korrekt zu einem Tupel zusammengestellt werden. Der Helper infer_input_info kann verwendet werden, um die von dem PyTorch-Modell verwendeten Eingabenamen automatisch zu ermitteln und die Eingaben für die Verwendung mit torch.onnx.export korrekt zu formatieren.

Im folgenden Beispiel geben wir die notwendigen Eingaben an, um das torchvision mobilenet_v2-Modell auszuführen. Die zurückgegebenen input_names und inputs_as_tuple können direkt in den torch.onnx.export-Aufruf verwendet werden. Dies ist am vorteilhaftesten, wenn das Modell mehrere Eingaben hat und/oder wenn diese Eingaben komplexere Datentypen wie Dictionaries beinhalten.

import torch
import torchvision
from 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 and inputs_as_tuple can be directly passed to torch.onnx.export
torch.onnx.export(model, inputs_as_tuple, "model.onnx", input_names=input_names, ...)