本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
创建多模型终端节点 ()
您可以使用 AWS SDK for Python (Boto) Amazon SageMaker 或 创建多模型终端节点。
创建多模型终端节点(控制台)
创建多模型终端节点(控制台)
-
通过以下网址打开 Amazon SageMaker 控制台:https://console.amazonaws.cn/sagemaker/
。 -
选择 Models (模型),然后从 Inference (推理) 组选择 Create models (创建模型)。
-
对于 Model name (模型名称),输入一个名称。
-
对于 IAM role (IAM 角色),选择或创建附加有 AmazonSageMakerFullAccess IAM 策略的 IAM 角色。
-
在 Container definition (容器定义) 部分中,请为 Provide model artifacts and inference image options (提供模型构件和推理映像选项) 选择 Use multiple models (使用多个模型)。
-
选择 Create model (创建模型)。
-
按照单个模型终端节点的部署方式来部署多模型终端节点。有关说明,请参阅将模型部署到 SageMaker 托管服务。
创建多模型终端节点 (AWS SDK for Python (Boto))
您可以使用 Amazon SageMaker create_model
create_endpoint_config
create_endpoint
Mode
参数值 MultiModel
。您还需要传递 ModelDataUrl
字段,该字段指定模型构件所在的 Amazon S3 中的前缀,而不是部署单个模型时指定的单个模型构件的路径。
有关使用 SageMaker 将多个 XGBoost 模型部署到终端节点的示例笔记本,请参阅多模型终端节点 XGBoost 示例笔记本
以下过程概述了创建多模型终端节点的示例中所使用的关键步骤。
部署模型(适用于 Python 的 AWS 开发工具包 (Boto 3))
-
获取具有支持部署多模型终端节点的映像的容器。有关支持多模型终端节点的内置算法和框架容器的列表,请参阅支持的算法和框架。在本示例中,我们使用 K 最近邻 (k-NN) 算法 内置算法。我们将调用 SageMaker Python 开发工具包
实用程序函数 image_uris.retrieve()
来获取 K 最近邻内置算法映像的地址。import sagemaker region = sagemaker_session.boto_region_name image = sagemaker.image_uris.retrieve("knn",region=region) container = { 'Image': image, 'ModelDataUrl': 's3://my-bucket/path/to/artifacts/', 'Mode': 'MultiModel' }
-
获取 Boto 3 SageMaker 客户端并创建使用此容器的模型。
import boto3 sm_client = boto3.client('sagemaker') response = sm_client.create_model( ModelName = 'my-multi-model-name', ExecutionRoleArn = role, Containers = [container])
-
(可选)如果您使用的是串行推理管道,请获取要包含在管道中的其他容器,并将其包含在
Containers
的CreateModel
参数中:preprocessor_container = { 'Image': '123456789012.dkr.ecr.us-east-1.amazonaws.com/mypreprocessorimage:mytag' } multi_model_container = { 'Image': '763104351884.dkr.ecr.us-east-1.amazonaws.com/myimage:mytag', 'ModelDataUrl': 's3://my-bucket/path/to/artifacts/', 'Mode': 'MultiModel' } response = sm_client.create_model( ModelName = 'my-multi-model-name', ExecutionRoleArn = role, Containers = [preprocessor_container, multi_model_container])
-
(可选)如果您的使用案例未受益于模型缓存,请将
ModelCacheSetting
参数 的MultiModelConfig
字段的值设置为Disabled
,并将其包含在 调用 的Container
参数中create_model
。ModelCacheSetting
字段的值Enabled
默认为 。container = { 'Image': image, 'ModelDataUrl': 's3://my-bucket/path/to/artifacts/', 'Mode': 'MultiModel' 'MultiModelConfig': { // Default value is 'Enabled' 'ModelCacheSetting': 'Disabled' } } response = sm_client.create_model( ModelName = 'my-multi-model-name', ExecutionRoleArn = role, Containers = [container])
-
为模型配置多模型终端节点。我们建议您至少为终端节点配置两个实例。这样,SageMaker 可以跨多个可用区为模型提供一组高度可用的预测。
response = sm_client.create_endpoint_config( EndpointConfigName = ‘my-epc’, ProductionVariants=[{ 'InstanceType': 'ml.m4.xlarge', 'InitialInstanceCount': 2, 'InitialVariantWeight': 1, 'ModelName': ‘my-multi-model-name’, 'VariantName': 'AllTraffic'}])
注意 在串行推理管道中只能使用一个启用多模型的终端节点。
-
使用
EndpointName
和EndpointConfigName
参数创建多模型终端节点。response = sm_client.create_endpoint( EndpointName = 'my-endpoint', EndpointConfigName = 'my-epc')