

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 para contenedores personalizados para puntos de conexión multimodelo
<a name="mms-container-apis"></a>

Para gestionar varios modelos, tu contenedor debe ser compatible con un conjunto APIs que permita a Amazon SageMaker AI comunicarse con el contenedor para cargar, publicar, obtener y descargar los modelos según sea necesario. `model_name`Se utiliza en el nuevo conjunto de APIs 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 `TargetModel` valor original de la `InvokeEndpoint` solicitud se pasa al contenedor en APIs forma de `X-Amzn-SageMaker-Target-Model` encabezado que se puede usar para fines de registro.

**nota**  
Actualmente, solo se admiten terminales multimodelo para instancias respaldadas por GPU con el contenedor del servidor de [inferencia NVIDIA Triton](https://docs.aws.amazon.com/sagemaker/latest/dg/triton.html) de SageMaker 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 lo siguiente APIs en sus contenedores para los puntos finales multimodelo respaldados por la 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.