

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Contrato de contenedores personalizado para terminales Multi-Model
<a name="mms-container-apis"></a>

Para gestionar varios modelos, el contenedor debe admitir un conjunto de API que permitan a Amazon SageMaker AI comunicarse con el contenedor para cargar, publicar, obtener y descargar los modelos según sea necesario. El `model_name` se utiliza en el nuevo conjunto de API como parámetro de entrada clave. Se espera que el contenedor del cliente realice un seguimiento de los modelos cargados mediante `model_name` como clave de asignación. Además, `model_name` es un identificador opaco y no es necesariamente el valor del parámetro `TargetModel` transferido a la API `InvokeEndpoint`. El valor `TargetModel` original en la solicitud `InvokeEndpoint` se transfiere al contenedor en las API como encabezado `X-Amzn-SageMaker-Target-Model` que se puede utilizar para fines de registro.

**nota**  
Multi-model Actualmente, los terminales de las instancias respaldadas por GPU solo son compatibles con el contenedor del SageMaker servidor de [inferencia NVIDIA Triton](https://docs.aws.amazon.com/sagemaker/latest/dg/triton.html) de AI. Este contenedor ya implementa el contrato que se define a continuación. Los clientes pueden usar este contenedor directamente con sus puntos de conexión multimodelo de GPU, sin necesidad de realizar ningún trabajo adicional.

Puede configurar las siguientes API en sus contenedores para puntos de conexión multimodelo respaldados por CPU.

**Topics**
+ [API Load Model](#multi-model-api-load-model)
+ [API List Model](#multi-model-api-list-model)
+ [API Get Model](#multi-model-api-get-model)
+ [API Unload Model](#multi-model-api-unload-model)
+ [API Invoke Model](#multi-model-api-invoke-model)

## API Load Model
<a name="multi-model-api-load-model"></a>

Indica al contenedor que cargue un modelo particular presente en el campo `url` del cuerpo en la memoria del contenedor del cliente y que realice un seguimiento del mismo con el `model_name` asignado. Después de cargar un modelo, el contenedor debe estar listo para servir solicitudes de inferencia usando este `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**  
Si `model_name` ya está cargado, esta API debería devolver 409. Cada vez que no se pueda cargar un modelo por falta de memoria o de cualquier otro recurso, esta API debería devolver un código de estado HTTP 507 a SageMaker AI, que luego iniciará la descarga de los modelos no utilizados para su recuperación.

## API List Model
<a name="multi-model-api-list-model"></a>

Devuelve la lista de modelos cargados en la memoria del contenedor del 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",
        },
        ....
    ]
}
```

Esta API también admite paginación.

```
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, AI puede llamar a la API List Models sin proporcionar un valor para. `next_page_token` Si se devuelve un campo `nextPageToken` como parte de la respuesta, se proporcionará como el valor de `next_page_token` una llamada posterior a List Models. Si no se devuelve un `nextPageToken`, significa que no hay más modelos para devolver.

## API Get Model
<a name="multi-model-api-get-model"></a>

Esta es una API de lectura simple en la entidad `model_name`.

```
GET /models/{model_name} HTTP/1.1
Accept: application/json

{
     "modelName" : "{model_name}",
     "modelUrl" : "/opt/ml/models/{model_name}/model",
}
```

**nota**  
Si `model_name` no se carga, esta API debería devolver 404.

## API Unload Model
<a name="multi-model-api-unload-model"></a>

Indica a la plataforma de SageMaker IA que dé instrucciones al contenedor del cliente para que descargue un modelo de la memoria. Esto inicia el desalojo de un modelo candidato tal como determina la plataforma al iniciar el proceso de carga de un nuevo modelo. Los recursos aprovisionados a `model_name` los debe reclamar el contenedor cuando esta API devuelve una respuesta.

```
DELETE /models/{model_name}
```

**nota**  
Si `model_name` no se carga, esta API debería devolver 404.

## API Invoke Model
<a name="multi-model-api-invoke-model"></a>

Realiza una solicitud de predicción del `model_name` particular suministrado. La `InvokeEndpoint` solicitud SageMaker AI Runtime se admite `X-Amzn-SageMaker-Target-Model` como un nuevo encabezado que sigue la ruta relativa del modelo especificado para la invocación. El sistema de SageMaker IA construye la ruta absoluta del modelo combinando el prefijo que se proporciona como parte de la llamada a la `CreateModel` API con la ruta relativa del 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**  
Si `model_name` no se carga, esta API debería devolver 404.

Además, en las instancias de GPU, si `InvokeEndpoint` se produce un error por falta de memoria o de otros recursos, esta API debería devolver un código de estado HTTP 507 a la SageMaker IA, que a su vez iniciará la descarga de los modelos no utilizados para su recuperación.