予測または結果をリアルタイムで生成するために、機械学習モデル、生成 AI 資産、または Python 関数のオンライン・デプロイメントを作成します。 例えば、銀行の顧客が販売促進に登録するかどうかを予測するようにトレーニングされた分類モデルのオンライン・デプロイメントを作成します。 新規顧客データをデプロイメント・エンドポイントに送信すると、リアルタイムで予測が返されます。
オンライン・デプロイメントのデプロイ可能なアセット・タイプ
以下のタイプの資産に対してオンライン・デプロイメントを作成できます。
- 機能
- モデル
- プロンプト・テンプレート
- スクリプト
R Shinyアプリケーションアセットをデプロイすることはできませんwatsonx.ai。
オンライン・デプロイメントを作成する方法
オンライン・デプロイメントは、以下のいずれかの方法で作成できます。
- コードなしのアプローチを使用して、 デプロイメント・スペースからオンライン・デプロイメントを作成します。
- コードを使用して、 ノートブックを使用してプログラマチックにオンライン・デプロイメントを作成します。
オンライン・デプロイメントを作成すると、エンドポイント URL が生成されます。 エンドポイント URL を使用して、デプロイメントをテストしたり、デプロイメントをアプリケーションに含めたりすることができます。
開始前に
APIキーを生成して、タスクの認証情報を設定する必要があります。 詳細については、タスク資格情報の管理を参照のこと。
デプロイメント・スペースからのオンライン・デプロイメントの作成
デプロイメント・スペースからオンライン・デプロイメントを作成するには、以下の手順を実行します。
スペースにデプロイする資産をプロモートするか追加します。 詳しくは、「 デプロイメント・スペース内の資産」を参照してください。
「アセット」ページで、アクション・メニューから 「デプロイ」 をクリックします。
「デプロイメントの詳細」ページで、 「新規デプロイメント」をクリックします。
デプロイメント・タイプとして オンライン を選択してください。
デプロイメントの名前と説明 (オプション) を指定します。
「サービス名」 フィールドを使用して、デプロイメント ID ではなくデプロイメントの名前を指定します。
注:- サービス名は、名前空間内で固有のものでなければなりません。
- サービス名には、[a-z,0-9, _] の文字のみを含める必要があり、最大 36 文字の長さでなければなりません。
- サービス名は、予測 URL の一部としてのみ機能します。 場合によっては、デプロイメント ID を使用する必要があります。
オプション: Python 関数、 Tensorflow モデル、または カスタム・ソフトウェア仕様を使用するモデルをデプロイする場合は、 ハードウェア仕様 を選択します。 例えば、 デプロイメントをスケーリングする場合は、ハードウェア・リソースを増やすことができます。
制約事項:デプロイメント・スペースのユーザー・インターフェースからカスタム・ハードウェア仕様を作成したり選択したりすることはできません。 ハードウェア仕様を作成および選択する方法について詳しくは、 デプロイメントのためのハードウェア仕様の管理を参照してください。
オプション: 資産と互換性のある ソフトウェア仕様 を選択します。 機能のソフトウェア仕様のみを選択できます。
作成 をクリックして、デプロイメントを作成します。
オンライン・デプロイメントのテスト
オンライン・デプロイメントをテストするには、以下の手順を実行します。
- スペースの 「デプロイメント」 タブで、デプロイメント名をクリックします。
- 「テスト」 タブをクリックしてデータを入力し、デプロイ済み資産から予測またはその他の応答を取得します。
オンライン・デプロイメントのテスト・データを提供する方法は、デプロイした資産のタイプによって異なります。 ほとんどのアセットでは、テスト・データをフォームに直接入力したり、テスト・データを含むファイルをアップロードしたり、テスト・データを JSON コードとして貼り付けたりすることができます。 例えば、分類モデルのテスト・インターフェースを以下に示します。
テスト・データを提供する場合:
デプロイされたモデルにスキーマが定義されている場合、テスト・データは同じスキーマを使用する必要があります。 例えば、分類モデルの場合、予測列を省略して、同じ列を使用してテスト・データを入力します。
デプロイされたプロンプト・テンプレートの場合、デプロイメントをテストするためのフォームは、プロンプトの作成に使用した入出力フォームをミラーリングします。
デプロイメントをテストするためのサンプル JSON コード
デプロイメントのペイロードまたは入力データとして JSON コードを送信する場合、入力データはデプロイされた資産の要件と一致する必要があります。
例えば、スキーマを持つモデルの場合、 fields
はデータの列ヘッダーと一致する必要があり、 values
にはデータが (同じ順序で) 含まれている必要があります。 以下のフォーマットを使用します。
{"input_data":[{
"fields": [<field1>, <field2>, ...],
"values": [[<value1>, <value2>, ...]]
}]}
この例を参照してください:
{"input_data":[{
"fields": ["PassengerId","Pclass","Name","Sex","Age","SibSp","Parch","Ticket","Fare","Cabin","Embarked"],
"values": [[1,3,"Braund, Mr. Owen Harris",0,22,1,0,"A/5 21171",7.25,null,"S"]]
}]}
ただし、デプロイされたプロンプト・テンプレートの入力データを入力するために、構造は、モデルにプロンプトを出すための入力と出力をミラーリングします。 例えば、以下のコード・スニペットを参照してください。
{
"parameters": {
"prompt_variables": {
"input": "input text goes here."
}
}
}
JSON 入力のフォーマット設定の場合:
- すべてのストリングは二重引用符で囲まれます。 辞書の Python 表記は似ていますが、単一引用符で囲まれた Python ストリングは JSON データでは受け入れられません。
- 欠落している値を
null
で示します。
オンライン・デプロイメントのエンドポイントの取得
アプリケーションからデプロイメントにアクセスできるように、オンライン・デプロイメントのエンドポイント URL を取得するには、以下の手順を実行します。
- スペースの 「デプロイメント」 タブで、デプロイメント名をクリックします。
- 「API リファレンス」 タブで、プライベート・エンドポイントとパブリック・エンドポイントのリンクを見つけます。 また、 Pythonや Java などのさまざまなプログラミング言語でコード・スニペットを検索して、エンドポイントの詳細をアプリケーションに組み込むこともできます。
オンライン・デプロイメントの作成時に 「サービス名」 を追加した場合は、2 つのエンドポイント URL が表示されます。 最初の URL にはデプロイメント ID が含まれ、2 番目の URL にはサービス提供者の名前が含まれています。 これらの URL のいずれかをデプロイメントで使用できます。
オンライン・デプロイメントの詳細へのアクセス
デプロイメントの詳細を確認または更新するには、以下の手順を実行します。
- スペースの 「デプロイメント」 タブで、デプロイメント名をクリックします。
- 「デプロイメントの詳細」 タブをクリックして、オンライン・デプロイメントに関連する情報にアクセスします。
ノートブックを使用したプログラムによるオンライン・デプロイメントの作成
以下を使用して、オンライン・デプロイメントをプログラマチックに作成できます。
- watsonx.aiRuntimeREST API。
- watsonx Python クライアント・ライブラリー。
watsonx.aiRuntimePythonクライアントを使用してデプロイメントを作成・管理する方法を示したサンプル・ノートブックにアクセスするには、機械学習のサンプルと例をご覧ください。
プログラムによるオンライン・デプロイメントのテスト
オンライン・デプロイメントをプログラマチックにテストするには、デプロイされた資産の既存のモデル要件のスキーマに一致するペイロードを準備する必要があります。 例えば、分類モデルの入力データ (ペイロード) は、デプロイされたモデルのスキーマと一致する必要があります。 分類モデルの以下のサンプルは、モデル・スキーマに完全に一致する列と値を持つテスト・データを提供します。
model_details = client.repository.get_details("<model_id>") # retrieves details and includes schema
columns_in_schema = []
for i in range(0, len(model_details['entity']['schemas']['input'][0].get('fields'))):
columns_in_schema.append(model_details['entity']['schemas']['input'][0].get('fields')[i]['name'])
X = X[columns_in_schema] # where X is a pandas dataframe that contains values to be scored
#(...)
scoring_values = X.values.tolist()
array_of_input_fields = X.columns.tolist()
payload_scoring = {"input_data": [{"fields": [array_of_input_fields],"values": scoring_values}]}
プログラムによるオンライン・デプロイメントのエンドポイントの取得
ノートブックからオンライン・デプロイメントのエンドポイント URL を取得するには、以下のようにします。
- Pythonクライアントメソッド'
client.deployments.list()
を呼び出して、デプロイメントをリストする。 - デプロイメントの行を見つけます。 デプロイメント・エンドポイント URL が
url
列にリストされます。
詳細情報
バッチ・デプロイメントの作成方法については、 バッチ・デプロイメントの作成を参照してください。
デプロイメント・ジョブを管理する方法、およびオンライン・デプロイメントを更新、スケーリング、または削除する方法については、 資産の管理を参照してください。
デプロイメント エンドポイントの詳細については、「エンドポイント URL」を参照してください。
親トピック: 予測デプロイメントの管理