Amazon SageMaker を使用して、ペイロードとフィードバックのデータを記録し、パフォーマンス精度、バイアス検出、説明可能性、およびモデル評価のための自動デビアス機能を測定できます。
以下の Amazon SageMaker フレームワークがモデル評価でサポートされています:
表 1. フレームワークのサポート詳細
フレームワーク | 問題のタイプ | データ・タイプ |
---|---|---|
ネイティブ | 機密区分 | 構造化 |
ネイティブ | 回帰1 | 構造化 |
1 回帰モデルのサポートにはドリフト絶対値は含まれません。
AmazonSageMakerの追加
AmazonSageMakerで動作するようにモデル評価を設定するには、次のいずれかの方法を使用します:
- 機械学習プロバイダーを初めて追加するときは、設定インターフェイスを使うことができる。 詳しくは、Amazon SageMaker インスタンスの指定を参照してください。
- Python SDK を使用して、機械学習プロバイダーを追加することもできます。 複数のプロバイダーが必要な場合は、この方法を使用する必要があります。 詳しくは、 Amazon SageMaker 機械学習エンジンの追加を参照してください。
サンプル・ノートブック
以下のノートブックは、Amazon SageMaker と連携する方法を示しています。
Amazon SageMaker ML サービス・インスタンスの指定
モデル評価を設定する最初のステップは、AmazonSageMakerサービスインスタンスを指定することです。 Amazon SageMaker サービス・インスタンスは、AI モデルとデプロイメントの格納場所となります。
Amazon SageMaker サービス・インスタンスの接続
AmazonSageMakerサービスインスタンスにおけるAIモデルとデプロイメント。 サービスを接続するには、「Configure'タブで機械学習プロバイダーを追加し、「Edit'アイコンをクリックする。 名前と説明、および環境が 実動前 であるか 生産であるかに加えて、このタイプのサービス・インスタンスに以下の固有情報を提供する必要があります:
- アクセス・キー ID: AWS のアクセス・キー ID
aws_access_key_id
。これにより、本人確認を行い、AWS に対する呼び出しを認証および許可します。 - シークレット・アクセス・キー: AWS のシークレット・アクセス・キー
aws_secret_access_key
。本人確認を行い、AWS に対する呼び出しを認証および許可するためには、これが必要です。 - 地域: アクセス・キー ID が作成された地域を入力します。 キーが作成された地域にキーは保管され、そこで使用されます。他の地域に転送することはできません。
これで、デプロイされたモデルを選択し、モニターを構成する準備ができました。 ダッシュボードに追加]をクリックすると、デプロイされたモデルがInsightsダッシュボードに表示されます。 モニターするデプロイメントを選択し、 構成をクリックしてください。
詳しくは、モニタリングの構成を参照してください。
Amazon SageMaker 機械学習エンジンのペイロード・ロギング
Amazon SageMaker 機械学習エンジンの追加
IBM以外のwatsonx.aiランタイム・エンジンは、メタデータを使用してカスタムとしてバインドされます。 IBM以外のwatsonx.aiRuntime サービスと直接統合することはできません。
SAGEMAKER_ENGINE_CREDENTIALS = {
'access_key_id':””,
'secret_access_key':””,
'region': '}
wos_client.service_providers.add(
name="AWS",
description="AWS Service Provider",
service_type=ServiceTypes.AMAZON_SAGEMAKER,
credentials=SageMakerCredentials(
access_key_id=SAGEMAKER_ENGINE_CREDENTIALS['access_key_id'],
secret_access_key=SAGEMAKER_ENGINE_CREDENTIALS['secret_access_key'],
region=SAGEMAKER_ENGINE_CREDENTIALS['region']
),
background_mode=False
).result
サービス・サブスクリプションを表示するには、次のコードを実行します。
client.service_providers.list()
Amazon SageMaker ML サブスクリプションの追加
サブスクリプションを追加するには、以下のコードを実行します。
asset_deployment_details = wos_client.service_providers.list_assets(data_mart_id=data_mart_id, service_provider_id=service_provider_id).result
asset_deployment_details
deployment_id='684e35eee8a479470cee05983e1f9d64'
for model_asset_details in asset_deployment_details['resources']:
if model_asset_details['metadata']['guid']==deployment_id:
break
aws_asset = Asset(
asset_id=model_asset_details['entity']['asset']['asset_id'],
name=model_asset_details['entity']['asset']['name'],
url=model_asset_details['entity']['asset']['url'],
asset_type=model_asset_details['entity']['asset']['asset_type'] if 'asset_type' in model_asset_details['entity']['asset'] else 'model',
problem_type=ProblemType.BINARY_CLASSIFICATION,
input_data_type=InputDataType.STRUCTURED,
)
from ibm_watson_openscale.base_classes.watson_open_scale_v2 import ScoringEndpointRequest
deployment_scoring_endpoint = model_asset_details['entity']['scoring_endpoint']
scoring_endpoint = ScoringEndpointRequest(url = model_asset_details['entity']['scoring_endpoint']['url'] )
deployment = AssetDeploymentRequest(
deployment_id=model_asset_details['metadata']['guid'],
url=model_asset_details['metadata']['url'],
name=model_asset_details['entity']['name'],
#description="asset['entity']['description']",
deployment_type=model_asset_details['entity']['type'],
scoring_endpoint = scoring_endpoint
)
asset_properties = AssetPropertiesRequest(
label_column="Risk",
prediction_field='predicted_label',
probability_fields=['score'],
training_data_reference=training_data_reference,
training_data_schema=None,
input_data_schema=None,
output_data_schema=None,
feature_fields=feature_columns,
categorical_fields=categorical_columns
)
subscription_details = wos_client.subscriptions.add(
data_mart_id=data_mart_id,
service_provider_id=service_provider_id,
asset=aws_asset,
deployment=deployment,
asset_properties=asset_properties,
background_mode=False
).result
サブスクリプション・リストを取得するには、以下のコマンドを実行します。
subscription_id = subscription_details.metadata.id
subscription_id
details: wos_client.subscriptions.get(subscription_id).result.to_dict()
ペイロード・ロギングの有効化
ペイロード・ロギングを有効にするには、次のコマンドを実行します。
request_data = {'fields': feature_columns,
'values': [[payload_values]]}
ロギングの詳細を取得するには、次のコマンドを実行します。
response_data = {'fields': list(result['predictions'][0]),
'values': [list(x.values()) for x in result['predictions']]}
評価とペイロード・ロギング
- モデルを評価します。 完全なサンプルについては、SageMaker 機械学習エンジン・ノートブックを参照してください。
ペイロード・ロギング・テーブルに要求と応答を格納するには、以下のコードを実行します。
wos_client.data_sets.store_records(data_set_id=payload_data_set_id, request_body=[PayloadRecord(
scoring_id=str(uuid.uuid4()),
request=request_data,
response=response_data,
response_time=460
)])
Python 以外の言語の場合は、REST API を使用してペイロードをログに記録することもできます。