mlflow.sagemaker
mlflow.sagemaker
模块提供了一个用于将 MLflow 模型部署到 Amazon SageMaker 的 API。
- class mlflow.sagemaker.SageMakerDeploymentClient(target_uri)[源代码]
-
初始化一个 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 – (可选)用于创建部署的端点。目前不支持
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-2
或 target_uri 中提供的区域。 -archive
:如果为 True,则保留与指定应用程序相关的资源,如关联的模型和端点配置。如果为 False,则删除这些资源。要使用archive=False
,必须与synchronous=True
同步执行delete()
。默认为False
。 -synchronous
:如果为 True,此函数会阻塞,直到删除过程成功或遇到不可恢复的失败。如果为 False,此函数在启动删除过程后立即返回。它不会等待删除过程完成;在这种情况下,调用者负责通过原生 SageMaker API 或 AWS 控制台监控删除过程的状态。默认为True
。 -timeout_seconds
:如果synchronous
为 True,删除过程在没有取得明确结果(成功或失败)的情况下,在指定秒数后返回。函数返回后,调用者负责通过原生 SageMaker API 或 AWS 控制台监控删除过程的状态。如果synchronous
为 False,则忽略此参数。默认为300
。endpoint – (可选)包含要删除的部署的端点。目前不支持
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 – (可选) 包含要获取的部署的端点。目前不支持
- 返回:
描述指定部署的字典
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 – (可选)列出指定端点中的部署。目前不支持
- 返回:
对应于部署的字典列表。
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。
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=False
,update_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
。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 – (可选)包含要更新的部署的端点。目前不支持
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 – 如果
synchronous
为True
,部署过程将在没有明确结果(成功或失败)的情况下,在指定秒数后返回。一旦函数返回,调用者负责使用原生 SageMaker API 或 AWS 控制台监控待处理部署的健康和状态。如果synchronous
为False
,此参数将被忽略。
- 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_deployment
、delete_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
。
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 – 如果 synchronous 为 True ,终止过程将在未达到确定结果(成功或失败)的情况下,在指定秒数后返回。一旦函数返回,调用者负责通过原生 SageMaker API 或 AWS 控制台监控终止过程的状态。如果 synchronous 为 False,此参数将被忽略。