您可以使用 Amazon SageMaker 记录有效载荷和反馈数据,并测量性能准确性、偏差检测、可解释性和自动纠偏功能,以便进行模型评估。
模型评估支持以下 Amazon SageMaker 框架:
表 1. 框架支持详细信息
框架 | 问题类型 | 数据类型 |
---|---|---|
本机 | 分类 | 结构化 |
本机 | 回归1 | 结构化 |
1对回归模型的支持不包含漂移量级。
添加亚马逊SageMaker
您可以使用以下方法之一配置模型评估,以便与 AmazonSageMaker配合使用:
- 首次添加机器学习提供程序时,可以使用配置界面。 有关更多信息,请参阅指定 Amazon SageMaker 实例。
- 还可以使用 Python SDK 添加机器学习提供程序。 如果要拥有多个提供程序,必须使用此方法。 有关更多信息,请参阅添加 Amazon SageMaker 机器学习引擎。
样本 Notebook
以下 Notebook 显示如何使用 Amazon SageMaker:
指定 Amazon SageMaker ML 服务实例
配置模型评估的第一步是指定 AmazonSageMaker服务实例。 Amazon SageMaker 服务实例是存储 AI 模型和部署的位置。
连接 Amazon SageMaker 服务实例
亚马逊SageMaker服务实例中的人工智能模型和部署。 要连接服务,请转到配置"选项卡,添加机器学习提供程序,然后点击编辑"图标。 除了名称和描述以及环境是预生产还是生产之外,还必须提供特定于此服务实例类型的以下信息:
- 访问密钥标识:AWS 访问密钥标识
aws_access_key_id
,用于验证您的身份并认证和授权您对 AWS 发出的调用。 - 私密访问密钥:AWS 私密访问密钥
aws_secret_access_key
,用于验证您的身份并认证和授权您对 AWS 发出的调用。 - 区域:输入在其中创建访问密钥标识的区域。 密钥将在其创建所在的区域中存储和使用,而不能传输到其他区域。
现在您已准备好选择已部署模型并配置监视器。 您部署的模型会列在Insights仪表板上,您可以单击 "添加到仪表板"。 选中要监视的部署,然后单击配置。
有关更多信息,请参阅配置监视器。
Amazon SageMaker 机器学习引擎的有效内容日志记录
添加 Amazon SageMaker 机器学习引擎
IBMIBMwatsonx.aiRuntime 引擎通过使用元数据绑定为自定义引擎。 无法IBMIBMwatsonx.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 机器学习引擎 Notebook。
要在有效内容日志记录表中存储请求和响应,请运行以下代码:
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 记录有效内容。
上级主题: 受支持的机器学习引擎,框架和模型