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

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

自定义容器处理多个模型的合同

要处理多个模型,您的容器必须支持一组 APIs使 Amazon SageMaker 能够与容器通信,以便根据需要加载、列出、获取和卸载模型。model_name 在新 API 集中用作键输入参数。客户容器需要使用 model_name 作为映射键来跟踪已加载的模型。此外,model_name 是一个不透明的标识符,不一定是传递给 TargetModel API 的 InvokeEndpoint 参数的值。TargetModel 请求中的原始 InvokeEndpoint 值作为可用于日志记录目的的 X-Amzn-SageMaker-Target-Model 标头传递给 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 都应向 SageMaker 返回 507 HTTP 状态代码,然后启动卸载未使用的模型以回收。

列出模型 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。