本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
多模型端点的自定义容器合同
要处理多个模型,您的容器必须支持一组 API,使亚马逊 SageMaker 能够与容器通信,以便根据需要加载、列出、获取和卸载模型。model_name
在新 API 集中用作键输入参数。客户容器需要使用 model_name
作为映射键来跟踪已加载的模型。此外,model_name
是一个不透明的标识符,不一定是传递给 InvokeEndpoint
API 的 TargetModel
参数的值。InvokeEndpoint
请求中的原始 TargetModel
值作为可用于日志记录目的的 X-Amzn-SageMaker-Target-Model
标头传递给 API 中的容器。
注意
目前,只有 NVIDIA Triton Inference Server 容器支持支持 GPU SageMaker 的实例的多模型端点。该容器已实施了下文定义的合同。客户可以直接将此容器与其多模型 GPU 端点一起使用,无需任何额外工作。
您可以在容器上为 CPU 支持的多模型端点配置以下 API。
加载模型 API
指示容器将主体的 url
字段中的特定模型加载到客户容器的内存中,并使用分配的 model_name
来跟踪该模型。加载模型后,容器应准备好使用此 model_name
提供推理请求。
POST /models HTTP/1.1 Content-Type: application/json Accept: application/json { "model_name" : "{model_name}", "url" : "/opt/ml/models/{model_name}/model", }
注意
如果已加载 model_name
,此 API 应返回 409。每当由于内存不足或任何其他资源而无法加载模型时,此 API 都应向返回一个 507 HTTP 状态码 SageMaker,然后该状态码会启动卸载未使用的模型进行回收。
列出模型 API
返回已加载到客户容器内存中的模型列表。
GET /models HTTP/1.1 Accept: application/json Response = { "models": [ { "modelName" : "{model_name}", "modelUrl" : "/opt/ml/models/{model_name}/model", }, { "modelName" : "{model_name}", "modelUrl" : "/opt/ml/models/{model_name}/model", }, .... ] }
此 API 还支持分页。
GET /models HTTP/1.1 Accept: application/json Response = { "models": [ { "modelName" : "{model_name}", "modelUrl" : "/opt/ml/models/{model_name}/model", }, { "modelName" : "{model_name}", "modelUrl" : "/opt/ml/models/{model_name}/model", }, .... ] }
SageMaker 最初可以调用 List Models API 而不提供值next_page_token
。如果 nextPageToken
字段作为响应的一部分返回,它将在后续的列出模型调用中作为 next_page_token
的值提供。如果未返回 nextPageToken
,则意味着没有其他模型可供返回。
获取模型 API
这是 model_name
实体上的简单读取 API。
GET /models/{model_name} HTTP/1.1 Accept: application/json { "modelName" : "{model_name}", "modelUrl" : "/opt/ml/models/{model_name}/model", }
注意
如果未加载 model_name
,此 API 应返回 404。
卸载模型 API
指示 SageMaker 平台指示客户容器从内存中卸载模型。这将在开始新模型加载过程时开始移出由平台确定的候选模型。当此 API 返回响应时,容器应回收预配置到 model_name
的资源。
DELETE /models/{model_name}
注意
如果未加载 model_name
,此 API 应返回 404。
调用模型 API
从提供的特定 model_name
生成预测请求。 SageMaker 运行时InvokeEndpoint
请求支持X-Amzn-SageMaker-Target-Model
作为新的标头,该标头采用为调用指定的模型的相对路径。 SageMaker 系统通过将作为 CreateModel
API 调用的一部分提供的前缀与模型的相对路径相结合来构造模型的绝对路径。
POST /models/{model_name}/invoke HTTP/1.1 Content-Type: ContentType Accept: Accept X-Amzn-SageMaker-Custom-Attributes: CustomAttributes X-Amzn-SageMaker-Target-Model: [relativePath]/{artifactName}.tar.gz
注意
如果未加载 model_name
,此 API 应返回 404。
此外,在 GPU 实例上,如果由于内存或其他资源不足而InvokeEndpoint
失败,此 API 应向返回 507 HTTP 状态码 SageMaker,然后启动卸载未使用的模型进行回收。