使用 ModelBuilder 部署 MLflow 模型 - 亚马逊 SageMaker AI

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

使用 ModelBuilder 部署 MLflow 模型

您可以使用 Amazon SageMaker AI Model Builder 将 MLflow 模型部署到 SageMaker AI 端点。有关 Amazon SageMaker AI Model Builder 的更多信息,请参阅使用 ModelBuilder 在 Amazon SageMaker AI 中创建模型

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

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

注意

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

需要 model_metadata 中 ARN 的模型路径

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

model_metadata 中不需要 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 模型部署如何与 Amazon SageMaker AI 配合使用的详细信息,请参阅 MLflow 文档中的将 MLflow 模型部署到 Amazon 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。

重要

您必须使用 2.224.0 或更高版本的 SageMaker Python SDK 才能使用 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 教程