本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
多模型端点的自定义容器合同
要处理多个模型,您的容器必须支持一组模型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 系统通过将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,然后启动卸载未使用的模型进行回收。