OpenVINO IR への変換#

OpenVINO IR は、OpenVINO で使用される独自のモデル形式であり、通常はサポートされているフレームワークのモデルを変換することによって取得されます:

  • convert_model() メソッド:

    これは PyTorch モデルに適用できる唯一の方法です。

    サポートされる形式のリスト:
    • Python オブジェクト:

      • torch.nn.Module

      • torch.jit.ScriptModule

      • torch.jit.ScriptFunction

      • torch.export.ExportedProgram

    import torchvision 
    import openvino as ov 
    
    model = torchvision.models.resnet50(weights='DEFAULT') 
    ov_model = ov.convert_model(model) 
    compiled_model = ov.compile_model(ov_model, "AUTO")

    変換の詳細については、このトピックに関するガイドチュートリアルを参照してください。

  • convert_model() メソッド:

    convert_model() メソッドではより詳細な制御が可能になり、ov.Model の追加調整ができるようになります。read_model() メソッドと compile_model() メソッドは利便性がありますが、そのような機能はありません。ov.Model を使用すると、最適化、コンパイル、推論の実行を選択するか、後で使用するためファイルをシリアル化するかを選択できます。

    サポートされる形式のリスト:
    • ファイル:

      • SavedModel - <SAVED_MODEL_DIRECTORY> または <INPUT_MODEL>.pb

      • Checkpoint - <INFERENCE_GRAPH>.pb または <INFERENCE_GRAPH>.pbtxt

      • MetaGraph - <INPUT_META_GRAPH>.meta

    • Python オブジェクト:

      • tf.keras.Model

      • tf.keras.layers.Layer

      • tf.Module

      • tf.compat.v1.Graph

      • tf.compat.v1.GraphDef

      • tf.function

      • tf.compat.v1.session

      • tf.train.checkpoint

    import openvino as ov 
    
    ov_model = ov.convert_model("saved_model.pb") 
    compiled_model = ov.compile_model(ov_model, "AUTO")

    変換の詳細については、このトピックに関するガイドチュートリアルを参照してください。

  • read_model()compile_model() メソッド:

    サポートされる形式のリスト:
    • ファイル:

      • SavedModel - <SAVED_MODEL_DIRECTORY> または <INPUT_MODEL>.pb

      • Checkpoint - <INFERENCE_GRAPH>.pb または <INFERENCE_GRAPH>.pbtxt

      • MetaGraph - <INPUT_META_GRAPH>.meta

    import openvino as ov 
    
    core = ov.Core() 
    ov_model = core.read_model("saved_model.pb") 
    compiled_model = ov.compile_model(ov_model, "AUTO")

    推論を実行するガイドについては、OpenVINO™ をアプリケーションと統合するを参照してください。

  • compile_model() メソッド:

    サポートされる形式のリスト:
    • ファイル:

      • SavedModel - <SAVED_MODEL_DIRECTORY> または <INPUT_MODEL>.pb

      • Checkpoint - <INFERENCE_GRAPH>.pb または <INFERENCE_GRAPH>.pbtxt

      • MetaGraph - <INPUT_META_GRAPH>.meta

    ov::CompiledModel compiled_model = core.compile_model("saved_model.pb", "AUTO");

    推論を実行するガイドについては、OpenVINO™ をアプリケーションと統合するを参照してください。

  • compile_model() メソッド:

    サポートされる形式のリスト:
    • ファイル:

      • SavedModel - <SAVED_MODEL_DIRECTORY> または <INPUT_MODEL>.pb

      • Checkpoint - <INFERENCE_GRAPH>.pb または <INFERENCE_GRAPH>.pbtxt

      • MetaGraph - <INPUT_META_GRAPH>.meta

    ov_compiled_model_t* compiled_model = NULL; 
    ov_core_compile_model_from_file(core, "saved_model.pb", "AUTO", 0, &compiled_model);

    推論を実行するガイドについては、OpenVINO™ をアプリケーションと統合するを参照してください。

ovc コマンドライン・ツールを使用して、モデルを IR に変換できます。取得された IR は、read_model() によって読み取られ、推論できます。

ovc <INPUT_MODEL>.pb

変換の詳細についてはこちらを参照してください。

  • convert_model() メソッド:

    convert_model() メソッドではより詳細な制御が可能になり、ov.Model の追加調整ができるようになります。read_model() メソッドと compile_model() メソッドは利便性がありますが、そのような機能はありません。ov.Model を使用すると、最適化、コンパイル、推論の実行を選択するか、後で使用するためファイルをシリアル化するかを選択できます。

    サポートされる形式のリスト:
    • ファイル:

      • <INPUT_MODEL>.tflite

    import openvino as ov 
    
    ov_model = ov.convert_model("<INPUT_MODEL>.tflite") 
    compiled_model = ov.compile_model(ov_model, "AUTO")

    変換の詳細については、このトピックに関するガイドチュートリアルを参照してください。

  • read_model() メソッド:

    サポートされる形式のリスト:
    • ファイル:

      • <INPUT_MODEL>.tflite

    import openvino as ov 
    
    core = ov.Core() 
    ov_model = core.read_model("<INPUT_MODEL>.tflite") 
    compiled_model = ov.compile_model(ov_model, "AUTO")
  • compile_model() メソッド:

    サポートされる形式のリスト:
    • ファイル:

      • <INPUT_MODEL>.tflite

    import openvino as ov 
    
    compiled_model = ov.compile_model("<INPUT_MODEL>.tflite", "AUTO")

    推論を実行するガイドについては、OpenVINO™ をアプリケーションと統合するを参照してください。

  • compile_model() メソッド:

    サポートされる形式のリスト:
    • ファイル:

      • <INPUT_MODEL>.tflite

    ov::CompiledModel compiled_model = core.compile_model("<INPUT_MODEL>.tflite", "AUTO");

    推論を実行するガイドについては、OpenVINO™ をアプリケーションと統合するを参照してください。

  • compile_model() メソッド:

    サポートされる形式のリスト:
    • ファイル:

      • <INPUT_MODEL>.tflite

    ov_compiled_model_t* compiled_model = NULL; 
    ov_core_compile_model_from_file(core, "<INPUT_MODEL>.tflite", "AUTO", 0, &compiled_model);

    推論を実行するガイドについては、OpenVINO™ をアプリケーションと統合するを参照してください。

  • convert_model() メソッド:

    mo コマンドライン・ツールを使用して、モデルを IR に変換できます。取得された IR は、read_model() によって読み取られ、推論できます。

    サポートされる形式のリスト:
    • ファイル:

      • <INPUT_MODEL>.tflite

    ovc <INPUT_MODEL>.tflite

    変換の詳細についてはこちらを参照してください。

  • convert_model() メソッド:

    convert_model() メソッドではより詳細な制御が可能になり、ov.Model の追加調整ができるようになります。read_model() メソッドと compile_model() メソッドは利便性がありますが、そのような機能はありません。ov.Model を使用すると、最適化、コンパイル、推論の実行を選択するか、後で使用するためファイルをシリアル化するかを選択できます。

    サポートされる形式のリスト:
    • ファイル:

      • <INPUT_MODEL>.onnx

    import openvino as ov 
    
    ov_model = ov.convert_model("<INPUT_MODEL>.onnx") 
    compiled_model = ov.compile_model(ov_model, "AUTO")

    変換の詳細については、このトピックに関するガイドチュートリアルを参照してください。

  • read_model() メソッド:

    サポートされる形式のリスト:
    • ファイル:

      • <INPUT_MODEL>.onnx

    import openvino as ov 
    
    core = ov.Core() 
    ov_model = core.read_model("<INPUT_MODEL>.onnx") 
    compiled_model = ov.compile_model(ov_model, "AUTO")
  • compile_model() メソッド:

    サポートされる形式のリスト:
    • ファイル:

      • <INPUT_MODEL>.onnx

    import openvino as ov 
    
    compiled_model = ov.compile_model("<INPUT_MODEL>.onnx", "AUTO")

    推論を実行するガイドについては、OpenVINO™ をアプリケーションと統合するを参照してください。

  • compile_model() メソッド:

    サポートされる形式のリスト:
    • ファイル:

      • <INPUT_MODEL>.onnx

    ov::CompiledModel compiled_model = core.compile_model("<INPUT_MODEL>.onnx", "AUTO");

    推論を実行するガイドについては、OpenVINO™ をアプリケーションと統合するを参照してください。

  • compile_model() メソッド:

    サポートされる形式のリスト:
    • ファイル:

      • <INPUT_MODEL>.onnx

    ov_compiled_model_t* compiled_model = NULL; 
    ov_core_compile_model_from_file(core, "<INPUT_MODEL>.onnx", "AUTO", 0, &compiled_model);

    変換の詳細についてはこちらを参照してください

  • convert_model() メソッド:

    mo コマンドライン・ツールを使用して、モデルを IR に変換できます。取得された IR は、read_model() によって読み取られ、推論できます。

    サポートされる形式のリスト:
    • ファイル:

      • <INPUT_MODEL>.onnx

    ovc <INPUT_MODEL>.onnx

    変換の詳細についてはこちらを参照してください

  • convert_model() メソッド:

    convert_model() メソッドではより詳細な制御が可能になり、ov.Model の追加調整ができるようになります。read_model() メソッドと compile_model() メソッドは利便性がありますが、そのような機能はありません。ov.Model を使用すると、最適化、コンパイル、推論の実行を選択するか、後で使用するためファイルをシリアル化するかを選択できます。

    サポートされる形式のリスト:
    • ファイル:

      • <INPUT_MODEL>.pdmodel

    • Python オブジェクト:

      • paddle.hapi.model.Model

      • paddle.fluid.dygraph.layers.Layer

      • paddle.fluid.executor.Executor

    import openvino as ov 
    
    ov_model = ov.convert_model("<INPUT_MODEL>.pdmodel") 
    compiled_model = ov.compile_model(ov_model, "AUTO")

    変換の詳細については、このトピックに関するガイドチュートリアルを参照してください。

  • read_model() メソッド:

    サポートされる形式のリスト:
    • ファイル:

      • <INPUT_MODEL>.pdmodel

    import openvino as ov 
    
    core = ov.Core() 
    ov_model = core.read_model("<INPUT_MODEL>.pdmodel") 
    compiled_model = ov.compile_model(ov_model, "AUTO")
  • compile_model() メソッド:

    サポートされる形式のリスト:
    • ファイル:

      • <INPUT_MODEL>.pdmodel

    import openvino as ov 
    
    compiled_model = ov.compile_model("<INPUT_MODEL>.pdmodel", "AUTO")

    推論を実行するガイドについては、OpenVINO™ をアプリケーションと統合するを参照してください。

  • compile_model() メソッド:

    サポートされる形式のリスト:
    • ファイル:

      • <INPUT_MODEL>.pdmodel

    ov::CompiledModel compiled_model = core.compile_model("<INPUT_MODEL>.pdmodel", "AUTO");

    推論を実行するガイドについては、OpenVINO™ をアプリケーションと統合するを参照してください。

  • compile_model() メソッド:

    サポートされる形式のリスト:
    • ファイル:

      • <INPUT_MODEL>.pdmodel

    ov_compiled_model_t* compiled_model = NULL; 
    ov_core_compile_model_from_file(core, "<INPUT_MODEL>.pdmodel", "AUTO", 0, &compiled_model);

    推論を実行するガイドについては、OpenVINO™ をアプリケーションと統合するを参照してください。

  • convert_model() メソッド:

    mo コマンドライン・ツールを使用して、モデルを IR に変換できます。取得された IR は、read_model() によって読み取られ、推論できます。

    サポートされる形式のリスト:
    • ファイル:

      • <INPUT_MODEL>.pdmodel

    ovc <INPUT_MODEL>.pdmodel

    変換の詳細についてはこちらを参照してください。

これらは基本的な例です。詳細な変換手順については、 PyTorchONNXTensorFlowTensorFlow LitePaddlePaddle の個別のガイドを参照してください。

変換パラメーターでサポートされているすべての変換オプションのリストを確認できます。

IR 変換の利点#

IR に保存して最初の推論のレイテンシーを改善
最初の推論のレイテンシーが重要である場合、フレームワーク・モデルをロードするたびに変換するのではなく (サイズによっては時間がかかる場合があります)、一度のみ行うほうが良いでしょう。これには、save_model を使用してモデルを OpenVINO IR として保存し、必要に応じて read_model を使用してロードします。これにより、変換ステップを回避できるため、モデルが最初の推論を行う時間を短縮できます。
FP16 で IR に保存してスペースを節約
FP16 を使用するとサイズが約 50% 削減されるため、ストレージスペースを節約でき、Llama2-7B などの大型モデルでは特に有益です。
推論コード内の大きな依存関係を回避するために IR に保存
TensorFlow や PyTorch などのフレームワークは、推論を実行するアプリケーションにとって大きな依存関係になる傾向があります (数ギガバイト)。モデルを OpenVINO IR に変換すると、OpenVINO は追加コンポーネントなしで推論を実行できるため、この依存関係がなくなります。この方法では、ディスク容量が大幅に削減されると同時に、モデルをソース・フレームワークにロードしてから変換してコンパイルするよりも、ロードとコンパイルに必要な実行時メモリーが少なくなります。

以下は、OpenVINO IR を活用してモデルを一度保存​​し、それを複数回実行する方法の例です:

# Run once 

import openvino as ov 
import tensorflow as tf 

# 1. TF コードで作成したモデルを変換 
model = tf.keras.applications.resnet50.ResNet50(weights="imagenet") 
ov_model = ov.convert_model(model) 

# 2. モデルを OpenVINO IR として保存 
ov.save_model(ov_model, 'model.xml', compress_to_fp16=True) # enabled by default 

# 必要に応じて繰り返す 
import openvino as ov 

# 3. モデルをファイルからロード 
core = ov.Core() 
ov_model = core.read_model("model.xml") 

# 4. モデルをメモリーからコンパイル 
compiled_model = ov.compile_model(ov_model)

関連情報#