TensorFlow サービングと互換性のある RESTful API
はじめに
gRPC API に加えて、OpenVINO™ モデルサーバーは TensorFlow Serving 互換 REST API のドキュメントにある RESTful API もサポートします。要求の行形式と列形式の両方がこれらの API に実装されています。REST API は、クライアント側の Python 依存関係の数を減らし、アプリケーション・コードを簡素化することを目的とする場合に推奨します。
このドキュメントでは、次の API について説明します:
注: Predict、GetModelMetadata、および GetModelStatus 関数呼び出しの実装は利用可能です。これらは最も一般的な関数呼び出しであり、ほとんどの使用シナリオに対応する必要があります。
モデルステータス API
説明
提供されているモデルのステータス情報を取得します。
URL
GET http://${REST_URL}:${REST_PORT}/v1/models/${MODEL_NAME}/versions/${MODEL_VERSION}
TensorFlow サービングと互換性のある RESTful API — OpenVINO™ ドキュメントCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboard — Version(wp-content)
注: /versions/${MODEL_VERSION} のインクルードはオプションです。省略した場合は、すべてのバージョンのステータスが返されます。
応答形式
成功すると、次の形式の JSON が返されます:
{
"model_version_status" :[
{
"version" : <model versio n >|<s tr i n g> ,
"state" : <model s tate >|<s tr i n g> ,
"status" :
{ "error_code" : <error code>|<s tr i n g> ,
"error_message" : <error message>|<s tr i n g>
}
}
]
}
TensorFlow サービングと互換性のある RESTful API — OpenVINO™ ドキュメントCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboard — Version(wp-content)
使用例
$ curl http://localhost:8001/v1/models/person-detection/versions/1
TensorFlow サービングと互換性のある RESTful API — OpenVINO™ ドキュメントCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboard — Version(wp-content)
{
'model_versio n _s tatus ' :[
{
'versio n ' : ' 1 ' ,
's tate ' : 'AVAILABLE' ,
's tatus ' : {
'error_code' : 'OK' ,
'error_message' : '’
}
}
]
}
TensorFlow サービングと互換性のある RESTful API — OpenVINO™ ドキュメントCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboard — Version(wp-content)
モデルのステータス取得 API の使用法 をご覧ください。
予測 API
説明
読み込まれたモデルまたは DAG を使用して推論を実行するエンドポイントです。
URL
POST http://${REST_URL}:${REST_PORT}/v1/models/${MODEL_NAME}/versions/${MODEL_VERSION}:predict
TensorFlow サービングと互換性のある RESTful API — OpenVINO™ ドキュメントCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboard — Version(wp-content)
要求ヘッダー
{
// (オプション) 使用するサービング署名
// 指定されていない場合はデフォルトのサービング署名が使用されます。
"signature_name" : <s tr i n g> ,
// 行形式 ("インスタンス") または列形式 ("入力") でテンソルを入力します。
// リクエストにはいずれか一方を含めることができますが、両方を含めることはできません。
"instances" : <value>|<( neste d)lis t >|<lis t - o f - objec ts >
"inputs" : <value>|<( neste d)lis t >|<objec t >
}
TensorFlow サービングと互換性のある RESTful API — OpenVINO™ ドキュメントCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboard — Version(wp-content)
詳細については、行形式で入力テンソルを指定する方法 と列形式で入力テンソルを指定する方法 を参照してください。
応答
行形式 の要求には、次のような形式の応答が含まれます:
{
"predictions" : <value>|<( neste d)lis t >|<lis t - o f - objec ts >
}
TensorFlow サービングと互換性のある RESTful API — OpenVINO™ ドキュメントCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboard — Version(wp-content)
列形式 の要求には、次のような形式の応答が含まれます:
{
"outputs" : <value>|<( neste d)lis t >|<objec t >
}
TensorFlow サービングと互換性のある RESTful API — OpenVINO™ ドキュメントCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboard — Version(wp-content)
数値のほかに、JPEG / PNG でエンコードされた画像をバイナリー入力として渡すことができます。以下のように b64
キーで渡され、Base64 でエンコードされている必要があります:
{
"instances" : [
{
"image" : { "b64" : "aW1hZ2UgYnl0ZXM=" },
},
{
"image" : { "b64" : "YXdlc29tZSBpbWFnZSBieXRlcw==" },
}
]
}
TensorFlow サービングと互換性のある RESTful API — OpenVINO™ ドキュメントCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboard — Version(wp-content)
サーバー側では、バイナリーエンコードされたデータが OpenCV を使用してロードされ、推論のため OpenVINO に適したデータ形式に変換されます。
詳細については、OpenVINO モデルサーバーでバイナリーデータがどのように処理されるか を確認してください。
予測 API API の使用法 については、こちらをご覧ください。
リロード API の構成
説明
RESTful API 経由で要求を送信して構成の再読み込みをトリガーし、応答としてモデルと DAG のステータスを取得します。このエンドポイントを無効な自動構成リロードで使用すると、構成の変更が特定の時間内に適用されるようにしたり、リロード操作のステータスに関する確認を取得することができます。通常、このオプションは、OVMS がパラメーター --file_system_poll_wait_seconds 0
で起動される場合に使用されます。リロード操作では、新しい構成は OVMS サーバーに渡されません。構成ファイルの変更は、OVMS 管理者によって適用される必要があります。REST API 呼び出しは、すでに存在する構成ファイルの適用を開始するだけです。
URL
POST http://${REST_URL}:${REST_PORT}/v1/config/reload
TensorFlow サービングと互換性のある RESTful API — OpenVINO™ ドキュメントCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboard — Version(wp-content)
Flow
要求を受けてからの流れ:
設定ファイルが変更された場合は、設定をリロードします。
モデルのバージョン・ディレクトリーが変更された場合、または新しいバージョンが追加された場合は、このモデルをリロードします。
DAG の一部のモデルが変更された場合、または新しいバージョンが追加された場合は、このパイプラインをリロードします。
リロード操作にエラーがない場合、応答にはすべてのモデルと DAG のステータスが含まれます。それ以外の場合は、エラーメッセージが返されます。
要求
リロードをトリガーするには、空の本文を含む HTTP POST 要求を URL に送信する必要があります。curl
コマンドの例:
curl --request POST http://${REST_URL}:${REST_PORT}/v1/config/reload
TensorFlow サービングと互換性のある RESTful API — OpenVINO™ ドキュメントCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboard — Version(wp-content)
応答
構成のリロードが成功した場合、応答には、リロード完了後のすべてのモデルと DAG の getModelStatus 応答の集計と操作ステータスを含む JSON が含まれます。
{
"<model name>" :
{
"model_version_status" : [
{
"version" : <model versio n >|<s tr i n g> ,
"state" : <model s tate >|<s tr i n g> ,
"status" :
{
"error_code" : <error code>|<s tr i n g> ,
"error_message" : <error message>|<s tr i n g>
}
},
...
]
},
...
}
TensorFlow サービングと互換性のある RESTful API — OpenVINO™ ドキュメントCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboard — Version(wp-content)
実行中にエラーが発生した場合:
{
"error" : <error message>|<s tr i n g>
}
TensorFlow サービングと互換性のある RESTful API — OpenVINO™ ドキュメントCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboard — Version(wp-content)
操作が成功した場合の HTTP 応答のステータスコードは次のとおりです。
操作が失敗すると、別のステータスコードが返されます。エラー時に返される可能性のあるメッセージ:
{
"error" : "Config file not found or cannot open."
}
TensorFlow サービングと互換性のある RESTful API — OpenVINO™ ドキュメントCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboard — Version(wp-content)
{
"error" : "Reloading config file failed. Check server logs for more info."
}
TensorFlow サービングと互換性のある RESTful API — OpenVINO™ ドキュメントCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboard — Version(wp-content)
{
"error" : "Reloading models versions failed. Check server logs for more info."
}
TensorFlow サービングと互換性のある RESTful API — OpenVINO™ ドキュメントCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboard — Version(wp-content)
{
"error" : "Retrieving all model statuses failed. Check server logs for more info."
}
TensorFlow サービングと互換性のある RESTful API — OpenVINO™ ドキュメントCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboard — Version(wp-content)
{
"error" : "Serializing model statuses to JSON failed. Check server logs for more info."
}
TensorFlow サービングと互換性のある RESTful API — OpenVINO™ ドキュメントCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboard — Version(wp-content)
モデルの 1 つがリロードに失敗した場合でも、他のモデルは正常に動作している可能性があります。ロードされたモデルの状態を確認するには、ステータス API の構成 を使用します。上記のエラーの正確な原因を検出するには、サーバーログの分析が必要になる場合があります。
ステータス API の構成
説明
RESTful API 経由で要求を送信し、すべてのモデルと DAGs の getModelStatus 応答の集計を含む応答を取得します。
URL
GET http://${REST_URL}:${REST_PORT}/v1/config
TensorFlow サービングと互換性のある RESTful API — OpenVINO™ ドキュメントCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboard — Version(wp-content)
リクエスト
この API をトリガーするには、指定された URL で HTTP GET リクエストを送信する必要があります。curl
コマンドの例:
curl --request GET http://${REST_URL}:${REST_PORT}/v1/config
TensorFlow サービングと互換性のある RESTful API — OpenVINO™ ドキュメントCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboard — Version(wp-content)
応答
成功した場合、応答には、すべてのモデルおよび DAG の getModelStatus 応答の集計と操作ステータスを含む JSON が含まれます。
{
"<model name>" :
{
"model_version_status" : [
{
"version" : <model versio n >|<s tr i n g> ,
"state" : <model s tate >|<s tr i n g> ,
"status" :
{
"error_code" : <error code>|<s tr i n g> ,
"error_message" : <error message>|<s tr i n g>
}
},
...
]
},
...
}
TensorFlow サービングと互換性のある RESTful API — OpenVINO™ ドキュメントCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboard — Version(wp-content)
実行中にエラーが発生した場合:
{
"error" : <error message>|<s tr i n g>
}
TensorFlow サービングと互換性のある RESTful API — OpenVINO™ ドキュメントCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboard — Version(wp-content)
操作が成功した場合、HTTP 応答のステータスコードは 200 ですが、それ以外の場合は別のコードが返されます。エラー時に返される可能性のあるメッセージ:
{
"error" : "Retrieving all model statuses failed. Check server logs for more info."
}
TensorFlow サービングと互換性のある RESTful API — OpenVINO™ ドキュメントCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboard — Version(wp-content)
{
"error" : "Serializing model statuses to json failed. Check server logs for more info."
}
TensorFlow サービングと互換性のある RESTful API — OpenVINO™ ドキュメントCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboardCopy to clipboard — Version(wp-content)