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/modelrelative/path/to/local/models3://my_bucket/path/to/modelruns:/<mlflow_run_id>/run-relative/path/to/modelmodels:/<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:如果synchronous为True,如果未达到明确的结果(成功或失败),部署过程将在指定的秒数后返回。函数返回后,调用者负责使用原生 SageMaker API 或 AWS 控制台监控待处理部署的状态。如果synchronous为False,则忽略此参数。默认为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 – (可选)要在其下创建部署的端点。当前不受支持
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:如果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)
- 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 – (可选)包含要获取的部署的端点。当前不受支持
- 返回
一个描述指定部署的字典
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")
- 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 – (可选)列出指定端点中的部署。当前不受支持
- 返回
对应于部署的字典列表。
from mlflow.deployments import get_deploy_client client = get_deploy_client("sagemaker:/us-east-1/arn:aws:123:role/assumed_role") client.list_deployments()
- 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。
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)
- 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/modelrelative/path/to/local/models3://my_bucket/path/to/modelruns:/<mlflow_run_id>/run-relative/path/to/modelmodels:/<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:如果synchronous为True,如果未达到明确的结果(成功或失败),部署过程将在指定的秒数后返回。函数返回后,调用者负责使用原生 SageMaker API 或 AWS 控制台监控待处理部署的状态。如果synchronous为False,则忽略此参数。默认为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 – (可选)包含要更新的部署的端点。当前不受支持
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/modelrelative/path/to/local/models3://my_bucket/path/to/modelruns:/<mlflow_run_id>/run-relative/path/to/modelmodels:/<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。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 – 如果
synchronous为True,则在未达到明确结果(成功或失败)的情况下,部署过程将在指定的秒数后返回。函数返回后,调用者负责使用原生的 SageMaker API 或 AWS 控制台监控待定部署的健康状况和状态。如果synchronous为False,则忽略此参数。
- 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/modelrelative/path/to/local/models3://my_bucket/path/to/modelruns:/<mlflow_run_id>/run-relative/path/to/modelmodels:/<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。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_deployment、delete_deployment等)管理。- 参数
name – 本地服务应用程序的名称。
model_uri –
要本地部署的 MLflow 模型的 URI 格式位置。例如
/Users/me/path/to/local/modelrelative/path/to/local/models3://my_bucket/path/to/modelruns:/<mlflow_run_id>/run-relative/path/to/modelmodels:/<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。
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.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 – 如果 synchronous 为 True,则在未达到明确结果(成功或失败)的情况下,终止过程将在指定的秒数后返回。函数返回后,调用者负责通过原生的 SageMaker API 或 AWS 控制台监控终止过程的状态。如果 synchronous 为 False,则忽略此参数。