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

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

创建无服务器端点

重要

允许 Amazon SageMaker Studio 或 Amazon SageMaker Studio Classic 创建亚马逊 SageMaker资源的自定义 IAM 策略还必须授予向这些资源添加标签的权限。需要向资源添加标签的权限,因为 Studio 和 Studio Classic 会自动标记他们创建的任何资源。如果 IAM 策略允许 Studio 和 Studio Classic 创建资源但不允许标记,则在尝试创建资源时可能会出现 AccessDenied “” 错误。有关更多信息,请参阅 提供为资源添加标签 SageMaker的权限

Amazon 适用于亚马逊的托管政策 SageMaker授予创建 SageMaker 资源的权限已经包括在创建这些资源时添加标签的权限。

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

创建模型

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

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

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

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

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

  • 对于sagemaker_role,您可以使用本先决条件节步骤 4 中的默认 SageMaker创建角色或自定义 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)

以下示例使用适用于 Python 的Amazon 软件开发工具包 (Boto3) 来调用 API。CreateModel指定以下值:

  • 因为sagemaker_role,您可以使用本先决条件节步骤 4 中的默认 SageMaker创建角色或自定义 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提供的第一方映像(例如 XGBoost) TensorFlow,或者是位于您创建终端节点时所在的 Amazon ECR 存储库中的映像。如果没有容器,请返回先决条件部分的步骤 6 以了解更多信息。

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

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

  12. 选择创建模型

创建端点配置

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

创建端点配置(使用 API)

以下示例使用适用于 Python 的Amazon 软件开发工具包 (Boto3) 来调用 API。CreateEndpointConfig指定以下值:

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

  • (可选)对于KmsKeyId,使用密钥 ID、密钥 ARN、别名或别名 ARN 作为要使用的 Amazon KMS 密钥。 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 控制台CreateEndpointAPI 或。 Amazon CLI以下部分概述了 API 和控制台方法。创建端点后,端点可能需要几分钟才能可用。

创建端点(使用 API)

以下示例使用适用于 Python 的Amazon 软件开发工具包 (Boto3) 来调用 API。CreateEndpoint指定以下值:

  • 对于 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. 选择创建端点

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