KServe 互換 RESTful API
はじめに
gRPC APIs API に加えて、OpenVINO™ モデルサーバーは KServe REST API のドキュメントにある RESTful API もサポートします。REST API は、クライアント側の Python 依存関係の数を減らし、アプリケーション・コードを簡素化することを目的とする場合に推奨します。
このドキュメントでは、次の API について説明します:
サーバーライブ API
説明
サーバーの稼働状況に関する情報を取得します。
URL
GET http://${REST_URL}:${REST_PORT}/v2/health/live
KServe 互換 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 clipboard — Version(wp-content)
応答形式
サーバーの稼働状況に関する情報は、応答ステータスコードで提供されます。サーバーが稼働している場合、ステータスコードは 200 です。それ以外は 4xx です。応答の本文にはコンテンツがありません。
使用例
$ curl -i http://localhost:5000/v2/health/live
HTTP/1.1 200 OK
Content-Type: application/json
Date: Tue, 09 Aug 2022 09:20:24 GMT
Content-Length: 2
KServe 互換 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 clipboard — Version(wp-content)
HTTP サーバーライブのエンドポイント上の KServe API を使用してサーバーの稼働状態を取得するサンプルコード も参照してください。
サーバーレディー API
説明
サーバーの準備状況に関する情報を取得します。
URL
GET http://${REST_URL}:${REST_PORT}/v2/health/ready
KServe 互換 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 clipboard — Version(wp-content)
応答形式
サーバーの準備状況に関する情報は、応答ステータスコードで提供されます。サーバーの準備ができている場合、ステータスコードは 200 です。それ以外は 4xx です。応答の本文にはコンテンツがありません。
使用例
$ curl -i http://localhost:5000/v2/health/ready
HTTP/1.1 200 OK
Content-Type: application/json
Date: Tue, 09 Aug 2022 09:22:14 GMT
Content-Length: 2
KServe 互換 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 clipboard — Version(wp-content)
HTTP サーバーレディーのエンドポイントで KServe API を使用してサーバーの準備を整えるサンプルコード も参照してください。
モデルレディー API
説明
モデルの準備状況に関する情報を取得します。
URL
GET http://${REST_URL}:${REST_PORT}/v2/models/${MODEL_NAME}
[/versions/${MODEL_VERSION}]/ready
KServe 互換 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 clipboard — Version(wp-content)
応答形式
モデルの準備状況に関する情報は、応答ステータスコードで提供されます。モデルが推論の準備ができている場合、ステータスコードは 200 です。それ以外は 4xx です。応答の本文にはコンテンツがありません。
使用例
$ curl -i http://localhost:5000/v2/models/resnet/ready
HTTP/1.1 200 OK
Content-Type: application/json
Date: Tue, 09 Aug 2022 09:25:31 GMT
Content-Length: 2
KServe 互換 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 clipboard — Version(wp-content)
HTTP モデルレディーのエンドポイントで KServe API を使用してモデルの準備を整えるサンプルコード も参照してください。
推論 API
説明
読み込まれたモデルまたは DAG を使用して推論を実行するエンドポイントです。
URL
POST http://${REST_URL}:${REST_PORT}/v2/models/${MODEL_NAME}
[/versions/${MODEL_VERSION}]/infer
KServe 互換 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 clipboard — Version(wp-content)
要求本体の形式
{
"id" : $s tr i n g #op t io nal ,
"parameters" : $parame ters #op t io nal ,
"inputs" : [ $reques t _i n pu t , ... ],
"outputs" : [ $reques t _ou t pu t , ... ] #op t io nal
}
KServe 互換 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 clipboard — Version(wp-content)
説明:
$reques t _i n pu t =
{
"name" : $s tr i n g ,
"shape" : [ $ nu mber , ... ],
"datatype" : $s tr i n g ,
"parameters" : $parame ters #op t io nal ,
"data" : $ tens or_da ta
}
$reques t _ou t pu t =
{
"name" : $s tr i n g ,
"parameters" : $parame ters #op t io nal ,
}
KServe 互換 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 clipboard — Version(wp-content)
注: tensor_data
の要素は多次元表現、または平坦化された 1 次元表現として表現できます。推論実行前に tensor データがフラット化され、tensor_data
内の要素数のみが検証されます。
数値のほかに、バイナリーデータ拡張子を使用してエンコードされた画像を渡すことができます:
JPEG / PNG でエンコードされた画像 - この場合、バイナリーエンコードされたデータは OpenCV を使用して OVMS によってロードされ、推論のため OpenVINO に適したデータ形式に変換されます。データタイプが BYTES
で、モデルまたはパイプラインの形状次元が 4 (demultiplexing の場合は 5) である場合、入力はエンコードされたイメージとして扱われます。すべてのバッチの BYTES 入力の前に、そのサイズを含む 4 バイト (リトル・エンディアン) を付ける必要があります。
Co ntent - Type : applica t io n /oc tet - s trea m
I nferen ce - Header - Co ntent - Le n g t h : <xx>
Co ntent - Le n g t h : <xx+ 9472 >
{ "model_name" : "my_model"
, "inputs" : [
{
"name" : "model_input" ,
"shape" : [ 1 ],
"datatype" : "BYTES"
}
]
}
< 0 x 00250000 ( 9472 as f our by tes li ttle e n dia n )>< 9472 by tes o f da ta f or model_i n pu t tens or>
KServe 互換 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 clipboard — Version(wp-content)
生データ - OVMS によって前処理されないことを意味します。バイナリーデータ拡張機能を使用して生データを送信するには、BYTES
以外のデータタイプを使用します。
Co ntent - Type : applica t io n /oc tet - s trea m
I nferen ce - Header - Co ntent - Le n g t h : <xx>
Co ntent - Le n g t h : <xx+( 3 x 1080000 )>
{
"model_name" : "my_model" ,
"inputs" : [
{
"name" : "model_input" ,
"shape" : [ 3 , 300 , 300 , 3 ],
"datatype" : "FP32"
},
]
}
< 3240000 by tes o f t he whole da ta ba t ch f or model_i n pu t tens or>
KServe 互換 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 clipboard — Version(wp-content)
*バイナリー拡張内で文字列を送信するには、各バッチをそのサイズを含む 4 バイト (リトル・エンディアン) で先行させる必要があります。
詳細については、OpenVINO モデルサーバーでバイナリーデータがどのように処理されるか を確認してください。
応答形式
成功した場合:
{
"model_name" : $s tr i n g ,
"model_version" : $s tr i n g #op t io nal ,
"id" : $s tr i n g ,
"parameters" : $parame ters #op t io nal ,
"outputs" : [ $respo nse _ou t pu t , ... ]
}
KServe 互換 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 clipboard — Version(wp-content)
説明:
$respo nse _ou t pu t =
{
"name" : $s tr i n g ,
"shape" : [ $ nu mber , ... ],
"datatype" : $s tr i n g ,
"parameters" : $parame ters #op t io nal ,
"data" : $ tens or_da ta
}
KServe 互換 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 clipboard — Version(wp-content)
失敗した場合:
{
"error" : <error message s tr i n g>
}
KServe 互換 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 clipboard — Version(wp-content)
応答の出力は、バイナリーデータ拡張機能を使用してバイナリー形式で送信できます。出力を強制的にバイナリー形式で送信するには、要求 JSON で “binary_data” : true パラメーターを使用する必要があります。次に例を示します:
{
"model_name" : "mymodel" ,
"inputs" : [ ... ],
"outputs" : [
{
"name" : "output0" ,
"parameters" : {
"binary_data" : true
}
}
]
}
KServe 互換 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 clipboard — Version(wp-content)
出力データタイプが FP32 で、形状が [ 2, 2 ] であると仮定すると、この要求に対する応答は次のようになります:
HTTP/ 1.1 200 OK
Co ntent - Type : applica t io n /oc tet - s trea m
I nferen ce - Header - Co ntent - Le n g t h : <yy>
Co ntent - Le n g t h : <yy+ 16 >
{
"outputs" : [
{
"name" : "output0" ,
"shape" : [ 2 , 2 ],
"datatype" : "FP32" ,
"parameters" : {
"binary_data_size" : 16
}
}
]
}
< 16 by tes o f da ta f or ou t pu t 0 tens or>
KServe 互換 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 clipboard — Version(wp-content)
要求と応答の内容の詳細については、KServe API ドキュメント を参照してください。
注: REST 経由で推論を実行する効率的な方法は、バイナリーデータ拡張機能 を使用して、JSON オブジェクトの外部にバイナリー形式でデータを送信することです。
注: 要求 URI の最後に //.. を使用すると、パスが切り詰められ、予想とは異なる応答が返される可能性があります。
HTTP 推論エンドポイントで KServe API を使用して推論を実行するサンプルコード も参照してください。