Contrato para contenedores personalizados para puntos de conexión multimodelo - Amazon SageMaker AI

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

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

API Load Model

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

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

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

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

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.