多模型端点的自定义容器合同 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

多模型端点的自定义容器合同

要处理多个模型,您的容器必须支持一组模型APIs,以便亚马逊 SageMaker 能够根据需要与集装箱进行通信,以便装载、上架、获取和卸载模型。在新集合中使用APIs作为键输入参数。model_name客户容器需要使用 model_name 作为映射键来跟踪已加载的模型。此外,model_name是一个不透明的标识符,不一定是传递给的TargetModel参数的值。InvokeEndpoint APIInvokeEndpoint请求中的原始TargetModel值APIs作为标头传递到容器中,该X-Amzn-SageMaker-Target-Model标头可用于记录目的。

注意

目前,只有的 NVIDIATriton In GPU ference Server 容器支持支持支持实例 SageMaker的多模型端点。该容器已实施了下文定义的合同。客户可以直接将此容器与其多模型GPU端点一起使用,无需任何额外工作。

您可以在容器APIs上为CPU支持的多模型终端节点配置以下内容。

加载模型 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 最初可以在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 系统通过将CreateModelAPI调用中提供的前缀与模型的相对路径相结合来构造模型的绝对路径。

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,然后启动卸载未使用的模型进行回收。