mlflow.sagemaker

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

class mlflow.sagemaker.SageMakerDeploymentClient(target_uri)[源代码]

基类: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)[源代码]

在 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> 有关支持的 URI 方案的更多信息,请参阅 引用工件

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

  • 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服务。它作为``ExecutionRoleArn``参数传递给`SageMaker CreateModel API调用 <https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateModel.html>`_。此角色不会用于任何其他调用。有关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``,create_deployment()``必须与``synchronous=True``同步执行。默认为``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:如果``synchronous``为``True``,部署过程将在指定秒数后返回,如果没有取得明确的结果(成功或失败)。一旦函数返回,调用者负责使用原生SageMaker API或AWS控制台监控待处理的部署的健康状况和状态。如果``synchronous``为``False``,此参数将被忽略。默认为``300``。 - vpc_config:指定在创建与此应用程序关联的新SageMaker模型时要使用的VPC配置的字典。此参数的可接受值与`SageMaker boto3客户端的create_model方法 <https://boto3.readthedocs.io/en/latest/reference/services/sagemaker.html#SageMaker.Client.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, \
        'InitalSamplingPercentage': 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)[源代码]

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

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

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

返回:

对应于创建的端点的字典,必须包含 ‘name’ 键。

delete_deployment(name, config=None, endpoint=None)[源代码]

删除一个 SageMaker 应用程序。

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

  • config – 配置参数。支持的参数包括: - assume_role_arn:用于删除 SageMaker 部署的 IAM 角色的名称。 - region_name:应用程序部署的 AWS 区域名称。默认为 us-west-2target_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)[源代码]

从指定目标中删除端点。删除操作应是幂等的(即,对不存在的部署进行重试删除不应失败)。

参数:

endpoint – 删除端点的名称

explain(deployment_name=None, df=None, endpoint=None)[源代码]

此功能尚未实现,将在未来推出。

get_deployment(name, endpoint=None)[源代码]

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

如果需要指定区域名称,插件必须使用AWS区域初始化 target_uri ,例如 sagemaker:/us-east-1

要假设一个IAM角色,插件必须使用AWS区域和角色ARN在``target_uri``中初始化,例如``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)[源代码]

返回一个描述指定端点的字典,如果提供的名称不存在端点,则抛出 py:class:mlflow.exception.MlflowException。该字典保证包含一个包含端点名称的 ‘name’ 键。返回字典的其他字段及其类型可能因目标而异。

参数:

endpoint – 获取端点的名称

list_deployments(endpoint=None)[源代码]

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

如果需要指定区域名称,插件必须使用AWS区域初始化 target_uri ,例如 sagemaker:/us-east-1

要假设一个IAM角色,插件必须使用AWS区域和角色ARN在``target_uri``中初始化,例如``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()[源代码]

列出指定目标中的端点。此方法预期返回所有端点的非分页列表(另一种方式是返回一个包含 ‘endpoints’ 字段的字典,其中包含实际的端点,插件能够指定其他字段,例如在返回的字典中包含一个 next_page_token 字段用于分页,并接受一个 pagination_args 参数以传递与分页相关的参数)。

返回:

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

predict(deployment_name=None, inputs=None, endpoint=None, params: Dict[str, Any] | None = None)[源代码]

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

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

如果需要指定区域名称,插件必须使用AWS区域初始化 target_uri ,例如 sagemaker:/us-east-1

要假设一个IAM角色,插件必须使用AWS区域和角色ARN在``target_uri``中初始化,例如``sagemaker:/us-east-1/arn:aws:1234:role/assumed_role``。

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

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

  • endpoint – 用于预测的端点。目前不支持

返回:

一个 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)[源代码]

在 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> 有关支持的 URI 方案的更多信息,请参阅 引用工件

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

  • 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

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

    • archive: 如果为 True,任何现有的 SageMaker 应用资源在变为不活跃状态时(例如,由于在 mlflow.sagemaker.DEPLOYMENT_MODE_REPLACE 模式下部署)将被保留。这些资源可能包括与应用程序端点先前版本相关联的未使用的 SageMaker 模型和端点配置。如果为 False,这些资源将被删除。为了使用 archive=Falseupdate_deployment() 必须与 synchronous=True 同步执行。默认为 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://boto3.readthedocs.io/en/latest/reference/services/sagemaker.html#SageMaker.Client.create_model>`_ 的值相同。更多信息,请参阅 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,
    "InitalSamplingPercentage": 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, \
        "InitalSamplingPercentage": 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)[源代码]

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

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

  • config – (可选)包含端点特定配置的 dict

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)[源代码]

在 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> 有关支持的 URI 方案的更多信息,请参阅 引用工件

  • 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 – 授予 SageMaker 服务访问指定 Docker 镜像和包含 MLflow 模型工件的 S3 存储桶权限的 IAM 角色的名称。如果未指定,将使用当前假设的角色。此执行角色在从指定 MLflow 模型创建 SageMaker 模型时传递给 SageMaker 服务。它作为 ExecutionRoleArn 参数传递给 SageMaker CreateModel API 调用。此角色不会用于任何其他调用。有关 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。 .. code-block:: python

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

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

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

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

mlflow.sagemaker.push_image_to_ecr(image='mlflow-pyfunc')[源代码]

将本地 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)[源代码]

从 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> 有关支持的 URI 方案的更多信息,请参阅 引用工件

  • execution_role_arn – 授予 SageMaker 服务访问指定 Docker 镜像和包含 MLflow 模型工件的 S3 存储桶权限的 IAM 角色的名称。如果未指定,将使用当前假设的角色。此执行角色在从指定 MLflow 模型创建 SageMaker 模型时传递给 SageMaker 服务。它作为 ExecutionRoleArn 参数传递给 SageMaker CreateModel API 调用。此角色不会用于任何其他调用。有关 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://boto3.readthedocs.io/en/latest/reference/services/sagemaker.html#SageMaker.Client.create_model>`_ 的值相同。有关更多信息,请参阅 https://docs.aws.amazon.com/sagemaker/latest/dg/API_VpcConfig.html。 .. code-block:: python

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

mlflow.sagemaker.run_local(name, model_uri, flavor=None, config=None)[源代码]

在兼容 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> 有关支持的 URI 方案的更多信息,请参阅 引用工件

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

  • config – 配置参数。支持的参数有: - image: 用于模型服务的 Docker 镜像名称。默认为 "mlflow-pyfunc"。 - port: 在本地主机上暴露模型服务器的端口。默认为 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()[源代码]

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

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

终止一个 SageMaker 批量转换作业。

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

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

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

  • archive – 如果 True,与指定批量转换作业相关的资源,如相关模型和模型工件,将被保留。如果 False,这些资源将被删除。为了使用 archive=False,必须同步执行 terminate_transform_job() 并设置 synchronous=True

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

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