创建无服务器端点 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

创建无服务器端点

要创建无服务器端点,可以使用 Amazon SageMaker 控制台、API 或 Amazon CLI。您可以使用与实时端点类似的流程创建无服务器端点。

创建模型

要创建模型,您必须提供模型构件和容器映像的位置。您也可以使用 SageMaker 模型注册表中的模型版本。以下各节中的示例将向您展示如何使用 CreateModel API、模型注册表和 Amazon SageMaker 控制台创建模型。

创建模型(使用模型注册表)

模型注册表是 SageMaker 的一项功能,有助于您编目和管理用于 ML 管道的模型版本。要将模型注册表与无服务器推理一起使用,必须先在模型注册表模型组中注册模型版本。要了解如何在模型注册表中注册模型,请按照创建模型组注册模型版本中的步骤操作。

下面的示例要求您拥有已注册模型版本的 ARN,并使用 Amazon SDK for Python (Boto3) 调用 CreateModel API。对于无服务器推理,目前只有 Amazon SDK for Python (Boto3) 支持模型注册表。在示例中,请指定以下值:

  • 对于 model_name,输入模型的名称。

  • 对于 sagemaker_role,可以使用 SageMaker 创建的默认角色,也可以使用先决条件部分的步骤 4 中自定义的 SageMaker IAM 角色。

  • 对于 ModelPackageName,指定模型版本的 ARN,该版本必须注册到模型注册表中的模型组。

#Setup import boto3 import sagemaker region = boto3.Session().region_name client = boto3.client("sagemaker", region_name=region) #Role to give SageMaker permission to access Amazon services. sagemaker_role = sagemaker.get_execution_role() #Specify a name for the model model_name = "<name-for-model>" #Specify a Model Registry model version container_list = [ { "ModelPackageName": <model-version-arn> } ] #Create the model response = client.create_model( ModelName = model_name, ExecutionRoleArn = sagemaker_role, container_list )

创建模型(使用 API)

下面的示例使用 Amazon SDK for Python (Boto3) 调用 CreateModel API。指定以下值:

  • 对于 sagemaker_role,,可以使用 SageMaker 创建的默认角色,也可以使用先决条件部分的步骤 4 中自定义的 SageMaker IAM 角色。

  • 对于 model_url,指定模型的 Amazon S3 URI。

  • 对于 container,通过 Amazon ECR 路径检索要使用的容器。此示例使用 SageMaker 提供的 XGBoost 容器。如果您没有选择 SageMaker 容器或自带容器,请参阅先决条件部分的步骤 6 以了解更多信息。

  • 对于 model_name,输入模型的名称。

#Setup import boto3 import sagemaker region = boto3.Session().region_name client = boto3.client("sagemaker", region_name=region) #Role to give SageMaker permission to access Amazon services. sagemaker_role = sagemaker.get_execution_role() #Get model from S3 model_url = "s3://DOC-EXAMPLE-BUCKET/models/model.tar.gz" #Get container image (prebuilt example) from sagemaker import image_uris container = image_uris.retrieve("xgboost", region, "0.90-1") #Create model model_name = "<name-for-model>" response = client.create_model( ModelName = model_name, ExecutionRoleArn = sagemaker_role, Containers = [{ "Image": container, "Mode": "SingleModel", "ModelDataUrl": model_url, }] )

创建模型(使用控制台)

  1. 登录 Amazon SageMaker 控制台

  2. 在导航选项卡中,选择推理

  3. 接下来,选择模型

  4. 选择创建模型

  5. 对于模型名称,为模型输入一个在您的账户和 Amazon Web Services 区域中唯一的名称。

  6. 对于 IAM 角色,选择已创建的 IAM 角色(参见先决条件)或允许 SageMaker 为您创建一个角色。

  7. 容器定义 1 中,对于容器输入选项,选择提供模型构件和输入位置

  8. 对于提供模型构件和推理映像选项,选择使用单个模型

  9. 对于推理代码映像的位置,输入指向容器的 Amazon ECR 路径。该映像必须是 SageMaker 提供的第一方映像(如 TensorFlow、XGBoost),或者是您创建端点的同一账户内 Amazon ECR 存储库中的映像。如果没有容器,请返回先决条件部分的步骤 6 以了解更多信息。

  10. 对于模型构件的位置,输入 ML 模型的 Amazon S3 URI。例如,s3://DOC-EXAMPLE-BUCKET/models/model.tar.gz

  11. (可选)对于标签,添加键值对来为模型创建元数据。

  12. 选择创建模型

创建端点配置

创建模型后,创建端点配置。然后,您可以使用端点配置中的规范来部署模型。在配置中,您可以指定需要实时端点还是无服务器端点。要创建无服务器端点配置,可以使用 Amazon SageMaker 控制台CreateEndpointConfig API 或 Amazon CLI。以下部分概述了 API 和控制台方法。

创建端点配置(使用 API)

下面的示例使用 Amazon SDK for Python (Boto3) 调用 CreateEndpointConfig API。指定以下值:

  • 对于 EndpointConfigName,为端点配置选择一个名称。该名称在您的区域账户中应是唯一的。

  • (可选)对于 KmsKeyId,使用要使用的 Amazon KMS 密钥的密钥 ID、密钥 ARN、别名名称或别名 ARN。SageMaker 使用此密钥对 Amazon ECR 映像进行加密。

  • 对于 ModelName,使用要部署的模型的名称。该模型应与您在创建模型步骤中使用的模型相同。

  • 对于 ServerlessConfig

    • MemorySizeInMB 设置为 2048。在此示例中,我们将内存大小设置为 2048 MB,但您也可以选择以下任何值作为内存大小:1024 MB、2048 MB、3072 MB、4096 MB、5120 MB 或 6144 MB。

    • MaxConcurrency 设置为 20。在此示例中,我们将最大并发量设置为 20。可以为无服务器端点设置的最大并发调用数是 200,可以选择的最小值是 1。

    • (可选)要使用预置并发,请将 ProvisionedConcurrency 设置为 10。在此示例中,我们将预置并发设置为 10。无服务器端点的 ProvisionedConcurrency 数量必须小于或等于 MaxConcurrency 数量。如果您想按需使用无服务器推理端点,则可以将此值留空。您可以动态扩展预置并发。有关更多信息,请参阅 自动扩展无服务器端点的预置并发

response = client.create_endpoint_config( EndpointConfigName="<your-endpoint-configuration>", KmsKeyId="arn:aws:kms:us-east-1:123456789012:key/143ef68f-76fd-45e3-abba-ed28fc8d3d5e", ProductionVariants=[ { "ModelName": "<your-model-name>", "VariantName": "AllTraffic", "ServerlessConfig": { "MemorySizeInMB": 2048, "MaxConcurrency": 20, "ProvisionedConcurrency": 10, } } ] )

创建端点配置(使用控制台)

  1. 登录 Amazon SageMaker 控制台

  2. 在导航选项卡中,选择推理

  3. 接下来,选择端点配置

  4. 选择创建端点配置

  5. 对于端点配置名称,输入一个在您的区域账户中唯一的名称。

  6. 对于端点类型,选择无服务器

    控制台中端点类型选项的屏幕截图。
  7. 对于生产变体,选择添加模型

  8. 添加模型下,从模型列表中选择要使用的模型,然后选择保存

  9. 添加模型后,在操作下选择编辑

  10. 对于内存大小,选择所需的内存大小(以 GB 为单位)。

    控制台中的内存大小选项的屏幕截图。
  11. 对于最大并发量,输入端点所需的最大并发调用数。可输入的最大值为 200,最小值为 1。

  12. (可选)要使用预置并发,请在预置并发设置字段中输入所需的并发调用数。预置并发调用数必须小于或等于最大并发调用数。

  13. 选择保存

  14. (可选)对于标签,如果要为端点配置创建元数据,请输入键值对。

  15. 选择创建端点配置

创建端点

要创建无服务器端点,可以使用 Amazon SageMaker 控制台CreateEndpoint API 或 Amazon CLI。以下部分概述了 API 和控制台方法。创建端点后,端点可能需要几分钟才能可用。

创建端点(使用 API)

下面的示例使用 Amazon SDK for Python (Boto3) 调用 CreateEndpoint API。指定以下值:

  • 对于 EndpointName,为端点输入一个在您账户中的区域内唯一的名称。

  • 对于 EndpointConfigName,使用上一节中创建的端点配置名称。

response = client.create_endpoint( EndpointName="<your-endpoint-name>", EndpointConfigName="<your-endpoint-config>" )

创建端点(使用控制台)

  1. 登录 Amazon SageMaker 控制台

  2. 在导航选项卡中,选择推理

  3. 接下来,选择端点

  4. 选择创建端点

  5. 对于端点名称,输入一个在您账户中的区域内唯一的名称。

  6. 对于附加端点配置,选择使用现有端点配置

  7. 对于端点配置,选择在上一节中创建的端点配置名称,然后选择选择端点配置

  8. (可选)对于标签,如果要为端点创建元数据,请输入键值对。

  9. 选择创建端点

    控制台中创建和配置端点页面的屏幕截图。