動的入力パラメーター¶
OpenVINO モデルサーバーのサーバブルは、さまざまなバッチサイズやさまざまな形式のデータを受け入れるように構成できます。動的入力を有効にする方法は、サーバブルの種類に応じて複数あります。
単一モデル:
動的 IR/ONNX モデルによる動的入力形状 - OpenVINO ネイティブの動的形状機能を利用して、任意の形状でデータを送信します。モデルが動的な次元を受け入れる場合、このオプションの使用を検討してください。
バイナリー入力形式の動的入力形状 - データをバイナリー形式 (JPEG または PNG エンコード) で送信するため、モデルサーバーはデータデコード中に入力を調整します。ネットワークが低速である場合、ネットワーク上で転送されるデータ量を最小限に抑え、イメージサイズをエンドポイントで受け入れられるサイズに合わせるため、このオプションを検討してください。
[非推奨] モデルの自動リロードを使用した動的バッチサイズ - 現在設定されているバッチサイズ以外の要求を受信するたびにモデルをリロードするようにモデルサーバーを構成します。要求のバッチサイズが変更される可能性があるが、通常は同じままである場合は、このオプションの使用を検討してください。バッチサイズが異なる各要求は、モデルのリロードによりパフォーマンスの影響を受けます。
[非推奨] 自動モデルリロードを使用した動的形状 - 現在設定形状以外のデータを含む要求をモデルが受信するたびにモデルをリロードするようにモデルサーバーを構成します。要求の形状が変更される可能性があるが、通常は同じままである場合は、このオプションの使用を検討してください。形状が異なる各要求は、モデルのリロードによりパフォーマンスの影響を受けます。
DAG パイプライン:
デマルチプレクサーを使用した動的バッチサイズ - 任意のバッチサイズのデータを分割し、バッチ内の各要素に対して個別に推論を実行する単純なパイプラインを作成します。受信要求にさまざまなバッチサイズが含まれる場合は、このオプションの使用を検討してください。このオプションでは、ベースとなるモデルを再ロードする必要がないため、モデルの再ロードによるパフォーマンスへの影響はありません。
カスタムノードを使用した動的入力形状 - データの前処理を実行し、許容可能な形状のデータをモデルに提供するカスタムノードとモデルを組み合わせて、単純なパイプラインを作成します。推論前に画像のサイズ変更操作を実行して、画像をモデルの形状に合わせたい場合は、このオプションを検討してください。これは精度に影響します。
MediaPipe グラフ:
OpenVINO モデルサーバーは、MediaPipe グラフ入力で処理できるいくつかのデータタイプを受け入れます。入力が動的であるかどうかは、グラフ内で次に何が発生するかによって決まります。グラフへの入力が動的になる可能性は 4 つあります。
グラフの次のノードは、動的入力を受け入れるモデルで推論を実行する
OpenVINOInferenceCalculator
を使用します。このようなノードは、OVTENSOR
プリフィクスで始まるタグを持つ入力ストリームを期待します。グラフの次のノードは、MediaPipe ImageFrame 形式の入力を処理する計算機を使用します。モデルサーバーは、KServe 要求からのデータを、タグが
IMAGE
プリフィクスで始まる入力ストリーム用の MediaPipe ImageFrame に変換します。グラフの次のノードは、生の KServe 要求をデコードできる計算機を使用します。このような場合、モデルサーバーは要求をそのまま計算機に渡すため、動的入力処理を計算機ロジックの一部として実装する必要があります。このようなノードは、
REQUEST
プリフィクスで始まるタグを持つ入力ストリームを期待します。グラフの次のノードは
PythonExecutorCalculator
を使用します。この場合、KServe 要求内のデータは、ユーザーが Python 実行関数の入力引数として利用できるようになります。このようなノードは、OVMS_PY_TENSOR
プリフィクスで始まるタグを持つ入力ストリームを期待します。