在一个端点托管使用不同容器的多个模型 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

在一个端点托管使用不同容器的多个模型

通过使用 SageMaker 多容器端点,客户可在单个 SageMaker 端点上部署多个使用不同模型或框架的容器。可以将容器作为推理管线按顺序运行它们,也可以使用直接调用来单独访问每个容器,以提高端点利用率并优化成本。

有关按顺序调用多容器端点中容器的信息,请参阅托管模型以及预处理逻辑,作为端点后面的串行推理管道

有关调用多容器端点中的特定容器的信息,请参阅使用进行直接调用的多容器端点

创建多容器端点 (Boto 3)

就像创建任何其他端点一样,通过调用 CreateModelCreateEndpointConfigCreateEndpoint API 来创建多容器端点。您可以将这些容器作为推理管线按顺序运行它们,也可以使用直接调用来运行各个单独的容器。当您调用 create_model 时,多容器端点需要满足以下要求:

  • 使用 Containers 参数代替 PrimaryContainer,并在 Containers 参数中包含多个容器。

  • 直接调用的多容器端点中的每个容器都需要 ContainerHostname 参数。

  • InferenceExecutionConfig 字段的 Mode 参数设置为 Direct 以直接调用每个容器,或者设置为 Serial 以将容器用作推理管线。默认模式为 Serial

注意

目前,多容器端点最多支持 15 个容器。

以下示例创建了用于直接调用的多容器模型。

  1. 创建容器元素,且 InferenceExecutionConfig 为直接调用。

    container1 = { 'Image': '123456789012.dkr.ecr.us-east-1.amazonaws.com/myimage1:mytag', 'ContainerHostname': 'firstContainer' } container2 = { 'Image': '123456789012.dkr.ecr.us-east-1.amazonaws.com/myimage2:mytag', 'ContainerHostname': 'secondContainer' } inferenceExecutionConfig = {'Mode': 'Direct'}
  2. 使用容器元素创建模型并设置 InferenceExecutionConfig 字段。

    import boto3 sm_client = boto3.Session().client('sagemaker') response = sm_client.create_model( ModelName = 'my-direct-mode-model-name', InferenceExecutionConfig = inferenceExecutionConfig, ExecutionRoleArn = role, Containers = [container1, container2] )

要创建端点,则要调用 create_endpoint_configcreate_endpoint,这和创建任何其他端点一样。

更新多容器端点

要更新多容器端点,请完成以下步骤。

  1. 调用 create_model,为 InferenceExecutionConfig 字段中的 Mode 参数使用新值以创建一个新模型。

  2. 调用 create_endpoint_config,使用您在上一步中创建的新模型创建具有不同名称的新端点配置。

  3. 调用 update_endpoint,使用您在上一步中创建的新端点配置更新端点。

删除多容器端点

要删除端点,调用 delete_endpoint 并提供要删除的端点的名称作为 EndpointName 参数。