機械学習モデルまたはジェネレーティブAI資産を評価する場合、モデル評価を可能にするために、デプロイメントからモデルトランザクションを送信する必要があります。
モデル評価の正確な結果を継続的に生成するには、配置から新しいデータを送信し続ける必要があります。
モデル・トランザクションの送信
データのインポート
インサイトダッシュボードで 評価結果を確認する際、アクションメニューを使用して、モデル評価用のペイロードおよびフィードバックデータをインポートできます。
実動前モデルの場合、CSV ファイルをアップロードするか、 Cloud Object Storage または Db2 データベースに保管されているデータに接続することで、データをインポートできます。
既にスコアリング済みのデータをアップロードする場合は、 Test data includes model output
チェック・ボックスを選択できます。 このオプションを選択した場合、 Cloud Object Storage はテスト・データを再スコアリングしません。 インポートするデータには、このオプションを選択した場合にペイロード・ロギングおよびフィードバック・テーブルに追加される record_id
/transaction_id
列および record_timestamp
列も含めることができます。
実動モデルの場合、CSV ファイルをアップロードするか、エンドポイントを使用してモデル・トランザクションを送信することにより、データをインポートできます。
エンドポイントの使用
本番モデルでは、評価可能な形式でデータを提供するために使用できるエンドポイントがサポートされています。 ペイロード・ロギング・エンドポイントを使用して公平性およびドリフト評価の評価要求を送信し、フィードバック・ロギング・エンドポイントを使用して品質評価のフィードバック・データを提供することができます。 CSV ファイルをアップロードして、モデル評価用のデータを提供することもできます。 データ・フォーマットについて詳しくは、 モデル評価のデータの管理を参照してください。
公平性評価の結果を確認するために使用できる、デバイアスされたトランザクションのエンドポイントもサポートされている。 バイアス緩和済みトランザクション・エンドポイントは、ペイロード・データにアクティブなバイアス緩和を適用して、モデル内のバイアスを検出します。 アクティブなバイアス緩和について詳しくは、 バイアス緩和済みトランザクションの確認を参照してください。
以下の手順を使用して、エンドポイントを持つモデル評価のモデルトランザクションを送信することができます:
- モニター構成ページで、 「エンドポイント」 タブを選択します。
- CSV ファイルを使用してペイロード・データをアップロードする場合は、 「ペイロード・データのアップロード」をクリックします。
- CSV ファイルを使用してフィードバック・データをアップロードする場合は、 「フィードバック・データのアップロード」をクリックします。
- 「モデル情報」 パネルで、 「エンドポイント」をクリックします。
- 「エンドポイント」 メニューから、使用するエンドポイントのタイプを選択します。
- 「コード言語」 メニューから、使用するコード・スニペットのタイプを選択します。
- コード・スニペットをコピーし、ノートブックまたはアプリケーションでコードを実行するには、クリップボードにコピー'をクリックします。
Pythonでペイロードデータを記録する
Watson OpenScale のEndpoints メニューからペイロード・データ・エンドポイントを選択すると、ペイロード・データをログに記録する方法を次のコード・スニペットで示すことができます:
from ibm_cloud_sdk_core.authenticators import IAMAuthenticator
from ibm_watson_openscale import APIClient
service_credentials = {
"apikey": "$API_KEY",
"url": "{$WOS_URL}"
}
authenticator = IAMAuthenticator(
apikey=service_credentials["apikey"],
url="https://iam.cloud.ibm.com/identity/token"
)
SERVICE_INSTANCE_ID = "{$WOS_SERVICE_INSTANCE_ID}"
wos_client = APIClient(authenticator=authenticator, service_instance_id=SERVICE_INSTANCE_ID, service_url=service_credentials["url"])
from ibm_watson_openscale.data_sets import DataSetTypes, TargetTypes
# Put your subscription ID here
SUBSCRIPTION_ID = "{$SUBSCRIPTION_ID}"
payload_logging_data_set_id = wos_client.data_sets.list(type=DataSetTypes.PAYLOAD_LOGGING, target_target_id=SUBSCRIPTION_ID, target_target_type=TargetTypes.SUBSCRIPTION).result.data_sets[0].metadata.id
from ibm_watson_openscale.supporting_classes.payload_record import PayloadRecord
# Put your data here
REQUEST_DATA = {
"parameters": {
"template_variables": {
"{$TEMPLATE_VARIABLE_1}": "$TEMPLATE_VARIABLE_1_VALUE",
"{$TEMPLATE_VARIABLE_2}": "$TEMPLATE_VARIABLE_2_VALUE"
}
},
"project_id": "$PROJECT_ID"
}
RESPONSE_DATA = {
"results": [
{
"generated_text": "$GENERATED_TEXT"
}
]
}
RESPONSE_TIME = $RESPONSE_TIME
wos_client.data_sets.store_records(data_set_id=payload_logging_data_set_id, request_body=[PayloadRecord(request=REQUEST_DATA, response=RESPONSE_DATA, response_time=RESPONSE_TIME)])
"project_id": "$PROJECT_ID"
は、プロジェクトで評価するためのペイロードデータを記録することを指定します。 スペースで評価されたペイロードデータを記録するには、代わりに「"space_id": "$SPACE_ID"
値を指定することができる。 プロジェクトとスペースの「Manage」タブを使用して、モデルのプロジェクトまたはスペースIDを特定することができます。
Pythonでフィードバックデータを記録する
Watson OpenScale のEndpoints メニューからフィードバック・データのエンドポイントを選択すると、以下のコード・スニペットを使ってフィードバック・データのログを取る方法を示すことができます:
from ibm_cloud_sdk_core.authenticators import IAMAuthenticator
from ibm_watson_openscale import APIClient
from ibm_watson_openscale.supporting_classes.enums import DataSetTypes, TargetTypes
service_credentials = {
"apikey": "$API_KEY",
"url": "{$WOS_URL}"
}
authenticator = IAMAuthenticator(
apikey=service_credentials["apikey"],
url="https://iam.cloud.ibm.com/identity/token"
)
SERVICE_INSTANCE_ID = "{$WOS_SERVICE_INSTANCE_ID}"
wos_client = APIClient(authenticator=authenticator, service_instance_id=SERVICE_INSTANCE_ID, service_url=service_credentials["url"])
subscription_id = "{$SUBSCRIPTION_ID}"
feedback_dataset_id = wos_client.data_sets.list(type=DataSetTypes.FEEDBACK, target_target_id=subscription_id, target_target_type=TargetTypes.SUBSCRIPTION).result.data_sets[0].metadata.id
fields = [
"{$TEMPLATE_VARIABLE_1}",
"{$TEMPLATE_VARIABLE_2}",
"{$LABEL_COLUMN}",
"_original_prediction"
]
values = [
[
"$TEMPLATE_VARIABLE_1_VALUE",
"$TEMPLATE_VARIABLE_2_VALUE",
"$LABEL_COLUMN_VALUE",
"$GENERATED_TEXT_VALUE"
]
]
wos_client.data_sets.store_records(
data_set_id=feedback_dataset_id,
request_body=[{"fields": fields, "values": values}],
background_mode=False
)
親トピック モデル評価のためのデータ管理