OpenVINO™ ランチャーの構成方法

OpenVINO™ ランチャーは、精度チェッカーツール内でモデルを容易に起動するためにサポートされているラッパーの 1 つです。このランチャーは、推論バックエンドとして API 2.0 をサポートする OpenVINO™ を使用し、OpenVINO™ でサポートされる形式のネットワークの実行を受け入れます。

注: OpenVINO™ が利用可能な場合、ツールはデフォルトで API 2.0 を使用して実行します。API 1.0 でモデルを実行するには、特定の --use_new_api False パラメーターが必要です。API 1.0 用の精度チェッカーランチャーのセットアップ方法と構成の移行手順の詳細については、このセクションを参照してください。

OpenVINO™ ランチャーを有効にするには、構成ファイルの launchers セクションに framework: openvino を追加し、次のパラメーターを指定する必要があります。

  • device - 推論に使用するデバイスを指定します。サポートされるデバイス: CPUGPUGNAHETERO:target_device,fallback_device としてのヘテロジニアス・プラグイン、および MULTI:target_device1,target_device2 としてのマルチデバイス・プラグイン。

    -td, --target devices コマンドライン引数で 1 つ以上のデバイスを指定できます。ターゲットデバイスはコマンドラインから選択されます (複数のデバイスが指定された場合、指定されたすべてのデバイスで 1 つずつ評価されます)。

  • model - トポロジーまたはコンパイルされた実行可能ネットワークのモデルへのパス。また、ディレクトリー内のモデルを自動検索するためにモデルを含むディレクトリーへのパスを指定し、--model_type を指定してモデルの検出を容易にできます。サポートされるモデルタイプ: xmlonnxpaddletfblob

  • weights - トポロジーの重みを含む bin ファイルへのパス (オプション、bin ファイルがモデル xml と同じディレクトリーに保存されている場合、またはコンパイルされたブロブを使用している場合は、引数を省略できます)。

  • adapter - 生の出力がデータセットの表現にどのように変換されるかという問題に対処するため、一部のアダプターはフレームワークに固有であることがあります。アダプターの使用方法の詳細な説明は、こちらでご覧いただけます。

ランチャーは、モデルの中間表現 (IR) から使用されるバッチサイズを認識します。推論にバッチを使用したい場合は、必要なバッチをモデルに提供します

  • allow_reshape_input - パラメーターを使用すると、入力レイヤーをデータ形状に再形成できます (デフォルト値は False)。

  • reset_memory_state - パラメーターを使用すると、推論後に内部推論要求のメモリー状態をリセットできます。リカレント・ネットワークに不可欠な状態制御。(オプション、デフォルトは False)。

デバイス構成には、推論エンジンに設定する必要があるデバイス固有のオプションが含まれています。デバイス固有のフラグを設定するには、-dc または --device_config コマンドライン・オプションを使用して、YML ファイルへのパスを指定するか、launchers セクションでキー device_config を使用して精度チェッカー構成ファイルにデバイス構成を直接指定できます。デバイス構成は、次の 2 つのタイプのいずれかの辞書として表現する必要があります。

  1. キーはプラグイン設定キー、値はそれぞれその値です。このようにして、設定は現在実行中のデバイスに適用されます。

  2. キーはサポートされてるデバイス、値は各デバイスのプラグイン設定です。プラグイン設定は辞書として表されます。キーはプラグイン固有の設定キー、値はそれぞれその値です。

サポートされている各デバイスには、独自の構成パラメーター・のセットがあり、推論エンジン開発ガイドのデバイスページで見つけることができます。

注: ネイティブ bfloat16 サポートを備えたプラットフォーム上の OpenVINO 2020.4 以降、モデルはデフォルトでこの精度で実行されます。この動作を無効にするには、次の構成で device_config を使用します。

CPU:
   ENFORCE_BF16: "NO"

デバイス構成の例は、<omz_dir>/tools/accuracy_checker/sample/disable_bfloat16_device_config.yml にあります。

さらに、モデルを async_mode で起動し、このオプションを有効にして、評価プロセスで使用される推論要求の数 (num_requests) を指定できます。デフォルトでは、num_requests が指定されていないか、値 AUTO が使用されている場合、特定のデバイスに対する番号リクエストの自動割り当てが実行されます。マルチデバイス構成の場合、非同期モードが常に使用されます。各デバイス番号の要求をデバイス仕様の一部として指定できます: MULTI:device_1(num_req_1),device_2(num_req_2)、または num_requests 構成セクション (この場合、カンマ区切った整数のリスト、またはすべてのデバイスの番号要求が等しい場合は 1 つの値)。

注: すべてのモデルが非同期実行をサポートしているわけではありません。評価を非同期で実行できない場合、推論は同期に切り替えられます。

config でモデル入力を指定

モデルに複数の入力がある場合、inputs キーを使用してランチャー設定セクションに入力レイヤーのリストを提供する必要があります。各入力の説明には次の情報が含まれている必要があります。

  • name - ネットワーク内のレイヤー名を入力します

  • type - 入力値のタイプに応じて、入力ポリシーに影響します。次のオプションが利用できます。

    • CONST_INPUT - 入力は、構成で提供される定数で埋められます。value の提供も必要です。

    • IMAGE_INFO - 入力形状の情報をレイヤーに設定する特定のキー (高速 RCNN ベースのトポロジーで使用)。value は実行時に計算されるため、指定の必要はありません。形式値は [H, W, S] 形式の N 要素からなるリストです。N はバッチサイズ、H - 元の画像の高さ、W - 元の画像の幅、S - 元の画像のスケール (デフォルトは 1) です。

    • ORIG_IMAGE_INFO - 前処理前の元の画像サイズの情報を設定する特定のキー。

    • PROCESSED_IMAGE_INFO - 前処理後の入力サイズの情報を設定する特定のキー。

    • SCALE_FACTOR - 画像スケール係数の情報を設定する特定のキーは [SCALE_Y, SCALE_X] として定義されます。ここで、SCALE_Y = <resized_image_height>/<original_image_heightSCALE_X = <resized_image_width> / <original_image_width>

    • INPUT - メイン・データ・ストリームのネットワーク入力 (画像など)。複数のデータ入力がある場合、特定の value でどのデータを提供するかを指定する値として識別子の正規表現を提供する必要があります。

    • LSTM_INPUT - 前の反復からの非表示状態によって満たされる必要がある入力。非表示状態レイヤーの名前は、value パラメーターを介して指定する必要があります。

    • IGNORE_INPUT - 評価中は空のままにしておく必要がある入力。

    オプションで、入力の shape を決定できます (デフォルトでは、OpenVINO™ ランチャーはネットワークから提供された情報を使用します。このオプションにより、デフォルトをオーバーライドできます。動的形状がサポートされていないデバイス上で動的入力形状を使用して ONNX* モデルを実行する場合に必要です)、モデルが非標準のデータ layout でトレーニングされた場合のレイアウト (OpenVINO™ ランチャーのデフォルトレイアウトは NCHW)、および精度 (サポートされる精度: FP32 - float、FP16 - signed shot、U8 - unsigned char、U16 - unsigned short int、I8 - signed char、I16 - short int、I32 - int、I64 - long int)。

構成の例

OpenVINO™ ランチャーの構成例:

launchers:
  - framework: openvino
    device: CPU
    model: path_to_model/ensenet-121-tf.xml
    weights: path_to_weights/ensenet-121-tf.bin
    adapter: classification

[非推奨] OpenVINO™ API 1.0 ランチャーの構成方法

OpenVINO™ API 1.0 ランチャーは、精度チェッカーツール内でモデルを容易に起動するためにサポートされているラッパーの 1 つです。このランチャーは、推論バックエンドとして OpenVINO™ API 1.0 を使用し、OpenVINO™ でサポートされる形式のネットワークの実行を受け入れます。注: OpenVINO™ 2022.1 以降、このランチャーのベースとして使用される API は非推奨になりました OpenVINO™ API 1.0 ランチャーを有効にするには、構成ファイルのランチャーセクションに framework: dlsdk を追加し、次のパラメーターを指定する必要があります。

  • device - 推論に使用するデバイスを指定します。サポートされるデバイス: GNAMYRIADHDDLHETERO:target_device,fallback_device としてのヘテロジニアス・プラグイン、および MULTI:target_device1,target_device2 としてのマルチデバイス・プラグイン。

    マシンに複数のデバイスがある場合は、次のような方法で特定のデバイス ID を指定できます: <DEVICE>.<DEVICE_ID> (例: MYRIAD.1.2-ma2480)

    -td, --target devices コマンドライン引数で 1 つ以上のデバイスを指定できます。ターゲットデバイスはコマンドラインから選択されます (複数のデバイスが指定された場合、指定されたすべてのデバイスで 1 つずつ評価されます)。

  • model - トポロジーまたはコンパイルされた実行可能ネットワークのモデルへのパス。また、ディレクトリー内のモデルを自動検索するためにモデルを含むディレクトリーへのパスを指定し、--model_type を指定してモデルの検出を容易にできます。サポートされるモデルタイプ: xmlonnxblob

  • weights - トポロジーの重みを含む bin ファイルへのパス (オプション、bin ファイルがモデル xml と同じディレクトリーに保存されている場合、またはコンパイルされたブロブを使用している場合は、引数を省略できます)。

  • adapter - 生の出力がデータセットの表現にどのように変換されるかという問題に対処するため、一部のアダプターはフレームワークに固有であることがあります。アダプターの使用方法の詳細な説明は、こちらでご覧いただけます。

ランチャーは、モデルの中間表現 (IR) から使用されるバッチサイズを認識します。推論にバッチを使用する場合、必要なバッチを含むモデルを提供してください。

  • allow_reshape_input - パラメーターを使用すると、入力レイヤーをデータ形状に再形成できます (デフォルト値は False)。

  • reset_memory_state - パラメーターを使用すると、推論後に内部推論要求のメモリー状態をリセットできます。リカレント・ネットワークに不可欠な状態制御。(オプション、デフォルトは False)。

デバイス構成には、推論エンジンに設定する必要があるデバイス固有のオプションが含まれています。デバイス固有のフラグを設定するには、-dc または --device_config コマンドライン・オプションを使用して、YML ファイルへのパスを指定するか、launchers セクションでキー device_config を使用して精度チェッカー構成ファイルにデバイス構成を直接指定できます。デバイス構成は、次の 2 つのタイプのいずれかの辞書として表現する必要があります。

  1. キーはプラグイン設定キー、値はそれぞれその値です。このようにして、設定は現在実行中のデバイスに適用されます。

  2. キーはサポートされてるデバイス、値は各デバイスのプラグイン設定です。プラグイン設定は辞書として表されます。キーはプラグイン固有の設定キー、値はそれぞれその値です。

サポートされている各デバイスには、独自の構成パラメーター・のセットがあり、推論エンジン開発ガイドのデバイスページで見つけることができます。

注: ネイティブ bfloat16 サポートを備えたプラットフォーム上の OpenVINO 2020.4 以降、モデルはデフォルトでこの精度で実行されます。この動作を無効にするには、次の構成で device_config を使用します。

CPU:
   ENFORCE_BF16: "NO"

デバイス構成の例は、<omz_dir>/tools/accuracy_checker/sample/disable_bfloat16_device_config.yml にあります。

さらに、モデルを async_mode で起動し、このオプションを有効にして、評価プロセスで使用される推論要求の数 (num_requests) を指定できます。デフォルトでは、num_requests が指定されていないか、値 AUTO が使用されている場合、特定のデバイスに対する番号リクエストの自動割り当てが実行されます。マルチデバイス構成の場合、非同期モードが常に使用されます。各デバイス番号の要求をデバイス仕様の一部として指定できます: MULTI:device_1(num_req_1),device_2(num_req_2)、または num_requests 構成セクション (この場合、カンマ区切った整数のリスト、またはすべてのデバイスの番号要求が等しい場合は 1 つの値)。

注: すべてのモデルが非同期実行をサポートしているわけではありません。評価を非同期で実行できない場合、推論は同期に切り替えられます。

config でモデル入力を指定

モデルに複数の入力がある場合、inputs キーを使用してランチャー設定セクションに入力レイヤーのリストを提供する必要があります。各入力の説明には次の情報が含まれている必要があります。

  • name - ネットワーク内のレイヤー名を入力します

  • type - 入力値のタイプに応じて、入力ポリシーに影響します。次のオプションが利用できます。

    • CONST_INPUT - 入力は、構成で提供される定数で埋められます。value の提供も必要です。

    • IMAGE_INFO - 入力形状の情報をレイヤーに設定する特定のキー (高速 RCNN ベースのトポロジーで使用)。value は実行時に計算されるため、指定の必要はありません。形式値は [H, W, S] 形式の N 要素からなるリストです。N はバッチサイズ、H - 元の画像の高さ、W - 元の画像の幅、S - 元の画像のスケール (デフォルトは 1) です。

    • ORIG_IMAGE_INFO - 前処理前の元の画像サイズの情報を設定する特定のキー。

    • PROCESSED_IMAGE_INFO - 前処理後の入力サイズの情報を設定する特定のキー。

    • SCALE_FACTOR - 画像スケール係数の情報を設定する特定のキーは [SCALE_Y, SCALE_X] として定義されます。ここで、SCALE_Y = <resized_image_height>/<original_image_heightSCALE_X = <resized_image_width> / <original_image_width>

    • INPUT - メイン・データ・ストリームのネットワーク入力 (画像など)。複数のデータ入力がある場合、特定の value でどのデータを提供するかを指定する値として識別子の正規表現を提供する必要があります。

    • LSTM_INPUT - 前の反復からの非表示状態によって満たされる必要がある入力。非表示状態レイヤーの名前は、value パラメーターを介して指定する必要があります。

    • IGNORE_INPUT - 評価中は空のままにしておく必要がある入力。

    オプションで、入力の形状を決定できます (デフォルトでは、OpenVINO™ ランチャーはネットワークから提供された情報を使用します。このオプションにより、デフォルトをオーバーライドできます。動的形状がサポートされていないデバイス上で動的入力形状を使用して ONNX* モデルを実行する場合に必要です)、モデルが非標準のデータレイアウトでトレーニングされた場合のレイアウト (OpenVINO™ ランチャーのデフォルトレイアウトは NCHW)、および精度 (サポートされる精度: FP32 - float、FP16 - signed shot、U8 - unsigned char、U16 - unsigned short int、I8 - signed char、I16 - short int、I32 - int、I64 - long int)。

構成の例

OpenVINO™ ランチャーの構成例:

launchers:
  - framework: dlsdk
    device: CPU
    model: path_to_model/ensenet-121-tf.xml
    weights: path_to_weights/ensenet-121-tf.bin
    adapter: classification

精度チェッカーの構成を OpenVINO™ API 1.0 から 2.0 に移行

openvino ランチャーと dlsdk ランチャーはどちらも、OpenVINO™ IR v10 および OpenVINO™ IR v11 形式の実行モデルをサポートしていますが、場合によっては、正常に起動するため API 1.0 で使用されていた構成を調整する必要があります。

  1. adapter 内の出力名が指定されている場合は、予期されるランチャーに従って出力名を調整します。

  2. モデルの入力レイアウトが API ごとに異なっており (例: Tensorflow* で NHWC 入力レイアウトで変換された IR v11 の場合、デフォルトでは API 2.0 で NCHW への変換なし)、それがランチャー設定の入力セクションで指定されている場合 (またはコマンドライン・パラメーター --layout を使用してオーバーライド)。

  3. framework フィールドの変更はオプションで、--use_new_api パラメーターを使用するだけでランチャーを切り替えることができます (これが True に設定されている場合、構成で openvino ランチャーの追加構成が提供されていない場合、dlsdkopenvino に切り替えられます。パラメーターを False に設定すると、逆の動作になります)。コマンドライン引数 --target_frameworks(-tf) の動作も、フィルタリング構成のロジックに合わせて調整されます。