mlflow.sagemaker

The mlflow.sagemaker 模块提供了一个 API,用于将 MLflow 模型部署到 Amazon SageMaker。

class mlflow.sagemaker.SageMakerDeploymentClient(target_uri)[source]

Bases: mlflow.deployments.base.BaseDeploymentClient

初始化 SageMaker 的部署客户端。默认区域和假定的角色 ARN 将根据 target_uri 的值设置。

此类旨在取代 mlflow.sagemaker 实时服务 API 的其他部分。它也被设计为通过 mlflow.deployments 模块使用。这意味着您可以使用 mlflow deployments CLI 部署到 SageMaker,并通过 mlflow.deployments.get_deploy_client 函数获取客户端。

参数

target_uri

一个遵循以下任一格式的 URI

  • sagemaker:这将将默认区域设置为 us-west-2,并将默认假定角色 ARN 设置为 None

  • sagemaker:/region_name:这将将默认区域设置为 region_name,并将默认假定角色 ARN 设置为 None

  • sagemaker:/region_name/assumed_role_arn:这将将默认区域设置为 region_name,并将默认假定角色 ARN 设置为 assumed_role_arn

当提供的 assumed_role_arn 没有 region_name 时,将引发 MlflowException。

create_deployment(name, model_uri, flavor=None, config=None, endpoint=None)[source]

在 AWS SageMaker 上部署 MLflow 模型。当前活动的 AWS 账户必须设置了正确的权限。

此函数创建一个 SageMaker 端点。有关此端点接受的输入数据格式的更多信息,请参阅 MLflow 部署工具文档

参数
  • name – 部署应用程序的名称。

  • model_uri

    要部署到 SageMaker 的 MLflow 模型的 URI 格式位置。例如

    • /Users/me/path/to/local/model

    • relative/path/to/local/model

    • s3://my_bucket/path/to/model

    • runs:/<mlflow_run_id>/run-relative/path/to/model

    • models:/<model_name>/<model_version>

    • models:/<model_name>/<stage>

    For more information about supported URI schemes, see Referencing Artifacts.

  • flavor – 用于部署的模型的 flavor 名称。必须是 None 或 mlflow.sagemaker.SUPPORTED_DEPLOYMENT_FLAVORS 中的一个。如果为 None,则自动从模型的可用 flavors 中选择一个。如果指定的 flavor 不存在或不支持部署,将引发异常。

  • config

    配置参数。支持的参数如下

    • assume_role_arn:要假定的 IAM 跨账户角色的名称,以便将 SageMaker 部署到另一个 AWS 账户。如果未在此参数中指定,将使用 target_uri 中给出的角色。如果 target_uri 中未给出角色,则默认为 us-west-2

    • execution_role_arn:授予 SageMaker 服务权限以访问指定的 Docker 镜像和包含 MLflow 模型工件的 S3 存储桶的 IAM 角色的名称。如果未指定,将使用当前假定的角色。此执行角色在从指定的 MLflow 模型创建 SageMaker 模型时传递给 SageMaker 服务。它作为 SageMaker CreateModel API 调用ExecutionRoleArn 参数传递。此角色不会对任何其他调用进行假定。有关创建模型的 SageMaker 执行角色的更多信息,请参阅 https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html

    • bucket:模型工件将存储到的 S3 存储桶。默认为与 SageMaker 兼容的存储桶名称。

    • image_url:模型应部署到的 ECR 托管的 Docker 镜像的 URL,由 mlflow sagemaker build-and-push-container 生成。此参数也可以通过环境变量 MLFLOW_SAGEMAKER_DEPLOY_IMG_URL 指定。

    • region_name:要部署应用程序的 AWS 区域名称。如果未指定,请使用 target_uri 中给出的区域名称。如果 target_uri 中也未指定,则默认为 us-west-2

    • archive:如果为 True,则会保留任何预先存在的 SageMaker 应用程序资源(即,在 mlflow.sagemaker.DEPLOYMENT_MODE_REPLACE 模式下部署的结果)。这些资源可能包括与应用程序端点先前版本关联的未使用的 SageMaker 模型和端点配置。如果为 False,则删除这些资源。为了使用 archive=False,必须以 synchronous=True 同步执行 create_deployment()。默认为 False

    • instance_type:用于部署模型的 SageMaker ML 实例的类型。支持的实例类型列表,请参阅 https://aws.amazon.com/sagemaker/pricing/instance-types/。默认为 ml.m4.xlarge

    • instance_count:用于部署模型的 SageMaker ML 实例的数量。默认为 1

    • synchronous:如果为 True,此函数将阻塞,直到部署过程成功或遇到不可恢复的失败。如果为 False,此函数将在启动部署过程后立即返回。它不会等待部署过程完成;在这种情况下,调用者负责通过原生 SageMaker API 或 AWS 控制台监控待处理部署的健康状况和状态。默认为 True

    • timeout_seconds:如果 synchronousTrue,如果未达到明确的结果(成功或失败),部署过程将在指定的秒数后返回。函数返回后,调用者负责使用原生 SageMaker API 或 AWS 控制台监控待处理部署的状态。如果 synchronousFalse,则忽略此参数。默认为 300

    • vpc_config:一个字典,指定在创建与此应用程序关联的新 SageMaker 模型时使用的 VPC 配置。此参数的可接受值与 SageMaker boto3 客户端的 create_model 方法 中的 VpcConfig 参数相同。有关更多信息,请参阅 https://docs.aws.amazon.com/sagemaker/latest/dg/API_VpcConfig.html。默认为 None

    • data_capture_config:一个字典,指定在创建与此应用程序关联的新 SageMaker 模型时使用的数据捕获配置。有关更多信息,请参阅 https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DataCaptureConfig.html。默认为 None

    • variant_name:一个字符串,指定创建生产变体时所需的名称。默认为 None

    • async_inference_config:一个字典,指定异步推理配置

    • serverless_config:一个字典,指定无服务器配置

    • env:一个字典,指定要为部署模型设置的环境变量(键值对)。默认为 None

    • tags:一个键值对字典,表示要为部署模型设置的附加标签。默认为 None

  • endpoint – (可选)要在其下创建部署的端点。当前不受支持

Python 示例
from mlflow.deployments import get_deploy_client

vpc_config = {
    "SecurityGroupIds": [
        "sg-123456abc",
    ],
    "Subnets": [
        "subnet-123456abc",
    ],
}
config = dict(
    assume_role_arn="arn:aws:123:role/assumed_role",
    execution_role_arn="arn:aws:456:role/execution_role",
    bucket_name="my-s3-bucket",
    image_url="1234.dkr.ecr.us-east-1.amazonaws.com/mlflow-test:1.23.1",
    region_name="us-east-1",
    archive=False,
    instance_type="ml.m5.4xlarge",
    instance_count=1,
    synchronous=True,
    timeout_seconds=300,
    vpc_config=vpc_config,
    variant_name="prod-variant-1",
    env={"DISABLE_NGINX": "true", "GUNICORN_CMD_ARGS": '"--timeout 60"'},
    tags={"training_timestamp": "2022-11-01T05:12:26"},
)
client = get_deploy_client("sagemaker")
client.create_deployment(
    "my-deployment",
    model_uri="/mlruns/0/abc/model",
    flavor="python_function",
    config=config,
)
命令行示例
mlflow deployments create --target sagemaker:/us-east-1/arn:aws:123:role/assumed_role \
        --name my-deployment \
        --model-uri /mlruns/0/abc/model \
        --flavor python_function\
        -C execution_role_arn=arn:aws:456:role/execution_role \
        -C bucket_name=my-s3-bucket \
        -C image_url=1234.dkr.ecr.us-east-1.amazonaws.com/mlflow-test:1.23.1 \
        -C region_name=us-east-1 \
        -C archive=False \
        -C instance_type=ml.m5.4xlarge \
        -C instance_count=1 \
        -C synchronous=True \
        -C timeout_seconds=300 \
        -C variant_name=prod-variant-1 \
        -C vpc_config='{"SecurityGroupIds": ["sg-123456abc"], \
        "Subnets": ["subnet-123456abc"]}' \
        -C data_capture_config='{"EnableCapture": True, \
        'InitialSamplingPercentage': 100, 'DestinationS3Uri": 's3://my-bucket/path', \
        'CaptureOptions': [{'CaptureMode': 'Output'}]}'
        -C env='{"DISABLE_NGINX": "true", "GUNICORN_CMD_ARGS": ""--timeout 60""}' \
        -C tags='{"training_timestamp": "2022-11-01T05:12:26"}' \
create_endpoint(name, config=None)[source]

使用指定的靶场创建端点。默认情况下,此方法应阻塞,直到创建完成(即可以在端点内创建部署)。在发生冲突的情况下(例如,由于与现有端点冲突而无法创建指定的端点),将引发 mlflow.exceptions.MlflowException。有关异步创建和其他配置支持的更多详细信息,请参阅特定于靶场插件的文档。

参数
  • name – 用于端点的唯一名称。如果存在具有相同名称的另一个端点,则引发 mlflow.exceptions.MlflowException

  • config – (可选)包含端点目标特定配置的字典。

返回

对应于创建的端点的字典,其中必须包含 'name' 键。

delete_deployment(name, config=None, endpoint=None)[source]

删除 SageMaker 应用程序。

参数
  • name – 部署应用程序的名称。

  • config

    配置参数。支持的参数如下

    • assume_role_arn:要假定的 IAM 角色的名称,以便删除 SageMaker 部署。

    • region_name:应用程序部署所在的 AWS 区域的名称。默认为 us-west-2 或在 target_uri 中提供的区域。

    • archive:如果为 True,则会保留与指定应用程序关联的资源,例如其关联的模型和端点配置。如果为 False,则删除这些资源。为了使用 archive=False,必须以 synchronous=True 同步执行 delete()。默认为 False

    • synchronous:如果为 True,此函数将阻塞,直到删除过程成功或遇到不可恢复的失败。如果为 False,此函数将在启动删除过程后立即返回。它不会等待删除过程完成;在这种情况下,调用者负责通过原生 SageMaker API 或 AWS 控制台监控删除过程的状态。默认为 True

    • timeout_seconds:如果 synchronousTrue,如果未达到明确的结果(成功或失败),删除过程将在指定的秒数后返回。函数返回后,调用者负责使用原生 SageMaker API 或 AWS 控制台监控删除过程的状态。如果 synchronous 为 False,则忽略此参数。默认为 300

  • endpoint – (可选)包含要删除的部署的端点。当前不受支持

Python 示例
from mlflow.deployments import get_deploy_client

config = dict(
    assume_role_arn="arn:aws:123:role/assumed_role",
    region_name="us-east-1",
    archive=False,
    synchronous=True,
    timeout_seconds=300,
)
client = get_deploy_client("sagemaker")
client.delete_deployment("my-deployment", config=config)
命令行示例
mlflow deployments delete --target sagemaker \
        --name my-deployment \
        -C assume_role_arn=arn:aws:123:role/assumed_role \
        -C region_name=us-east-1 \
        -C archive=False \
        -C synchronous=True \
        -C timeout_seconds=300
delete_endpoint(endpoint)[source]

从指定的靶场删除端点。删除应该是幂等的(即,如果重试一个不存在的部署,删除不应失败)。

参数

endpoint – 要删除的端点的名称

explain(deployment_name=None, df=None, endpoint=None)[source]

此函数尚未实现,将在未来推出。

get_deployment(name, endpoint=None)[source]

返回描述指定部署的字典。

如果需要指定区域名称,则必须使用在 target_uri 中包含 AWS 区域的方式初始化插件,例如 sagemaker:/us-east-1

要假定 IAM 角色,必须使用在 target_uri 中包含 AWS 区域和角色 ARN 的方式初始化插件,例如 sagemaker:/us-east-1/arn:aws:1234:role/assumed_role

当检索部署时发生错误时,也将引发 mlflow.exceptions.MlflowException

参数
  • name – 要检索的部署的名称

  • endpoint – (可选)包含要获取的部署的端点。当前不受支持

返回

一个描述指定部署的字典

Python 示例
from mlflow.deployments import get_deploy_client

client = get_deploy_client("sagemaker:/us-east-1/arn:aws:123:role/assumed_role")
client.get_deployment("my-deployment")
命令行示例
mlflow deployments get --target sagemaker:/us-east-1/arn:aws:1234:role/assumed_role \
    --name my-deployment
get_endpoint(endpoint)[source]

返回描述指定端点的字典,如果不存在具有所提供名称的端点,则引发 py:class:mlflow.exception.MlflowException。返回的字典保证包含一个 'name' 键,其中包含端点名称。返回字典的其他字段及其类型可能因靶场而异。

参数

endpoint – 要获取的端点的名称

list_deployments(endpoint=None)[source]

列出部署。此方法返回一个描述每个部署的字典列表。

如果需要指定区域名称,则必须使用在 target_uri 中包含 AWS 区域的方式初始化插件,例如 sagemaker:/us-east-1

要假定 IAM 角色,必须使用在 target_uri 中包含 AWS 区域和角色 ARN 的方式初始化插件,例如 sagemaker:/us-east-1/arn:aws:1234:role/assumed_role

参数

endpoint – (可选)列出指定端点中的部署。当前不受支持

返回

对应于部署的字典列表。

Python 示例
from mlflow.deployments import get_deploy_client

client = get_deploy_client("sagemaker:/us-east-1/arn:aws:123:role/assumed_role")
client.list_deployments()
命令行示例
mlflow deployments list --target sagemaker:/us-east-1/arn:aws:1234:role/assumed_role
list_endpoints()[source]

列出指定靶场中的端点。此方法应返回所有端点的非分页列表(另一种方法是返回一个包含实际端点的 'endpoints' 字段的字典,插件可以指定返回字典中的其他字段,例如 next_page_token 字段用于分页,并接受此方法的 pagination_args 参数以传递与分页相关的参数)。

返回

对应于端点的字典列表。每个字典都保证包含一个包含端点名称的 'name' 键。返回字典的其他字段及其类型可能因靶场而异。

predict(deployment_name=None, inputs=None, endpoint=None, params: Optional[dict[str, typing.Any]] = None)[source]

使用提供的 PyFunc 输入,从指定部署计算预测。

此方法的输入/输出类型与 MLflow PyFunc 预测接口 匹配。

如果需要指定区域名称,则必须使用在 target_uri 中包含 AWS 区域的方式初始化插件,例如 sagemaker:/us-east-1

要假定 IAM 角色,必须使用在 target_uri 中包含 AWS 区域和角色 ARN 的方式初始化插件,例如 sagemaker:/us-east-1/arn:aws:1234:role/assumed_role

参数
  • deployment_name – 要预测的部署的名称。

  • inputs – 要传递给部署或模型端点进行推理的输入数据(或参数)。有关支持的输入类型的完整列表,请参阅 推理 API

  • endpoint – 要预测的端点。当前不受支持

  • params – 调用端点的可选参数。

返回

PyFunc 输出,例如 Pandas DataFrame、Pandas Series 或 NumPy 数组。有关支持的输出类型的完整列表,请参阅 推理 API

Python 示例
import pandas as pd
from mlflow.deployments import get_deploy_client

df = pd.DataFrame(data=[[1, 2, 3]], columns=["feat1", "feat2", "feat3"])
client = get_deploy_client("sagemaker:/us-east-1/arn:aws:123:role/assumed_role")
client.predict("my-deployment", df)
命令行示例
cat > ./input.json <<- input
{"feat1": {"0": 1}, "feat2": {"0": 2}, "feat3": {"0": 3}}
input

mlflow deployments predict \
    --target sagemaker:/us-east-1/arn:aws:1234:role/assumed_role \
    --name my-deployment \
    --input-path ./input.json
update_deployment(name, model_uri, flavor=None, config=None, endpoint=None)[source]

在 AWS SageMaker 上更新部署。此函数可以将新模型替换或添加到现有的 SageMaker 端点。默认情况下,此函数用新模型替换现有模型。当前活动的 AWS 账户必须设置了正确的权限。

参数
  • name – 部署应用程序的名称。

  • model_uri

    要部署到 SageMaker 的 MLflow 模型的 URI 格式位置。例如

    • /Users/me/path/to/local/model

    • relative/path/to/local/model

    • s3://my_bucket/path/to/model

    • runs:/<mlflow_run_id>/run-relative/path/to/model

    • models:/<model_name>/<model_version>

    • models:/<model_name>/<stage>

    For more information about supported URI schemes, see Referencing Artifacts.

  • flavor – 用于部署的模型的 flavor 名称。必须是 None 或 mlflow.sagemaker.SUPPORTED_DEPLOYMENT_FLAVORS 中的一个。如果为 None,则自动从模型的可用 flavors 中选择一个。如果指定的 flavor 不存在或不支持部署,将引发异常。

  • config

    配置参数。支持的参数如下

    • assume_role_arn:要假定的 IAM 跨账户角色的名称,以便将 SageMaker 部署到另一个 AWS 账户。如果未在此参数中指定,将使用 target_uri 中给出的角色。如果 target_uri 中未给出角色,则默认为 us-west-2

    • execution_role_arn:授予 SageMaker 服务权限以访问指定的 Docker 镜像和包含 MLflow 模型工件的 S3 存储桶的 IAM 角色的名称。如果未指定,将使用当前假定的角色。此执行角色在从指定的 MLflow 模型创建 SageMaker 模型时传递给 SageMaker 服务。它作为 SageMaker CreateModel API 调用ExecutionRoleArn 参数传递。此角色不会对任何其他调用进行假定。有关创建模型的 SageMaker 执行角色的更多信息,请参阅 https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html

    • bucket:模型工件将存储到的 S3 存储桶。默认为与 SageMaker 兼容的存储桶名称。

    • image_url:模型应部署到的 ECR 托管的 Docker 镜像的 URL,由 mlflow sagemaker build-and-push-container 生成。此参数也可以通过环境变量 MLFLOW_SAGEMAKER_DEPLOY_IMG_URL 指定。

    • region_name:要部署应用程序的 AWS 区域名称。如果未指定,请使用 target_uri 中给出的区域名称。如果 target_uri 中也未指定,则默认为 us-west-2

    • mode:部署应用程序的模式。必须是以下之一

      mlflow.sagemaker.DEPLOYMENT_MODE_REPLACE

      如果存在指定名称的应用程序,则用指定模型替换其模型。如果不存在此类应用程序,则用指定名称和模型创建一个新应用程序。这是默认模式。

      mlflow.sagemaker.DEPLOYMENT_MODE_ADD

      如果存在,将指定模型添加到具有指定名称的预先存在的应用程序中。如果应用程序不存在,则用指定名称和模型创建一个新应用程序。注意:如果应用程序已经存在,则指定的模型将以初始权重零 (0) 添加到应用程序对应的 SageMaker 端点。要将流量路由到该模型,请使用 AWS 控制台或 https://docs.aws.amazon.com/sagemaker/latest/dg/API_UpdateEndpointWeightsAndCapacities.html 中定义的 UpdateEndpointWeightsAndCapacities 函数更新应用程序对应的端点配置。

    • archive:如果为 True,则会保留任何预先存在的 SageMaker 应用程序资源(即,在 mlflow.sagemaker.DEPLOYMENT_MODE_REPLACE 模式下部署的结果)。这些资源可能包括与应用程序端点先前版本关联的未使用的 SageMaker 模型和端点配置。如果为 False,则删除这些资源。为了使用 archive=False,必须以 synchronous=True 同步执行 update_deployment()。默认为 False

    • instance_type:用于部署模型的 SageMaker ML 实例的类型。支持的实例类型列表,请参阅 https://aws.amazon.com/sagemaker/pricing/instance-types/。默认为 ml.m4.xlarge

    • instance_count:用于部署模型的 SageMaker ML 实例的数量。默认为 1

    • synchronous:如果为 True,此函数将阻塞,直到部署过程成功或遇到不可恢复的失败。如果为 False,此函数将在启动部署过程后立即返回。它不会等待部署过程完成;在这种情况下,调用者负责通过原生 SageMaker API 或 AWS 控制台监控待处理部署的健康状况和状态。默认为 True

    • timeout_seconds:如果 synchronousTrue,如果未达到明确的结果(成功或失败),部署过程将在指定的秒数后返回。函数返回后,调用者负责使用原生 SageMaker API 或 AWS 控制台监控待处理部署的状态。如果 synchronousFalse,则忽略此参数。默认为 300

    • variant_name:一个字符串,指定创建生产变体时所需的名称。默认为 None

    • vpc_config:一个字典,指定在创建与此应用程序关联的新 SageMaker 模型时使用的 VPC 配置。此参数的可接受值与 SageMaker boto3 客户端的 create_model 方法 中的 VpcConfig 参数相同。有关更多信息,请参阅 https://docs.aws.amazon.com/sagemaker/latest/dg/API_VpcConfig.html。默认为 None

    • data_capture_config:一个字典,指定在创建与此应用程序关联的新 SageMaker 模型时使用的数据捕获配置。有关更多信息,请参阅 https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DataCaptureConfig.html。默认为 None

    • async_inference_config:一个字典,指定异步配置。默认为 None

    • env:一个字典,指定要为部署模型设置的环境变量(键值对)。默认为 None

    • tags:一个键值对字典,表示要为部署模型设置的附加标签。默认为 None

  • endpoint – (可选)包含要更新的部署的端点。当前不受支持

Python 示例
from mlflow.deployments import get_deploy_client

vpc_config = {
    "SecurityGroupIds": [
        "sg-123456abc",
    ],
    "Subnets": [
        "subnet-123456abc",
    ],
}
data_capture_config = {
    "EnableCapture": True,
    "InitialSamplingPercentage": 100,
    "DestinationS3Uri": "s3://my-bucket/path",
    "CaptureOptions": [{"CaptureMode": "Output"}],
}
config = dict(
    assume_role_arn="arn:aws:123:role/assumed_role",
    execution_role_arn="arn:aws:456:role/execution_role",
    bucket_name="my-s3-bucket",
    image_url="1234.dkr.ecr.us-east-1.amazonaws.com/mlflow-test:1.23.1",
    region_name="us-east-1",
    mode="replace",
    archive=False,
    instance_type="ml.m5.4xlarge",
    instance_count=1,
    synchronous=True,
    timeout_seconds=300,
    variant_name="prod-variant-1",
    vpc_config=vpc_config,
    data_capture_config=data_capture_config,
    env={"DISABLE_NGINX": "true", "GUNICORN_CMD_ARGS": '"--timeout 60"'},
    tags={"training_timestamp": "2022-11-01T05:12:26"},
)
client = get_deploy_client("sagemaker")
client.update_deployment(
    "my-deployment",
    model_uri="/mlruns/0/abc/model",
    flavor="python_function",
    config=config,
)
命令行示例
mlflow deployments update --target sagemaker:/us-east-1/arn:aws:123:role/assumed_role \
        --name my-deployment \
        --model-uri /mlruns/0/abc/model \
        --flavor python_function\
        -C execution_role_arn=arn:aws:456:role/execution_role \
        -C bucket_name=my-s3-bucket \
        -C image_url=1234.dkr.ecr.us-east-1.amazonaws.com/mlflow-test:1.23.1 \
        -C region_name=us-east-1 \
        -C mode=replace \
        -C archive=False \
        -C instance_type=ml.m5.4xlarge \
        -C instance_count=1 \
        -C synchronous=True \
        -C timeout_seconds=300 \
        -C variant_name=prod-variant-1 \
        -C vpc_config='{"SecurityGroupIds": ["sg-123456abc"], \
        "Subnets": ["subnet-123456abc"]}' \
        -C data_capture_config='{"EnableCapture": True, \
        "InitialSamplingPercentage": 100, "DestinationS3Uri": "s3://my-bucket/path", \
        "CaptureOptions": [{"CaptureMode": "Output"}]}'
        -C env='{"DISABLE_NGINX": "true", "GUNICORN_CMD_ARGS": ""--timeout 60""}' \
        -C tags='{"training_timestamp": "2022-11-01T05:12:26"}' \
update_endpoint(endpoint, config=None)[source]

使用指定的名称更新端点。您可以通过 config 更新端点的任何目标特定属性。默认情况下,此方法应阻塞,直到更新完成(即可以在端点内创建部署)。有关异步更新和其他配置支持的更多详细信息,请参阅特定于靶场插件的文档。

参数
  • endpoint – 要更新的端点的唯一名称

  • config – (可选)包含端点目标特定配置的字典

mlflow.sagemaker.deploy_transform_job(job_name, model_uri, s3_input_data_type, s3_input_uri, content_type, s3_output_path, compression_type='None', split_type='Line', accept='text/csv', assemble_with='Line', input_filter='$', output_filter='$', join_resource='None', execution_role_arn=None, assume_role_arn=None, bucket=None, image_url=None, region_name='us-west-2', instance_type='ml.m4.xlarge', instance_count=1, vpc_config=None, flavor=None, archive=False, synchronous=True, timeout_seconds=1200)[source]

在 AWS SageMaker 上部署 MLflow 模型并创建相应的批量转换作业。当前活动的 AWS 账户必须设置了正确的权限。

参数
  • job_name – 部署的 Sagemaker 批量转换作业的名称。

  • model_uri

    要部署到 SageMaker 的 MLflow 模型的 URI 格式位置。例如

    • /Users/me/path/to/local/model

    • relative/path/to/local/model

    • s3://my_bucket/path/to/model

    • runs:/<mlflow_run_id>/run-relative/path/to/model

    • models:/<model_name>/<model_version>

    • models:/<model_name>/<stage>

    For more information about supported URI schemes, see Referencing Artifacts.

  • s3_input_data_type – 转换作业的输入数据类型。

  • s3_input_uri – 输入数据的 S3 键名称前缀或清单。

  • content_type – 数据的多用途互联网邮件扩展(MIME)类型。

  • s3_output_path – 存储 Sagemaker 转换作业输出结果的 S3 路径。

  • compression_type – 转换数据的压缩类型。

  • split_type – 将转换作业的数据文件分割成更小批次的方法。

  • accept – 输出数据的多用途互联网邮件扩展(MIME)类型。

  • assemble_with – 组合转换作业结果的方法,将其作为单个 S3 对象。

  • input_filter – 用于从转换作业中选择一部分输入数据 [JSONPath 表达式]。

  • output_filter – 用于从转换作业中选择一部分输出数据 [JSONPath 表达式]。

  • join_resource – 要与之连接转换后数据的数据源。

  • execution_role_arn

    一个 IAM 角色,授予 SageMaker 服务访问指定的 Docker 镜像和包含 MLflow 模型构件的 S3 存储桶的权限。如果未指定,则使用当前假设的角色。创建 SageMaker 模型时,此执行角色将传递给 SageMaker 服务。它作为 SageMaker CreateModel API 调用ExecutionRoleArn 参数传递。此角色*不*用于任何其他调用。有关 SageMaker 模型创建的执行角色信息,请参阅 https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html

  • assume_role_arn – 要假设的 IAM 跨账户角色的名称,用于将 SageMaker 部署到另一个 AWS 账户。如果未指定,SageMaker 将部署到当前活动的 AWS 账户。

  • bucket – 存储模型构件的 S3 存储桶。默认为与 SageMaker 兼容的存储桶名称。

  • image_url – 模型应部署到的 ECR 托管 Docker 镜像的 URL,由 mlflow sagemaker build-and-push-container 生成。此参数也可以通过环境变量 MLFLOW_SAGEMAKER_DEPLOY_IMG_URL 指定。

  • region_name – 要将应用程序部署到的 AWS 区域的名称。

  • instance_type – 部署模型的 SageMaker ML 实例的类型。有关支持的实例类型列表,请参阅 https://aws.amazon.com/sagemaker/pricing/instance-types/

  • instance_count – 部署模型的 SageMaker ML 实例的数量。

  • vpc_config

    一个字典,指定在创建与此批量转换作业关联的新 SageMaker 模型时使用的 VPC 配置。此参数的可接受值与 SageMaker boto3 客户端的 create_model 方法VpcConfig 参数的可接受值相同。有关更多信息,请参阅 https://docs.aws.amazon.com/sagemaker/latest/dg/API_VpcConfig.html

    示例
    import mlflow.sagemaker as mfs
    
    vpc_config = {
        "SecurityGroupIds": [
            "sg-123456abc",
        ],
        "Subnets": [
            "subnet-123456abc",
        ],
    }
    mfs.deploy_transform_job(..., vpc_config=vpc_config)
    

  • flavor – 用于部署的模型的 flavor 名称。必须是 None 或 mlflow.sagemaker.SUPPORTED_DEPLOYMENT_FLAVORS 中的一个。如果为 None,则自动从模型的可用 flavors 中选择一个。如果指定的 flavor 不存在或不支持部署,将引发异常。

  • archive – 如果为 True,则在批量转换作业完成后保留 Sagemaker 模型和 S3 中的模型构件等资源。如果为 False,则删除这些资源。为了使用 archive=False,必须与 synchronous=True 同步执行 deploy_transform_job()

  • synchronous – 如果为 True,此函数将阻塞,直到部署过程成功或遇到无法恢复的故障。如果为 False,此函数将在启动部署过程后立即返回。它不会等待部署过程完成;在这种情况下,调用者负责通过原生的 SageMaker API 或 AWS 控制台监控待定部署的健康状况和状态。

  • timeout_seconds – 如果 synchronousTrue,则在未达到明确结果(成功或失败)的情况下,部署过程将在指定的秒数后返回。函数返回后,调用者负责使用原生的 SageMaker API 或 AWS 控制台监控待定部署的健康状况和状态。如果 synchronousFalse,则忽略此参数。

mlflow.sagemaker.push_image_to_ecr(image='mlflow-pyfunc')[source]

将本地 Docker 镜像推送到 AWS ECR。

镜像将推送到当前活动的 AWS 账户和当前活动的 AWS 区域下。

参数

image – Docker 镜像名称。

mlflow.sagemaker.push_model_to_sagemaker(model_name, model_uri, execution_role_arn=None, assume_role_arn=None, bucket=None, image_url=None, region_name='us-west-2', vpc_config=None, flavor=None)[source]

从 MLflow 模型构件创建 SageMaker 模型。当前活动的 AWS 账户必须设置了正确的权限。

参数
  • model_name – Sagemaker 模型名称。

  • model_uri

    要部署到 SageMaker 的 MLflow 模型的 URI 格式位置。例如

    • /Users/me/path/to/local/model

    • relative/path/to/local/model

    • s3://my_bucket/path/to/model

    • runs:/<mlflow_run_id>/run-relative/path/to/model

    • models:/<model_name>/<model_version>

    • models:/<model_name>/<stage>

    For more information about supported URI schemes, see Referencing Artifacts.

  • execution_role_arn

    一个 IAM 角色,授予 SageMaker 服务访问指定的 Docker 镜像和包含 MLflow 模型构件的 S3 存储桶的权限。如果未指定,则使用当前假设的角色。创建 SageMaker 模型时,此执行角色将传递给 SageMaker 服务。它作为 SageMaker CreateModel API 调用ExecutionRoleArn 参数传递。此角色*不*用于任何其他调用。有关 SageMaker 模型创建的执行角色信息,请参阅 https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html

  • assume_role_arn – 要假设的 IAM 跨账户角色的名称,用于将 SageMaker 部署到另一个 AWS 账户。如果未指定,SageMaker 将部署到当前活动的 AWS 账户。

  • bucket – 存储模型构件的 S3 存储桶。默认为与 SageMaker 兼容的存储桶名称。

  • image_url – 模型应部署到的 ECR 托管 Docker 镜像的 URL,由 mlflow sagemaker build-and-push-container 生成。此参数也可以通过环境变量 MLFLOW_SAGEMAKER_DEPLOY_IMG_URL 指定。

  • region_name – 要将应用程序部署到的 AWS 区域的名称。

  • vpc_config

    一个字典,指定在创建与此批量转换作业关联的新 SageMaker 模型时使用的 VPC 配置。此参数的可接受值与 SageMaker boto3 客户端的 create_model 方法VpcConfig 参数的可接受值相同。有关更多信息,请参阅 https://docs.aws.amazon.com/sagemaker/latest/dg/API_VpcConfig.html

    示例
    import mlflow.sagemaker as mfs
    
    vpc_config = {
        "SecurityGroupIds": [
            "sg-123456abc",
        ],
        "Subnets": [
            "subnet-123456abc",
        ],
    }
    mfs.push_model_to_sagemaker(..., vpc_config=vpc_config)
    

  • flavor – 用于部署的模型的 flavor 名称。必须是 None 或 mlflow.sagemaker.SUPPORTED_DEPLOYMENT_FLAVORS 中的一个。如果为 None,则自动从模型的可用 flavors 中选择一个。如果指定的 flavor 不存在或不支持部署,将引发异常。

mlflow.sagemaker.run_local(name, model_uri, flavor=None, config=None)[source]

在与 SageMaker 兼容的 Docker 容器中本地提供模型。

请注意,本地部署的模型不能由其他部署 API(例如 update_deploymentdelete_deployment 等)管理。

参数
  • name – 本地服务应用程序的名称。

  • model_uri

    要本地部署的 MLflow 模型的 URI 格式位置。例如

    • /Users/me/path/to/local/model

    • relative/path/to/local/model

    • s3://my_bucket/path/to/model

    • runs:/<mlflow_run_id>/run-relative/path/to/model

    • models:/<model_name>/<model_version>

    • models:/<model_name>/<stage>

    For more information about supported URI schemes, see Referencing Artifacts.

  • flavor – 用于部署的模型的 flavor 名称。必须是 None 或 mlflow.sagemaker.SUPPORTED_DEPLOYMENT_FLAVORS 中的一个。如果为 None,则自动从模型的可用 flavors 中选择一个。如果指定的 flavor 不存在或不支持部署,将引发异常。

  • config

    配置参数。支持的参数如下

    • image: 用于模型服务的 Docker 镜像的名称。默认为

      "mlflow-pyfunc"

    • port: 在本地主机上公开模型服务器的端口。默认为 5000

      默认为 5000

Python 示例
from mlflow.models import build_docker
from mlflow.deployments import get_deploy_client

build_docker(name="mlflow-pyfunc")

client = get_deploy_client("sagemaker")
client.run_local(
    name="my-local-deployment",
    model_uri="/mlruns/0/abc/model",
    flavor="python_function",
    config={
        "port": 5000,
        "image": "mlflow-pyfunc",
    },
)
命令行示例
mlflow models build-docker --name "mlflow-pyfunc"
mlflow deployments run-local --target sagemaker \
        --name my-local-deployment \
        --model-uri "/mlruns/0/abc/model" \
        --flavor python_function \
        -C port=5000 \
        -C image="mlflow-pyfunc"
mlflow.sagemaker.target_help()[source]

为 SageMaker 部署客户端提供帮助信息。

mlflow.sagemaker.terminate_transform_job(job_name, region_name='us-west-2', assume_role_arn=None, archive=False, synchronous=True, timeout_seconds=300)[source]

终止 SageMaker 批量转换作业。

参数
  • job_name – 部署的 Sagemaker 批量转换作业的名称。

  • region_name – 部署批量转换作业的 AWS 区域的名称。

  • assume_role_arn – 要假设的 IAM 跨账户角色的名称,用于将 SageMaker 部署到另一个 AWS 账户。如果未指定,SageMaker 将部署到当前活动的 AWS 账户。

  • archive – 如果为 True,则保留与指定批量转换作业关联的资源,例如其关联的模型和模型构件。如果为 False,则删除这些资源。为了使用 archive=False,必须与 synchronous=True 同步执行 terminate_transform_job()

  • synchronous – 如果为 True,此函数将阻塞,直到终止过程成功或遇到无法恢复的故障。如果为 False,此函数将在启动终止过程后立即返回。它不会等待终止过程完成;在这种情况下,调用者负责通过原生的 SageMaker API 或 AWS 控制台监控终止过程的状态。

  • timeout_seconds – 如果 synchronousTrue,则在未达到明确结果(成功或失败)的情况下,终止过程将在指定的秒数后返回。函数返回后,调用者负责通过原生的 SageMaker API 或 AWS 控制台监控终止过程的状态。如果 synchronous 为 False,则忽略此参数。