

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
<a name="mms-container-apis"></a>

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](https://docs.aws.amazon.com/sagemaker/latest/dg/triton.html) 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:

**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.