モデル・デプロイメントの呼出し
モデル・デプロイメントを呼び出すと、特徴ベクトルまたはデータ・サンプルを予測エンドポイントに渡すことができ、モデルはそれらのデータ・サンプルの予測を返します。
モデル・デプロイメントがアクティブなlifecycleState
になると、予測エンドポイントはクライアントによって行われたリクエストを正常に受信できます。
モデル・デプロイメントの詳細ページで、「モデルの呼出し」を選択します。次の詳細が表示されます:
- モデルHTTPエンドポイント。プライベート・モデル・デプロイメントの場合、HTTPエンドポイントには、プライベート・エンドポイントの作成中に設定されたプライベートFQDNが含まれます。詳細は、プライベート・エンドポイントの作成に関する項を参照してください。
- OCI CLIを使用してモデル・エンドポイントを呼び出すサンプル・コード。または、OCI PythonおよびJava SDKを使用して、提供されているコード・サンプルでモデルを起動します。
-
ペイロード・サイズの上限は10MBです。
-
モデルの呼出し時のタイムアウトは、HTTPコールの場合、60秒です。
サンプル・コードを使用して、モデル・デプロイメントを呼び出します。
モデル・デプロイメントを呼び出すと、モデル・デプロイメントURIの予測エンドポイントがコールされます。このエンドポイントは、サンプル・データを入力引数とし、score.py
モデル・アーティファクト・ファイルのpredict()
関数を使用して処理されます。サンプル・データはJSON形式ですが、他の形式でもかれます。処理とは、サンプル・データを変換して、モデルの推論メソッドに渡すことです。モデルは、クライアントに返す前に処理できる予測を生成できます。
APIレスポンスは次のとおりです:
HTTPステータス・コード | エラー・コード | 説明 | 再試行してください |
---|---|---|---|
200 |
なし |
200 Success
|
なし |
404 |
NotAuthorizedOrNotFound |
モデルのデプロイメントが見つからないか、認可に失敗しました。 |
いいえ |
405 |
MethodNotAllowed |
使用できないメソッドです |
いいえ |
411 |
LengthRequired |
コンテンツ長ヘッダーがありません。 |
いいえ |
413 |
PayloadTooLarge |
ペイロード・サイズの上限は10MBです。 |
いいえ |
429 |
TooManyRequests |
リクエストが多すぎます。
|
はい(バックオフ使用 |
500 |
InternalServerError |
内部サーバー・エラーです。
|
はい(バックオフ使用 |
503 |
ServiceUnavailable |
モデル・サーバーが使用できません。 |
はい(バックオフ使用 |
モデル推論エンドポイント(予測)リクエスト・スロットル
予測エンドポイント・リクエストは、時間の経過に伴うアクティビティおよびリソース消費に基づいて抑制される場合があります。
これは、アプリケーション・サーバーを提供するモデルが過剰なリクエストによって圧倒されないように保護し、サービス拒否攻撃を防止することで、リソースの高可用性と公平な使用を維持することです。短時間に大量のリクエストを行うと、成功するものと失敗するものがあります。スロットル処理が原因でリクエストが失敗すると、次のエラー・コードおよび説明のいずれかを含むレスポンス・コード429が返されます:
{ "code": "TooManyRequests", "message": "Tenancy request-rate limit exceeded.
Please use the OCI Console to submit a support ticket for your tenancy to increase the RPS."}
または
{ "code": "TooManyRequests", "message": "LB bandwidth limit exceeded.
Consider increasing the provisioned load balancer bandwidth to avoid these errors." }
OCI Python SDKでの呼出し
次のサンプル・コードは、モデル・デプロイメントを呼び出すための参考となるものです:
import requests
import oci
from oci.signer import Signer
import json
# model deployment endpoint. Here we assume that the notebook region is the same as the region where the model deployment occurs.
# Alternatively you can also go in the details page of your model deployment in the OCI console. Under "Invoke Your Model", you will find the HTTP endpoint
# of your model.
endpoint = <your-model-deployment-uri>
# your payload:
input_data = <your-json-payload-str>
if using_rps: # using resource principal:
auth = oci.auth.signers.get_resource_principals_signer()
else: # using config + key:
config = oci.config.from_file("~/.oci/config") # replace with the location of your oci config file
auth = Signer(
tenancy=config['tenancy'],
user=config['user'],
fingerprint=config['fingerprint'],
private_key_file_location=config['key_file'],
pass_phrase=config['pass_phrase'])
# post request to model endpoint:
response = requests.post(endpoint, json=input_data, auth=auth)
# Check the response status. Success should be an HTTP 200 status code
assert response.status_code == 200, "Request made to the model predict endpoint was unsuccessful"
# print the model predictions. Assuming the model returns a JSON object.
print(json.loads(response.content))
OCI CLIでの呼出し
CLIでモデル・デプロイメントを呼び出して使用します。
CLIはOCI Cloud Shell環境に含まれており、事前認証されています。次の例では、CLIを使用してモデル・デプロイメントを呼び出します:
oci raw-request --http-method POST --target-uri
<model-deployment-url>/predict --request-body '{"data": "data"}'
プライベート・エンドポイントを使用したモデル・デプロイメントの起動
プライベート・エンドポイントで構成されたモデル・デプロイメントには、プライベート・ネットワークを介してのみアクセスできます。パブリック・エンドポイントを介してアクセスすることはできません。
コンソールの次のステップでは、アプリケーションがプライベート・エンドポイントにアクセスできることを確認します:
- 仮想クラウド・ネットワーク(VCN)およびサブネットを構成します。
プライベート・エンドポイント接続はVCNレベルです。VCN当たり多数のサブネットがある場合、そのVCNに対して1つのプライベート・エンドポイントのみを作成する必要があります。セキュリティ・ルールが要件を満たしていることを確認します。
- (オプション)ネットワーク・セキュリティ・グループを構成します。
- サブネットがイングレスのセキュリティ・ルールを設定することで、プライベート・エンドポイント・リソースへのアクセス権を付与していることを確認します。
- サブネットに使用可能なIPアドレスがあることを確認します。
指定されたサブネットに使用可能なIPアドレスがない場合、プライベート・エンドポイントを作成するための作業リクエストは失敗します。詳細は、プライベート・エンドポイント作成の失敗を参照してください。
エンドポイント・リソースにアプリケーションから到達可能な場合、モデル・デプロイメントへの予測リクエストはプライベート・エンドポイントURLを介して起動できます。
CLIからプライベート・エンドポイントを介してモデル・デプロイメントを起動するには、サンプル・コマンドおよび必須パラメータを使用します。ノートブック・セッション・インスタンスがプライベート・モデル・デプロイメントへのアクセスに使用される場合は、プライベート・エンドポイント・リソースと同じVCNおよびサブネットにも存在するカスタム・ネットワーキングのネットワーク・タイプのカスタム・ネットワーキングを使用して作成します。詳細は、「ノートブック・セッションの作成」を参照してください。
プライベート・エンドポイント・リソースと同じVCNおよびサブネットにアクセスできるノートブック・セッション・インスタンスまたはクラウド・シェル・インスタンスを使用して、次のコマンドを実行します:
oci raw-request --http-method POST --target-uri <private-endpoint-url>/<model-deployment-ocid>/predict --request-body '{"data": "data"}'