View a markdown version of this page

Contrato de contêineres personalizados para Multi-Model endpoints - SageMaker Inteligência Artificial da Amazon

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Contrato de contêineres personalizados para Multi-Model endpoints

Para lidar com vários modelos, seu contêiner deve suportar um conjunto de APIs que permitam que a Amazon SageMaker AI se comunique com o contêiner para carregar, listar, obter e descarregar modelos conforme necessário. O model_name é usado no novo conjunto de APIs como parâmetro de entrada de chave. Espera-se que o contêiner do cliente acompanhe os modelos carregados usando model_name como chave de mapeamento. Além disso, o model_name é um identificador opaco e não é necessariamente o valor do parâmetro TargetModel passado para a API InvokeEndpoint. O valor TargetModel original na solicitação InvokeEndpoint é passado para o contêiner nas APIs como um cabeçalho X-Amzn-SageMaker-Target-Model que pode ser usado para fins de registros em log.

nota

Multi-model Atualmente, os endpoints para instâncias com suporte de GPU são compatíveis somente com o contêiner NVIDIA Triton Inference Server da SageMaker AI. Esse contêiner já implementa o contrato definido abaixo. Os clientes podem usar esse contêiner diretamente com seus endpoints de GPU multimodelo, sem nenhum trabalho adicional.

Você pode configurar as seguintes APIs em seus contêineres para endpoints multimodelo compatíveis com CPU:

API para carregar modelo

Instrui o contêiner a carregar um modelo específico presente no campo url do corpo na memória do contêiner do cliente e a manter o controle dele com o model_name atribuído. Depois que um modelo é carregado, o contêiner deve estar pronto para atender a solicitações de inferência usando esse 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", }
nota

Se model_name já estiver carregado, a API deverá retornar 409. Sempre que um modelo não puder ser carregado devido à falta de memória ou a qualquer outro recurso, essa API deve retornar um código de status HTTP 507 para a SageMaker IA, que então inicia o descarregamento de modelos não utilizados para recuperação.

API para listar modelo

Retorna a lista de modelos carregados na memória do contêiner do cliente.

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", }, .... ] }

Essa API também oferece apoio à paginação.

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 Inicialmente, a IA pode chamar a API List Models sem fornecer um valor paranext_page_token. Se um campo nextPageToken for retornado como parte da resposta, ele será fornecido como o valor para next_page_token em uma chamada subsequente da List Models. Se um nextPageToken não for retornado, significa que não há mais modelos para retornar.

API para obter modelo

Essa é uma API de leitura simples na entidade model_name.

GET /models/{model_name} HTTP/1.1 Accept: application/json { "modelName" : "{model_name}", "modelUrl" : "/opt/ml/models/{model_name}/model", }
nota

Se model_name não estiver carregado, a API retornará 404.

API para descarregar modelo

Instrui a plataforma de SageMaker IA a instruir o contêiner do cliente a descarregar um modelo da memória. Isso inicia a remoção de um modelo candidato conforme determinado pela plataforma ao iniciar o processo de carregamento de um novo modelo. Os recursos provisionados em model_name deverão ser recuperados pelo contêiner quando essa API retornar uma resposta.

DELETE /models/{model_name}
nota

Se model_name não estiver carregado, a API retornará 404.

API para invocar modelo

Faz uma solicitação de predição do model_name específico fornecido. A InvokeEndpoint solicitação do SageMaker AI Runtime é compatível X-Amzn-SageMaker-Target-Model com um novo cabeçalho que segue o caminho relativo do modelo especificado para invocação. O sistema de SageMaker IA constrói o caminho absoluto do modelo combinando o prefixo fornecido como parte da chamada da CreateModel API com o caminho relativo do modelo.

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
nota

Se model_name não estiver carregado, a API retornará 404.

Além disso, em instâncias de GPU, se InvokeEndpoint falhar devido à falta de memória ou de outros recursos, essa API deve retornar um código de status HTTP 507 para a SageMaker IA, que então inicia o descarregamento de modelos não utilizados para recuperação.