カスタム評価とメトリクスの作成

カスタム評価を作成するには、モデル・デプロイメントとビジネス・アプリケーションを定量的に追跡するための一連のカスタム・メトリックを選択します。 これらのカスタム・メトリクスを定義し、他のタイプの評価によって生成されるメトリクスと一緒に使用することができます。

以下のいずれかの方法を使用して、カスタムの評価と評価指標を管理できます。

Python SDK を使用したカスタム・メトリックの管理

Python SDK を使用してカスタム・メトリックを管理するには、以下のタスクを実行する必要があります。

  1. カスタムモニターをメトリック定義とともに登録する.
  2. カスタムモニターを有効にします
  3. 指標値を格納します

その方法については、次のアドバンスト・チュートリアルを参照してください。

カスタム監視はいつでも無効化および再有効化できます。 カスタムモニターが不要になった場合は、削除できます。

詳しくは、Python SDK の資料を参照してください。

カスタムモニターをメトリック定義とともに登録する

カスタム・メトリックの使用を開始する前に、カスタム・モニター (メトリックを追跡するプロセッサー) を登録する必要があります。 指標そのものを定義することも必要です。

  1. get_definition(monitor_name)メソッドを使用して、MetricオブジェクトとTagオブジェクトをインポートします。
  2. metricsメソッドを使用して、namethresholds、およびtypeの値を必要とするメトリックを定義します。
  3. 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)

カスタムモニターを有効にする

次に、サブスクリプションのためのカスタム・モニターを有効にする必要があります。 そうすると、モニターがアクティブになり、しきい値が設定されます。

  1. targetメソッドを使用して、Thresholdオブジェクトをインポートします。
  2. 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) コマンドを使用します。

メトリック値を保存する

カスタム・メトリクスは、サービス・インスタンスが存在するリージョンに保存する必要があります。

  1. metrics メソッドを使用して、保管する指標を設定します。
  2. 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)

メトリックメトリックトリクスプロバイダーと Python SDKによるカスタムメトリクスの管理

Python SDK を使用してカスタム・メトリックを管理するには、以下のタスクを実行する必要があります。

  1. カスタムモニターをメトリック定義とともに登録する.

  2. メトリックプロバイダーを作成する.

  3. カスタムモニターを有効にします

メトリックプロバイダーを作成する

カスタムメトリックプロバイダーのエンドポイント詳細を、認証情報と共に定義します。 OpenScale トークンを生成し、実行時にそのトークンを使用してRESTエンドポイントを呼び出す

以下のコードは動作するサンプルノートブックからのものです

wos_client.integrated_systems.add(name="Custom Metrics Provider",
    description="Custom Metrics Provider", type="custom_metrics_provider",
    credentials=  {
        "auth_type":"bearer",
        "token_info": {
           "url":  IAM_URL,
           "headers": { "Content-type": "application/x-www-form-urlencoded" }
           "payload": "grant_type=urn:ibm:params:oauth:grant-type:apikey&response_type=cloud_iam&apikey=<api_key>”,
           "method": "POST"
        }
    },
    connection={
        "display_name": "Custom Metrics Provider",
        "endpoint": rest_endpoint_url
    }
).result
ヒント: SDKの簡略化されたフローでは、カスタムモニターが自動的に登録され、有効化され、統合システムプロバイダーが作成されます。 必要なのはメトリックエンドポイントの実装だけです。

メトリックプロバイダーとユーザーインターフェースによるメトリック管理

以下のステップを実行します。

  1. メトリックグループを追加する.
  2. メトリックエンドポイントを追加する.
  3. カスタムモニターを設定する

メトリックグループを追加する

  1. ホームページで、をクリックし 設定、次にをクリックします メトリック単位群
  2. クリックしてください メトリックグループを追加
  3. メトリックグループをJSONファイルを使用して設定するには、 [ファイルからインポート] をクリックします。 JSONファイルをアップロードし、 「インポート」 をクリックしてください。
  4. メトリックグループを手動で設定するには、 [新しいグループを設定] をクリックします。
    1. メトリックグループの名前を入力し、 [適用] をクリックします。 名前は48文字以下でなければなりません。
    2. タイルをサポートするモデルタイプ編集アイコンをクリックし、評価がサポートするモデルタイプを1つ以上選択してください。 次へ をクリックします。
    3. 評価スケジュールを指定するには、トグルをクリックして間隔を指定してください。 次へ をクリックします。
    4. 入力パラメータの詳細を指定してください。 各入力パラメータについて、詳細を入力し、 [追加] をクリックしてください。 指定するパラメータ名は、 メトリック API で指定されているパラメータ名と一致する必要があります。 カスタムモニターを設定するためにパラメーターが必要な場合は、[ 必須パラメーター ] チェックボックスを選択してください。
    5. 保存 をクリックします。

メトリックエンドポイントを追加する

  1. ホームページで、をクリックし 設定、次にをクリックします メトリック

  2. クリックしてください メトリック追加

  3. メトリック・エンドポイントの名前と説明を指定します。

  4. 「接続」 タイルの 「編集」 アイコンをクリックして、接続の詳細を指定します。 次へ をクリックします。

  5. メトリックエンドポイントに関連付けたいメトリックグループを選択し、 [保存] をクリックします。

    バッチ処理をサポートするように設定した場合、カスタ watsonx.ai ムのランタイムエンドポイントを指定 URL すると、 メトリックトリックグループに次の入力パラメータを追加できます:

入力パラメーター
パラメーター データ型
メトリック ストリング wml_バッチ
space_id ストリング あなたのスペースID
デプロイメント ID ストリング watsonx.ai カスタムメトリックエンドポイントの実行時デプロイメント ID
ハードウェア仕様ID ストリング watsonx.ai メトリックエンドポイントの実行時ハードウェア仕様ID
メトリックメトリクス待機時間 整数 秒単位の時間(例:60)

カスタムモニターを設定する

  1. ホームページで、 インサイトダッシュボードをクリックしてください。
  2. モデルデプロイメントタイルで、 [モニターを設定] を選択します。
  3. 「評価」 セクションで、追加したメトリック・グループの名前を選択します。
  4. 「メトリック・エンドポイント」 タイルで 「編集」 アイコンを選択します。
  5. メトリック・エンドポイントを選択して、 「次へ」をクリックします。 メトリックエンドポイントを使用しない場合は、 [なし] を選択してください。
  6. トグルを使用して、モデルの評価およびしきい値の指定に使用するメトリックを指定します。 次へ をクリックします。
  7. 入力パラメーターの値を指定します。 メトリック・グループのデータ・タイプとして JSON を選択した場合は、JSON データを追加します。 次へ をクリックします。

カスタム・モニターを使用してモデルを評価できるようになりました。

カスタム指標へのアクセスとその視覚化

カスタムメトリクスの可視化は、インサイトダッシュボードに表示されます。

RAG品質モニターページには、HAPおよびPIIを含むメトリック表示する時系列グラフが表示されます。

もっと見る

評価結果の確認