创建多模型终端节点 () - Amazon SageMaker
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

创建多模型终端节点 ()

您可以使用 AWS SDK for Python (Boto) Amazon SageMaker 或 创建多模型终端节点。

创建多模型终端节点(控制台)

创建多模型终端节点(控制台)

  1. 通过以下网址打开 Amazon SageMaker 控制台:https://console.amazonaws.cn/sagemaker/

  2. 选择 Models (模型),然后从 Inference (推理) 组选择 Create models (创建模型)

  3. 对于 Model name (模型名称),输入一个名称。

  4. 对于 IAM role (IAM 角色),选择或创建附加有 AmazonSageMakerFullAccess IAM 策略的 IAM 角色。

  5. Container definition (容器定义) 部分中,请为 Provide model artifacts and inference image options (提供模型构件和推理映像选项) 选择 Use multiple models (使用多个模型)

    
              Create model (创建模型) 页面的 部分,在其中,您可以选择 Use multiple models (使用多个模型) 以在单个终端节点上托管多个模型。
  6. 选择 Create model (创建模型)

  7. 按照单个模型终端节点的部署方式来部署多模型终端节点。有关说明,请参阅将模型部署到 SageMaker 托管服务

创建多模型终端节点 (AWS SDK for Python (Boto))

您可以使用 Amazon SageMaker create_model create_endpoint_config create_endpoint APIs 创建多模型终端节点,就像您创建单个模型终端节点一样,但具有两个更改。定义模型容器时,您需要传递新的Mode参数值 MultiModel。您还需要传递 ModelDataUrl 字段,该字段指定模型构件所在的 Amazon S3 中的前缀,而不是部署单个模型时指定的单个模型构件的路径。

有关使用 SageMaker 将多个 XGBoost 模型部署到终端节点的示例笔记本,请参阅多模型终端节点 XGBoost 示例笔记本

以下过程概述了创建多模型终端节点的示例中所使用的关键步骤。

部署模型(适用于 Python 的 AWS 开发工具包 (Boto 3))

  1. 获取具有支持部署多模型终端节点的映像的容器。有关支持多模型终端节点的内置算法和框架容器的列表,请参阅支持的算法和框架。在本示例中,我们使用 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' }
  2. 获取 Boto 3 SageMaker 客户端并创建使用此容器的模型。

    import boto3 sm_client = boto3.client('sagemaker') response = sm_client.create_model( ModelName = 'my-multi-model-name', ExecutionRoleArn = role, Containers = [container])
  3. (可选)如果您使用的是串行推理管道,请获取要包含在管道中的其他容器,并将其包含在 ContainersCreateModel 参数中:

    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])
  4. (可选)如果您的使用案例未受益于模型缓存,请将 ModelCacheSetting 参数 的 MultiModelConfig 字段的值设置为 Disabled,并将其包含在 调用 的 Container 参数中create_modelModelCacheSetting 字段的值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])
  5. 为模型配置多模型终端节点。我们建议您至少为终端节点配置两个实例。这样,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'}])
    注意

    在串行推理管道中只能使用一个启用多模型的终端节点。

  6. 使用 EndpointNameEndpointConfigName 参数创建多模型终端节点。

    response = sm_client.create_endpoint( EndpointName = 'my-endpoint', EndpointConfigName = 'my-epc')