0 / 0
Go back to the English version of the documentation
定制机器学习框架
Last updated: 2024年11月22日
定制机器学习框架

您可以使用自定义机器学习框架来完成有效载荷记录、反馈记录,并测量性能准确性、运行时偏差检测、可解释性、漂移检测和模型评估的自动偏差功能。 自定义机器学习框架必须等同于IBM watsonx.aiRuntime。

以下自定义机器学习框架支持模型评估:

框架支持详细信息
框架 问题类型 数据类型
等同于IBM watsonx.aiRuntime 分类 结构化
等同于IBM watsonx.aiRuntime 回归 结构化

对于不等同于IBM watsonx.aiRuntime 的模型,您必须为自定义模型创建一个封装器,以暴露所需的 REST API 端点。 您还必须在 Watson OpenScale 与实际定制机器学习引擎之间桥接输入/输出。

何时最适合选择定制机器学习引擎?

在以下情况成立时,定制机器学习引擎是最佳选择:

  • 您未使用任何立即可用的产品来为机器学习模型提供服务。 您有一个为模型服务的系统,但该系统并不直接支持模型评估功能。
  • 您使用的3rd-party供应商提供的服务引擎还不支持模型评估。 在这种情况下,考虑开发定制机器学习引擎作为原始或本机部署的包装程序。

运作方式

下图显示定制环境支持:

定制工作图表的显示方式。 它显示具有客户机 API 和 Watson OpenScale API 的定制环境的框

还可以引用以下链接:

Watson OpenScale 有效内容日志记录 API

Python 客户机 SDK

Python SDK

  • 模型支持监视器的输入条件

    在以下示例中,模型将特征向量 (本质上是指定字段及其值的集合) 作为输入。

    {
    "fields": [
        "name",
        "age",
        "position"
    ],
    "values": [
        [
            "john",
            33,
            "engineer"
        ],
        [
            "mike",
            23,
            "student"
        ]
    ]
    
    

    可以对 “age” 字段进行公平性评估。

    如果输入是一个从输入特征空间转换而来的张量或矩阵,则无法对该模型进行评估。 相应地,无法处理具有文本或图像输入的深度学习模型来检测和缓解偏见。

    此外,必须装入训练数据以支持可解释性。

    对于文本的可解释性,完整文本应该是其中某个特征。 当前发行版中不支持定制模型的图像的可解释性。

  • 模型支持监视器的输出条件

    模型输出输入特征向量以及该模型中各种类的预测概率。

    {
    "fields": [
        "name",
        "age",
        "position",
        "prediction",
        "probability"
    ],
    "labels": [
        "personal",
        "camping"
    ],
    "values": [
        [
            "john",
            33,
            "engineer",
            "personal",
            [
                0.6744664422398081,
                0.3255335577601919
            ]
        ],
        [
            "mike",
            23,
            "student"
            "camping",
            [
                0.2794765664946941,
                0.7205234335053059
            ]
        ]
    ]
    }
    

    在此示例中, "personal”“camping” 是可能的类,并且会将每个评分输出中的评分分配给这两个类。 如果缺少预测概率,那么偏差检测起作用,但自动除偏不起作用。

    您可以通过实时评分端点访问评分输出,您可以使用 REST API 调用该端点进行模型评估。 对于 CUSTOMML、AmazonSageMaker,和IBM watsonx.aiRuntime,Watson OpenScale可直接连接到本地评分端点。

定制机器学习引擎

定制机器学习引擎提供了机器学习模型和 Web 应用程序的基础结构和托管功能。 支持模型评估的定制机器学习引擎必须符合以下要求:

  • 公开两种类型的 REST API 端点:

    • 发现端点(通过 GET 获取部署和详细信息的列表)
    • 评分端点(联机和实时评分)
  • 所有端点都需要兼容要支持的 Swagger 规范。

  • 部署的输入有效内容和输出必须符合规范中描述的 JSON 文件格式。

Watson OpenScale 仅支持 BasicAuthnoneapiKey 认证格式。

要查看 REST API 端点规范,请参阅REST API

添加自定义机器学习引擎

您可以使用以下方法之一配置模型评估,使其与自定义机器学习提供程序协同工作:

  • 您可以使用配置界面添加第一个自定义机器学习提供程序。 有关更多信息,请参阅指定定制机器学习实例
  • 还可以使用 Python SDK 添加机器学习提供程序。 如果要拥有多个提供程序,必须使用此方法。 有关更多信息,请参阅 添加定制机器学习引擎

进一步探索

您可以使用自定义机器学习监控器来创建与其他服务交互的方式。

指定定制 ML 服务实例

配置模型评估的第一步是指定服务实例。 服务实例是存储 AI 模型和部署的位置。

连接定制服务实例

人工智能模型和部署连接在一个服务实例中,用于模型评估。 您可以连接定制服务。 要连接服务,请转到配置"配置选项卡图标选项卡,添加机器学习提供程序,然后点击编辑"配置选项卡图标图标。 除了名称,描述和指定 生产前生产 环境类型外,还必须提供特定于此类型的服务实例的以下信息:

  • 用户名
  • 密码
  • 使用格式 https://host:port的 API 端点,例如 https://custom-serve-engine.example.net:8443

选择通过请求列表还是通过输入个别评分端点来连接到部署。

请求部署列表

如果选择了请求部署列表磁贴,请输入凭证和 API 端点,然后保存配置。

提供个别评分端点

如果选择了输入个别评分端点磁贴,请输入 API 端点的凭证,然后保存配置。

现在您已准备好选择已部署模型并配置监视器。 您部署的模型会列在Insights仪表板上,您可以单击 "添加到仪表板"。 选中要监视的部署,然后单击配置

有关更多信息,请参阅配置监视器

定制机器学习引擎示例

使用以下构想来设置您自己的定制机器学习引擎。

Python 和 flask

可以使用 Python 和 flask 来提供 scikit-learn 模型。

要生成漂移检测模型,必须在 Notebook 中使用 scikit-learn V0.20.2。

可以在本地部署该应用程序以进行测试,并将其作为 IBM Cloud上的应用程序。

Node.js

您还可以在此处找到以 Node.js 编写的定制机器学习引擎的示例

End2end 代码模式

代码模式显示了自定义引擎部署和与模型评估集成的end2end示例。

定制机器学习引擎的有效内容日志记录

要为IBMIBMwatsonx.aiRuntime 或自定义机器学习引擎配置有效负载日志,必须将 ML 引擎绑定为自定义引擎。

添加定制机器学习引擎

non-watsonx.aiRuntime 引擎是通过使用元数据作为自定义添加的,不存在与非IBM watsonx.aiRuntime 服务的直接集成。 您可以使用 "wos_client.service_providers.add方法为模型评估添加多个机器学习引擎。

CUSTOM_ENGINE_CREDENTIALS = {
    "url": "***",
    "username": "***",
    "password": "***",
}

wos_client.service_providers.add(
        name=SERVICE_PROVIDER_NAME,
        description=SERVICE_PROVIDER_DESCRIPTION,
        service_type=ServiceTypes.CUSTOM_MACHINE_LEARNING,
        credentials=CustomCredentials(
            url= CUSTOM_ENGINE_CREDENTIALS['url'],
            username= CUSTOM_ENGINE_CREDENTIALS['username'],
            password= CUSTOM_ENGINE_CREDENTIALS['password'],
        ),
        background_mode=False
    ).result

可以使用以下命令来查看服务提供者:

client.service_providers.get(service_provider_id).result.to_dict()

通用 ML 绑定

使用 API 密钥配置安全性

要为自定义机器学习引擎配置安全性,您可以使用IBM Cloud和IBM Cloud Pak for Data作为模型评估的身份验证提供商。 您可以使用https://iam.cloud.ibm.com/identity/tokenURL 为IBM Cloud生成 IAM 令牌,使用https://<$hostname>/icp4d-api/v1/authorizeURL 为Cloud Pak for Data 生成令牌。

您可以使用 POST /v1/deployments/{deployment_id}/online 请求来实现以下格式的评分 API:

请求

{
	"input_data": [{
		"fields": [
			"name",
			"age",
			"position"
		],
		"values": [
			[
			"john",
			 33,
			"engineer"
			],
			[
			"mike",
			 23,
			"student"
			]
		]
	}]
}

响应

{
	"predictions": [{
		"fields": [
			"name",
			"age",
			"position",
			"prediction",
			"probability"
		],
		"labels": [
			"personal",
			"camping"
		],
		"values": [
			[
			"john",
			 33,
			"engineer",
			"personal",
			[
			0.6744664422398081,
			0.32553355776019194
			]
			],
			[
			"mike",
			 23,
			"student",
			"camping",
			[
			0.2794765664946941,
			0.7205234335053059
			]
			]
		]
	}]
}

添加定制预订

要添加定制预订,请运行以下命令:

custom_asset = Asset(
        asset_id=asset['entity']['asset']['asset_id'],
        name=asset['entity']['asset']['name'],
        url = "dummy_url",
        asset_type=asset['entity']['asset']['asset_type'] if 'asset_type' in asset['entity']['asset'] else 'model',
        problem_type=ProblemType.MULTICLASS_CLASSIFICATION,
        input_data_type=InputDataType.STRUCTURED,
    )
deployment = AssetDeploymentRequest(
        deployment_id=asset['metadata']['guid'],
        url=asset['metadata']['url'],
        name=asset['entity']['name'],
        deployment_type=asset['entity']['type'],
        scoring_endpoint =  scoring_endpoint
    )
asset_properties = AssetPropertiesRequest(
        prediction_field='predicted_label',
        probability_fields = ["probability"],
        training_data_reference=None,
        training_data_schema=None,
        input_data_schema=None,
        output_data_schema=output_schema,
    )
result = ai_client.subscriptions.add(
        data_mart_id=cls.datamart_id,
        service_provider_id=cls.service_provider_id,
        asset=custom_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']]}

评分和有效内容日志记录

  • 对模型评分。

  • 在有效内容日志记录表中存储请求和响应

    records_list = [PayloadRecord(request=request_data, response=response_data, response_time=response_time), PayloadRecord(request=request_data, response=response_data, response_time=response_time)]
    
    subscription.payload_logging.store(records=records_list)
    

对于除 Python 以外的其他语言,您还可以使用 REST API 来记录有效内容。

上级主题: 受支持的机器学习引擎,框架和模型

Generative AI search and answer
These answers are generated by a large language model in watsonx.ai based on content from the product documentation. Learn more