カスタム評価を作成するには、モデル・デプロイメントとビジネス・アプリケーションを定量的に追跡するための一連のカスタム・メトリックを選択します。 これらのカスタム・メトリクスを定義し、他のタイプの評価によって生成されるメトリクスと一緒に使用することができます。
以下のいずれかの方法を使用して、カスタムの評価と評価指標を管理できます。
Python SDK を使用したカスタム・メトリックの管理
Python SDK を使用してカスタム・メトリックを管理するには、以下のタスクを実行する必要があります。
その方法については、次のアドバンスト・チュートリアルを参照してください。
カスタム・モニターはいつでも無効にでき、また再び有効にすることもできます。 不要になったカスタム・モニターは削除できます。
詳しくは、Python SDK の資料を参照してください。
ステップ 1: カスタム・モニターを指標定義に登録します。
カスタム・メトリックの使用を開始する前に、カスタム・モニター (メトリックを追跡するプロセッサー) を登録する必要があります。 指標そのものを定義することも必要です。
get_definition(monitor_name)
メソッドを使用して、Metric
オブジェクトとTag
オブジェクトをインポートします。metrics
メソッドを使用して、name
、thresholds
、およびtype
の値を必要とするメトリックを定義します。tags
メソッドを使用してメタデータを定義します。
以下のコードは、前に取り上げた作業用のサンプル・ノートブックからの抜粋です。
def get_definition(monitor_name):
monitor_definitions = wos_client.monitor_definitions.list().result.monitor_definitions
for definition in monitor_definitions:
if monitor_name == definition.entity.name:
return definition
return None
monitor_name = 'my model performance'
metrics = [MonitorMetricRequest(name='sensitivity',
thresholds=[MetricThreshold(type=MetricThresholdTypes.LOWER_LIMIT, default=0.8)]),
MonitorMetricRequest(name='specificity',
thresholds=[MetricThreshold(type=MetricThresholdTypes.LOWER_LIMIT, default=0.75)])]
tags = [MonitorTagRequest(name='region', description='customer geographical region')]
existing_definition = get_definition(monitor_name)
if existing_definition is None:
custom_monitor_details = wos_client.monitor_definitions.add(name=monitor_name, metrics=metrics, tags=tags, background_mode=False).result
else:
custom_monitor_details = existing_definition
その方法を確認するには、 client.data_mart.monitors.list()
コマンドを実行して、新しく作成したモニターとメトリックが適切に構成されているかどうかを確認します。
次のコマンドを実行すれば、モニター ID も取得できます。
custom_monitor_id = custom_monitor_details.metadata.id
print(custom_monitor_id)
詳細な結果を確認するには、次のコマンドを実行してください。
custom_monitor_details = wos_client.monitor_definitions.get(monitor_definition_id=custom_monitor_id).result
print('Monitor definition details:', custom_monitor_details)
ステップ 2: カスタム・モニターを有効にします。
次に、サブスクリプションのためのカスタム・モニターを有効にする必要があります。 そうすると、モニターがアクティブになり、しきい値が設定されます。
target
メソッドを使用して、Threshold
オブジェクトをインポートします。thresholds
メソッドを使用して、メトリックのlower_limit
値を設定します。 パラメーターの 1 つとしてmetric_id
値を指定します。 覚えていない場合は、前の例に示すように、いつでもcustom_monitor_details
コマンドを使用して詳細を取得できます。
以下のコードは、前に取り上げた作業用のサンプル・ノートブックからの抜粋です。
target = Target(
target_type=TargetTypes.SUBSCRIPTION,
target_id=subscription_id
)
thresholds = [MetricThresholdOverride(metric_id='sensitivity', type = MetricThresholdTypes.LOWER_LIMIT, value=0.9)]
custom_monitor_instance_details = wos_client.monitor_instances.create(
data_mart_id=data_mart_id,
background_mode=False,
monitor_definition_id=custom_monitor_id,
target=target
).result
構成の詳細を確認するには、subscription.monitoring.get_details(monitor_uid=monitor_uid)
コマンドを使用します。
ステップ 3: 指標値を格納します。
カスタム・メトリクスは、サービス・インスタンスが存在するリージョンに保存する必要があります。
metrics
メソッドを使用して、保管する指標を設定します。subscription.monitoring.store_metrics
メソッドを使用して指標をコミットします。
以下のコードは、前に取り上げた作業用のサンプル・ノートブックからの抜粋です。
from datetime import datetime, timezone, timedelta
from ibm_watson_openscale.base_classes.watson_open_scale_v2 import MonitorMeasurementRequest
custom_monitoring_run_id = "11122223333111abc"
measurement_request = [MonitorMeasurementRequest(timestamp=datetime.now(timezone.utc),
metrics=[{"specificity": 0.78, "sensitivity": 0.67, "region": "us-south"}], run_id=custom_monitoring_run_id)]
print(measurement_request[0])
published_measurement_response = wos_client.monitor_instances.measurements.add(
monitor_instance_id=custom_monitor_instance_id,
monitor_measurement_request=measurement_request).result
published_measurement_id = published_measurement_response[0]["measurement_id"]
print(published_measurement_response)
カスタム・モニターをすべてリストするには、次のコマンドを実行します。
published_measurement = wos_client.monitor_instances.measurements.get(monitor_instance_id=custom_monitor_instance_id, measurement_id=published_measurement_id).result
print(published_measurement)
watsonx.governanceによるカスタムメトリクスの管理
ステップ 1: メトリック・グループの追加
- 「構成」 タブで、 「メトリック・グループの追加」をクリックします。
- メトリック・グループを手動で構成する場合は、 「新規グループの構成」をクリックします。
a. メトリック・グループの名前と説明を指定します。
指定する名前の長さは、48 文字以下でなければなりません。
b. 「入力パラメーター」 タイルの 「編集」 アイコンをクリックし、入力パラメーターの詳細を指定します。
指定するパラメーター名は、メトリック API で指定されているパラメーター名と一致する必要があります。
c. カスタム・モニターを構成するためにパラメーターが必要な場合は、 「必須パラメーター」 チェック・ボックスを選択します。
d. 「Add」をクリックします。
入力パラメーターを追加した後、 「次へ」をクリックします。
e. 評価でサポートされるモデル・タイプを選択し、 「次へ」をクリックします。
f. 評価スケジュールを指定しない場合は、 「保存」をクリックします。
g. 評価スケジュールを指定する場合は、トグルをクリックします。
評価スケジュールの間隔を指定して、 「保存」をクリックする必要があります。 h. 「メトリックの追加」 をクリックして、メトリックの詳細を指定します。
「保存」をクリックします。 - JSON ファイルを使用してメトリック・グループを構成する場合は、 「ファイルからインポート」をクリックします。
JSON ファイルをアップロードし、 「インポート」をクリックします。
ステップ 2: メトリック・エンドポイントの追加
- 「メトリック・エンドポイント」 セクションで、 「メトリック・エンドポイントの追加」をクリックします。
- メトリック・エンドポイントの名前と説明を指定します。
- 「接続」 タイルの 「編集」 アイコンをクリックして、接続の詳細を指定します。
「Next」 をクリックします。 - メトリック・エンドポイントに関連付けるメトリック・グループを選択し、 「保存」をクリックします。
ステップ 3: カスタム・モニターの構成
- 「インサイト・ダッシュボード」 ページで、モデル・デプロイメント・タイルの 「モニターの構成」 を選択します。
- 「評価」 セクションで、追加したメトリック・グループの名前を選択します。
- 「メトリック・エンドポイント」 タイルで 「編集」 アイコンを選択します。
- メトリック・エンドポイントを選択して、 「次へ」をクリックします。
メトリック・エンドポイントを使用しない場合は、 「なし」を選択します。 - トグルを使用して、モデルの評価およびしきい値の指定に使用するメトリックを指定します。
「次へ」をクリックします。 - 入力パラメーターの値を指定します。 メトリック・グループのデータ・タイプとして JSON を選択した場合は、JSON データを追加します。
「次へ」をクリックします。
カスタム・モニターを使用してモデルを評価できるようになりました。
カスタム指標へのアクセスとその視覚化
カスタム・メトリックにアクセスして視覚化するには、プログラマチック・インターフェースを使用できます。 その方法については、次のアドバンスト・チュートリアルを参照してください。
-
詳しくは、Python SDK の資料を参照してください。
カスタムメトリクスの可視化は、インサイトダッシュボードに表示されます。
もっと見る
親トピック: モデル評価の構成