创建无服务器端点
要创建无服务器端点,可以使用 Amazon SageMaker 控制台、API 或 Amazon CLI。您可以使用与实时端点类似的流程创建无服务器端点。
创建模型
要创建模型,您必须提供模型构件和容器映像的位置。您也可以使用 SageMaker 模型注册表中的模型版本。以下各节中的示例将向您展示如何使用 CreateModel API、模型注册表和 Amazon SageMaker 控制台
创建模型(使用模型注册表)
模型注册表是 SageMaker 的一项功能,有助于您编目和管理用于 ML 管道的模型版本。要将模型注册表与无服务器推理一起使用,必须先在模型注册表模型组中注册模型版本。要了解如何在模型注册表中注册模型,请按照创建模型组和注册模型版本中的步骤操作。
下面的示例要求您拥有已注册模型版本的 ARN,并使用 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)
#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, }] )
创建模型(使用控制台)
-
在导航选项卡中,选择推理。
-
接下来,选择模型。
-
选择创建模型。
-
对于模型名称,为模型输入一个在您的账户和 Amazon Web Services 区域中唯一的名称。
-
对于 IAM 角色,选择已创建的 IAM 角色(参见先决条件)或允许 SageMaker 为您创建一个角色。
-
在容器定义 1 中,对于容器输入选项,选择提供模型构件和输入位置。
-
对于提供模型构件和推理映像选项,选择使用单个模型。
-
对于推理代码映像的位置,输入指向容器的 Amazon ECR 路径。该映像必须是 SageMaker 提供的第一方映像(如 TensorFlow、XGBoost),或者是您创建端点的同一账户内 Amazon ECR 存储库中的映像。如果没有容器,请返回先决条件部分的步骤 6 以了解更多信息。
-
对于模型构件的位置,输入 ML 模型的 Amazon S3 URI。例如,
。s3://DOC-EXAMPLE-BUCKET/models/model.tar.gz
-
(可选)对于标签,添加键值对来为模型创建元数据。
-
选择创建模型。
创建端点配置
创建模型后,创建端点配置。然后,您可以使用端点配置中的规范来部署模型。在配置中,您可以指定需要实时端点还是无服务器端点。要创建无服务器端点配置,可以使用 Amazon SageMaker 控制台
创建端点配置(使用 API)
下面的示例使用 Amazon SDK for Python (Boto3)
-
对于
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, } } ] )
创建端点配置(使用控制台)
-
在导航选项卡中,选择推理。
-
接下来,选择端点配置。
-
选择创建端点配置。
-
对于端点配置名称,输入一个在您的区域账户中唯一的名称。
-
对于端点类型,选择无服务器。
-
对于生产变体,选择添加模型。
-
在添加模型下,从模型列表中选择要使用的模型,然后选择保存。
-
添加模型后,在操作下选择编辑。
-
对于内存大小,选择所需的内存大小(以 GB 为单位)。
-
对于最大并发量,输入端点所需的最大并发调用数。可输入的最大值为 200,最小值为 1。
-
(可选)要使用预置并发,请在预置并发设置字段中输入所需的并发调用数。预置并发调用数必须小于或等于最大并发调用数。
-
选择保存。
-
(可选)对于标签,如果要为端点配置创建元数据,请输入键值对。
-
选择创建端点配置。
创建端点
要创建无服务器端点,可以使用 Amazon SageMaker 控制台
创建端点(使用 API)
下面的示例使用 Amazon SDK for Python (Boto3)
-
对于
EndpointName
,为端点输入一个在您账户中的区域内唯一的名称。 -
对于
EndpointConfigName
,使用上一节中创建的端点配置名称。
response = client.create_endpoint( EndpointName="
<your-endpoint-name>
", EndpointConfigName="<your-endpoint-config>
" )
创建端点(使用控制台)
-
在导航选项卡中,选择推理。
-
接下来,选择端点。
-
选择创建端点。
-
对于端点名称,输入一个在您账户中的区域内唯一的名称。
-
对于附加端点配置,选择使用现有端点配置。
-
对于端点配置,选择在上一节中创建的端点配置名称,然后选择选择端点配置。
-
(可选)对于标签,如果要为端点创建元数据,请输入键值对。
-
选择创建端点。