View a markdown version of this page

使用 ModelBuilder 部署 MLflow 模型 - 亚马逊 SageMaker AI
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 ModelBuilder 部署 MLflow 模型

您可以使用 SageMaker Amazon AI 模型生成器将 mlFlow 模型部署到 SageMaker 人工智能终端节点。有关 Amazon A SageMaker I 模型生成器的更多信息,请参阅使用在 Amazon A SageMaker I 中创建模型 ModelBuilder

ModelBuilder 是一个 Python 类,它接收框架模型或用户指定的推理规范,并将其转换为可部署的模型。有关该ModelBuilder课程的更多详细信息,请参阅ModelBuilder

要使用 ModelBuilder 部署 MLflow 模型,请在 model_metadata["MLFLOW_MODEL_PATH"] 属性中提供 MLflow 构件的路径。请继续阅读有关有效模型路径输入格式的更多信息:

注意

如果您以 MLflow 运行 ID 或 MLflow 模型注册表路径的形式提供模型构件路径,则还必须通过 model_metadata["MLFLOW_TRACKING_ARN"] 属性指定跟踪服务器 ARN。

在模型元数据中需要 ARN 的模型路径

以下模型路径要求在 model_metadata 中指定 ARN 以进行部署:

在模型元数据中不需要 ARN 的模型路径

以下模型路径无需在 model_metadata 中指定 ARN 以进行部署:

  • 本地模型路径:/Users/me/path/to/local/model

  • Amazon S3 模型路径:s3://amzn-s3-demo-bucket/path/to/model

  • 模型软件包 ARN:arn:aws:sagemaker:region:account-id:mlflow-tracking-server/tracking-server-name

有关 mlFlow 模型部署如何与亚马逊 A SageMaker I 配合使用的更多信息,请参阅 mlFlo w 文档中的将 mlFlow 模型部署到亚马逊 SageMaker AI

如果使用 Amazon S3 路径,可以通过以下命令找到注册模型的路径:

registered_model = client.get_registered_model(name='AutoRegisteredModel') source_path = registered_model.latest_versions[0].source

下面的示例概述了如何使用 ModelBuilder 和 MLflow 模型注册表路径部署 MLflow 模型。由于该示例以 MLflow 模型注册表路径的形式提供模型构件路径,因此调用 ModelBuilder 时还必须通过 model_metadata["MLFLOW_TRACKING_ARN"] 属性指定跟踪服务器 ARN。

重要

你必须使用 Pyth SageMaker on 软件开发工具包 2.224.0 或更高版本才能使用。ModelBuilder

注意

请参考以下代码示例。有关如何部署已注册 MLflow 模型的端到端示例,请参阅 使用 Jupyter Notebook 示例的 MLflow 教程

from sagemaker.serve import ModelBuilder from sagemaker.serve.mode.function_pointers import Mode from sagemaker.serve import SchemaBuilder my_schema = SchemaBuilder( sample_input=sample_input, sample_output=sample_output ) model_builder = ModelBuilder( mode=Mode.SAGEMAKER_ENDPOINT, schema_builder=my_schema, role_arn="Your-service-role-ARN", model_metadata={ # both model path and tracking server ARN are required if you use an mlflow run ID or mlflow model registry path as input "MLFLOW_MODEL_PATH": "models:/sklearn-model/1" "MLFLOW_TRACKING_ARN": "arn:aws:sagemaker:region:account-id:mlflow-tracking-server/tracking-server-name" } ) model = model_builder.build() predictor = model.deploy( initial_instance_count=1, instance_type="ml.c6i.xlarge" )

要维护使用 ModelBuilder 部署的 MLflow 模型的任务流水线追踪,您必须拥有以下 IAM 权限:

  • sagemaker:CreateArtifact

  • sagemaker:ListArtifacts

  • sagemaker:AddAssociation

  • sagemaker:DescribeMLflowTrackingServer

重要

任务流水线追踪为可选项。如果没有与任务流水线追踪相关的权限,则部署成功。如果未配置权限,则在调用 model.deploy() 时会出现任务流水线追踪权限错误。不过,端点部署仍会成功,您可以直接与模型端点进行交互。如果配置了上述权限,就会自动创建和存储任务流水线追踪信息。

更多信息和端到端示例,请参阅 使用 Jupyter Notebook 示例的 MLflow 教程