本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
建立多模型端點
您可以使用 SageMaker 主控台或 AWS SDK for Python (Boto) 建立多模型端點。若要透過主控台建立CPU或GPU備份端點,請參閱下列各節中的主控台程序。如果您要使用建立多模型端點 AWS SDK for Python (Boto),請使用以下各節中的CPU或GPU程序。CPU和工GPU作流程相似,但有幾個差異,例如容器需求。
建立多模型端點 (主控台)
您可以透過主控台建立CPU和GPU支援的多模型端點。使用下列程序透過 SageMaker 主控台建立多模型端點。
建立多模型端點 (主控台)
-
在打開 Amazon SageMaker 控制台https://console.aws.amazon.com/sagemaker/
。 -
選擇 Model (模型),然後從 Inference (推斷) 群組中選擇 Create model (建立模型)。
-
在 Model name (模型名稱) 中,輸入名稱。
-
對於IAM角色,請選擇或建立已附加
AmazonSageMakerFullAccess
IAM原則的IAM角色。 -
針對 Container definition (容器定義) 區段的 Provide model artifacts and inference image options (提供模型成品與推論映像選項),選擇 Use multiple models (使用多個模型)。
-
對於推論容器映像,請輸入所需容器映像的 Amazon ECR 路徑。
對於GPU模型,您必須使用 NVIDIA Triton 推論伺服器支援的容器。如需與GPU受支援端點搭配使用的容器映像檔清單,請參閱 NVIDIATriton 推論容器 (僅限 SM 支援
)。如需 NVIDIA Triton 推論伺服器的詳細資訊,請參閱搭配使用 Trit on 推論伺服器。 SageMaker -
選擇建立模型。
-
部署多模型端點,做法就像部署單一模型端點一樣。如需說明,請參閱 將模型部署到 SageMaker 託管服務。
使用建立多模型端CPUs點 AWS SDK for Python (Boto3)
請參閱下一節來建立由CPU執行個體支援的多模型端點。您可以使用 Amazon 建立多模型端點 SageMaker create_model
create_endpoint_config
create_endpoint
Mode
參數值 MultiModel
。您也需要傳遞指定模型成品所在之 Amazon S3 的字首 ModelDataUrl
欄位,而不是單一模型成品的路徑,就像部署單一模型時的做法一樣。
有關用於將多個模XGBoost型部署 SageMaker 到端點的範例筆記本,請參閱多模型端點XGBoost範例筆記本
下列程序概述了該範例中用來建立CPU備份多模型端點的關鍵步驟。
若要部署模型 (AWS SDK對於 Python (投票 3))
-
取得容器,其需包含支援部署多模型端點的映像。如需支援多模型端點的內建演算法與架構容器清單,請參閱支援的演算法、架構與執行個體。我們在此範例採用 K 近鄰 (k-NN) 演算法 內建演算法。我們呼叫 SageMaker Python SDK
公用程式函式, 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://
<BUCKET_NAME>
/<PATH_TO_ARTIFACTS>
', 'Mode': 'MultiModel' } -
取得用 AWS SDK for Python (Boto3) SageMaker 戶端並建立使用此容器的模型。
import boto3 sagemaker_client = boto3.client('sagemaker') response = sagemaker_client.create_model( ModelName =
'<MODEL_NAME>'
, ExecutionRoleArn = role, Containers = [container]) -
(選用) 如果您使用的是序列推論管道,請在管道納入額外容器,並將其包含在
CreateModel
的Containers
引數中:preprocessor_container = { 'Image': '
<ACCOUNT_ID>
.dkr.ecr.<REGION_NAME>
.amazonaws.com/<PREPROCESSOR_IMAGE>
:<TAG>
' } multi_model_container = { 'Image': '<ACCOUNT_ID>
.dkr.ecr.<REGION_NAME>
.amazonaws.com/<IMAGE>
:<TAG>
', 'ModelDataUrl': 's3://<BUCKET_NAME>
/<PATH_TO_ARTIFACTS>
', 'Mode': 'MultiModel' } response = sagemaker_client.create_model( ModelName ='<MODEL_NAME>'
, ExecutionRoleArn = role, Containers = [preprocessor_container, multi_model_container] )注意
序列推論管線中只能使用一個 multi-model-enabled 端點。
-
(選用) 如您的使用案例無法從模型快取受益,請將
MultiModelConfig
參數ModelCacheSetting
欄位的值設為Disabled
,並將其包含在呼叫create_model
的Container
引數。ModelCacheSetting
欄位的預設值為Enabled
。container = { 'Image': image, 'ModelDataUrl': 's3://
<BUCKET_NAME>
/<PATH_TO_ARTIFACTS>
', 'Mode': 'MultiModel' 'MultiModelConfig': { // Default value is 'Enabled' 'ModelCacheSetting': 'Disabled' } } response = sagemaker_client.create_model( ModelName ='<MODEL_NAME>'
, ExecutionRoleArn = role, Containers = [container] ) -
為該模型設定多模型端點。建議您至少使用兩個執行個體來設定端點。這允許 SageMaker 為模型跨多個可用區域提供一組高可用性的預測。
response = sagemaker_client.create_endpoint_config( EndpointConfigName =
'<ENDPOINT_CONFIG_NAME>'
, ProductionVariants=[ { 'InstanceType': 'ml.m4.xlarge', 'InitialInstanceCount': 2, 'InitialVariantWeight': 1, 'ModelName':'<MODEL_NAME>'
, 'VariantName': 'AllTraffic' } ] )注意
序列推論管線中只能使用一個 multi-model-enabled 端點。
-
使用
EndpointName
和EndpointConfigName
參數建立多模型端點。response = sagemaker_client.create_endpoint( EndpointName =
'<ENDPOINT_NAME>'
, EndpointConfigName ='<ENDPOINT_CONFIG_NAME>'
)
使用建立多模型端GPUs點 AWS SDK for Python (Boto3)
請使用以下部分來建立GPU支援的多模型端點。您可以使用 Amazon 建立多模型端點 SageMaker create_model
create_endpoint_config
create_endpoint
Mode
參數值 MultiModel
。您也需要傳遞指定模型成品所在之 Amazon S3 的字首 ModelDataUrl
欄位,而不是單一模型成品的路徑,就像部署單一模型時的做法一樣。對於GPU支援的多模型端點,您也必須使用 NVIDIA Triton 推論伺服器的容器,該容器已針對在執行個體上執行最佳化。GPU如需與GPU受支援端點搭配使用的容器映像檔清單,請參閱 NVIDIATriton 推論容器 (僅限 SM 支援
如需示範如何建立支援的多模型端點的範例筆記本GPUs,請參閱在 Amazon 多模型端點上GPUs執行 SageMaker 多個深度學習模型
下列程序概述建立GPU備份多模型端點的關鍵步驟。
若要部署模型 (AWS SDK對於 Python (投票 3))
-
定義容器映像。若要建立GPU支援模型的多模型端點,請 ResNet 定義要使用 NVIDIATriton Server 映像的容器。此容器支援多模型端點,並針對在執行GPU個體上執行最佳化。我們呼叫 SageMaker Python SDK
公用程式函式 image_uris.retrieve()
來取得影像的位址。例如:import sagemaker region = sagemaker_session.boto_region_name // Find the sagemaker-tritonserver image at // https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-triton/resnet50/triton_resnet50.ipynb // Find available tags at https://github.com/aws/deep-learning-containers/blob/master/available_images.md#nvidia-triton-inference-containers-sm-support-only image = "
<ACCOUNT_ID>
.dkr.ecr.<REGION_NAME>
.amazonaws.com/sagemaker-tritonserver:<TAG>
".format( account_id=account_id_map[region], region=region ) container = { 'Image': image, 'ModelDataUrl': 's3://<BUCKET_NAME>
/<PATH_TO_ARTIFACTS>
', 'Mode': 'MultiModel', "Environment": {"SAGEMAKER_TRITON_DEFAULT_MODEL_NAME": "resnet"}, } -
取得用 AWS SDK for Python (Boto3) SageMaker 戶端並建立使用此容器的模型。
import boto3 sagemaker_client = boto3.client('sagemaker') response = sagemaker_client.create_model( ModelName =
'<MODEL_NAME>'
, ExecutionRoleArn = role, Containers = [container]) -
(選用) 如果您使用的是序列推論管道,請在管道納入額外容器,並將其包含在
CreateModel
的Containers
引數中:preprocessor_container = { 'Image': '
<ACCOUNT_ID>
.dkr.ecr.<REGION_NAME>
.amazonaws.com/<PREPROCESSOR_IMAGE>
:<TAG>
' } multi_model_container = { 'Image': '<ACCOUNT_ID>
.dkr.ecr.<REGION_NAME>
.amazonaws.com/<IMAGE>
:<TAG>
', 'ModelDataUrl': 's3://<BUCKET_NAME>
/<PATH_TO_ARTIFACTS>
', 'Mode': 'MultiModel' } response = sagemaker_client.create_model( ModelName ='<MODEL_NAME>'
, ExecutionRoleArn = role, Containers = [preprocessor_container, multi_model_container] )注意
序列推論管線中只能使用一個 multi-model-enabled 端點。
-
(選用) 如您的使用案例無法從模型快取受益,請將
MultiModelConfig
參數ModelCacheSetting
欄位的值設為Disabled
,並將其包含在呼叫create_model
的Container
引數。ModelCacheSetting
欄位的預設值為Enabled
。container = { 'Image': image, 'ModelDataUrl': 's3://
<BUCKET_NAME>
/<PATH_TO_ARTIFACTS>
', 'Mode': 'MultiModel' 'MultiModelConfig': { // Default value is 'Enabled' 'ModelCacheSetting': 'Disabled' } } response = sagemaker_client.create_model( ModelName ='<MODEL_NAME>'
, ExecutionRoleArn = role, Containers = [container] ) -
使用模型的GPU支援執行個體設定多模型端點。建議您將端點設為多個執行個體,以便提供高可用性與更高快取命中。
response = sagemaker_client.create_endpoint_config( EndpointConfigName =
'<ENDPOINT_CONFIG_NAME>'
, ProductionVariants=[ { 'InstanceType': 'ml.g4dn.4xlarge', 'InitialInstanceCount': 2, 'InitialVariantWeight': 1, 'ModelName':'<MODEL_NAME>'
, 'VariantName': 'AllTraffic' } ] ) -
使用
EndpointName
和EndpointConfigName
參數建立多模型端點。response = sagemaker_client.create_endpoint( EndpointName =
'<ENDPOINT_NAME>'
, EndpointConfigName ='<ENDPOINT_CONFIG_NAME>'
)