モデルの動作とパフォーマンスを理解するために、モデルのヘルスモニター評価を設定することができます。 モデルの正常性メトリックを使用して、モデル・デプロイメントがトランザクションを処理する効率を判別できます。
モデルの健全性評価は、本番環境での機械学習モデル評価や、あらゆるタイプの生成AI資産のデプロイメントでデフォルトで有効になっている。 モデルの正常性評価が有効になっている場合、使用するサービスのデータマートにモデルの正常性データ・セットが作成されます。 モデルの正常性データ・セットには、モデルの正常性メトリックの計算に使用される評価要求に関する詳細が格納されます。
モデル・ヘルス・モニターの評価を構成するために、以下の例に示すように、各メトリックのしきい値を設定できます。
プレプロダクションおよびバッチデプロイメントのモデル健全性評価は、機械学習モデルのデプロイメントではサポートされていません。
サポートされるモデルの正常性メトリック
モデルの健全性を評価するための以下の指標カテゴリーがサポートされている。 各カテゴリーには、モデルのパフォーマンスに関する詳細を示すメトリックが含まれています。
モデル・ヘルス・モニターの評価では、以下のメトリックがサポートされます。
評価要求
モデル・ヘルス・モニターの評価では、モデル・デプロイメントが受け取る評価要求の数が計算されます。
- 対応モデル:機械学習とLLM
レコード
モデル・ヘルス・モニターの評価では、評価要求全体で処理されるトランザクション・レコードの 合計、 平均、 最小、 最大、および 中央値 を計算します。
- 対応モデル:機械学習とLLM
スループットと待ち時間
モデル・ヘルス・モニターの評価では、ミリ秒 (ms) 当たりのスコアリング要求およびトランザクション・レコードの処理にかかる時間を追跡することにより、待ち時間が計算されます。 スループットは、1 秒当たりに処理された評価要求およびトランザクション・レコードの数を追跡することによって計算されます。
スループットと待ち時間を計算するために、スコアリング要求からの response_time
値を使用して、モデル・デプロイメントがスコアリング要求を処理するために要する時間が追跡されます。
watsonx.aiRuntime のデプロイメントでは、評価を設定する際に 'response_time
値が自動的に検出されます。
外部デプロイメントやカスタムデプロイメントでは、PythonSDKの以下の例に示すように、スループットとレイテンシを計算するためにスコアリングリクエストを送信する際に'response_time
値を指定する必要があります:
from ibm_watson_openscale.supporting_classes.payload_record import PayloadRecord
client.data_sets.store_records(
data_set_id=payload_data_set_id,
request_body=[
PayloadRecord(
scoring_id=<uuid>,
request=openscale_input,
response=openscale_output,
response_time=<response_time>,
user_id=<user_id>)
]
)
評価中の考慮事項と待ち時間を測定するために、以下のメトリックが計算されます。
- API 待ち時間: モデル・デプロイメントによる評価要求の処理にかかった時間 (ミリ秒単位)。
- API スループット: 1 秒当たりにモデル・デプロイメントによって処理された評価要求の数
- レコード待ち時間: モデル・デプロイメントでレコードを処理するために要した時間 (ミリ秒単位)
- レコード・スループット: 1 秒当たりにモデル・デプロイメントによって処理されたレコードの数
評価要求およびトランザクション・レコードの平均、最大、中央値、および最小スループットと待ち時間は、モデル・ヘルス・モニターの評価時に計算されます。
- 対応モデル:機械学習とLLM
ペイロード・サイズ
評価要求全体でモデル・デプロイメントが処理するトランザクション・レコードの 合計、 平均、 最小、 最大、および 中央値 のペイロード・サイズ (キロバイト (KB) 単位) は、モデル・ヘルス・モニターの評価時に計算されます。 イメージ・モデルのペイロード・サイズ・メトリックはサポートされていません。 ペイロード・サイズ・メトリックは、従来のモデルについてのみ計算されます。
- 対応モデル:機械学習
ユーザー
モデル・ヘルス・モニターの評価では、モデル・デプロイメントに評価要求を送信するユーザーの数が計算されます。
ユーザー数を計算するには、スコアリング要求の user_id
を使用して、モデルが受け取るスコアリング要求を送信するユーザーを識別します。
watsonx.aiRuntime のデプロイメントでは、評価を設定する際に 'user_id
値が自動的に検出されます。
外部デプロイメントやカスタムデプロイメントでは、PythonSDKの以下の例に示すように、ユーザー数を計算するためにスコアリングリクエストを送信する際に'user_id
値を指定する必要があります:
from ibm_watson_openscale.supporting_classes.payload_record import PayloadRecord
client.data_sets.store_records(
data_set_id=payload_data_set_id,
request_body=[
PayloadRecord(
scoring_id=<uuid>,
request=openscale_input,
response=openscale_output,
response_time=<response_time>,
user_id=<user_id>). --> value to be supplied by user
]
)
「ユーザー」 メトリックの評価サマリーを確認する際に、リアルタイム・ビューを使用してユーザーの総数を確認し、集約ビューを使用してユーザーの平均数を確認することができます。
- 対応モデル:機械学習とLLM
トークン・カウント
Watsonx.governanceを使用している場合、モデル・ヘルス・モニターの評価では、モデル・デプロイメントの評価要求全体で処理されるトークンの数が計算されます。 このメトリック・カテゴリーは、ファウンデーション・モデルでのみサポートされます。
Watsonx.governance は、評価時にトークン数を測定するために以下のメトリックを計算します。
入力トークン数: 評価中の複数の評価要求にわたる total、 average、 minimum、 maximum、および median 入力トークン数を計算します。
出力トークン数: 評価中の評価要求全体の total、 average、 minimum、 maximum、および median 出力トークン数を計算します。
対応機種LLM
カスタム・トークン・カウント・メトリクスを計算するには、次の例に示すように、PythonSDKでスコアリング・リクエストを送信する際にgenerated_token_count
フィールドとinput_token_count
フィールドを指定して、入力と出力のトークン・カウント・メトリクスを計算する必要があります:
request = {
"fields": [
"comment"
],
"values": [
[
"Customer service was friendly and helpful."
]
]
}
response = {
"fields": [
"generated_text",
"generated_token_count",
"input_token_count",
"stop_reason",
"scoring_id",
"response_time"
],
"values": [
[
"1",
2,
73,
"eos_token",
"MRM_7610fb52-b11d-4e20-b1fe-f2b971cae4af-50",
3558
],
[
"0",
3,
62,
"eos_token",
"MRM_7610fb52-b11d-4e20-b1fe-f2b971cae4af-51",
3778
]
]
}
from ibm_watson_openscale.supporting_classes.payload_record import PayloadRecord
client.data_sets.store_records(
data_set_id=payload_data_set_id,
request_body=[
PayloadRecord(
scoring_id=<uuid>,
request=request,
response=response,
response_time=<response_time>,
user_id=<user_id>). --> value to be supplied by user
]
)