

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 para contêineres personalizados para endpoints multimodelo
<a name="mms-container-apis"></a>

Para lidar com vários modelos, seu contêiner deve suportar um conjunto APIs que permita 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 o principal parâmetro de entrada. 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 `TargetModel` valor original na `InvokeEndpoint` solicitação é passado para o contêiner APIs como um `X-Amzn-SageMaker-Target-Model` cabeçalho que pode ser usado para fins de registro.

**nota**  
Atualmente, endpoints de vários modelos para instâncias com suporte de GPU são compatíveis somente com o contêiner [NVIDIA Triton Inference Server](https://docs.aws.amazon.com/sagemaker/latest/dg/triton.html) 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 o seguinte APIs em seus contêineres para endpoints multimodelo suportados por CPU.

**Topics**
+ [API para carregar modelo](#multi-model-api-load-model)
+ [API para listar modelo](#multi-model-api-list-model)
+ [API para obter modelo](#multi-model-api-get-model)
+ [API para descarregar modelo](#multi-model-api-unload-model)
+ [API para invocar modelo](#multi-model-api-invoke-model)

## API para carregar modelo
<a name="multi-model-api-load-model"></a>

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
<a name="multi-model-api-list-model"></a>

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 para`next_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
<a name="multi-model-api-get-model"></a>

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
<a name="multi-model-api-unload-model"></a>

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
<a name="multi-model-api-invoke-model"></a>

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.