Invocar un punto de conexión multimodelo
Para invocar un punto de conexión multimodelo, utilice invoke_endpointTargetModel que especifique cuál de los modelos en el punto de conexión establecer como destino. La solicitud InvokeEndpoint en tiempo de ejecución de SageMaker AI admite X-Amzn-SageMaker-Target-Model como nuevo encabezado que toma la ruta relativa del modelo especificado para la invocación. El sistema de SageMaker AI construye la ruta absoluta del modelo combinando el prefijo que se proporciona como parte de la llamada a la API CreateModel con la ruta relativa del modelo.
Los siguientes procedimientos son los mismos para los puntos de conexión multimodelo respaldados por CPU y GPU.
El punto de conexión multimodelo carga dinámicamente los modelos de destino según sea necesario. Esto se puede observar al ejecutar el Cuaderno de muestras de MME
nota
En el caso de las instancias respaldadas por GPU, el código de respuesta HTTP con 507 del contenedor de la GPU indica una falta de memoria o de otros recursos. Esto hace que los modelos no utilizados se descarguen del contenedor para cargar los modelos que se utilizan con más frecuencia.
Reintentar solicitudes en caso de errores de ModelNotReadyException
La primera vez que llame a invoke_endpoint para solicitar un modelo, este se descargará de Amazon Simple Storage Service y se cargará en el contenedor de inferencias. Esto hace que la primera llamada tarde más en devolverse. Las llamadas posteriores al mismo modelo finalizan más rápido, porque el modelo ya está cargado.
SageMaker AI devuelve la respuesta a una llamada a invoke_endpoint en un plazo máximo de 60 segundos. Algunos modelos son demasiado grandes para descargarlos en 60 segundos. Si el modelo no termina de cargarse antes del límite de tiempo de espera de 60 segundos, la solicitud a invoke_endpoint devuelve el código de error ModelNotReadyException y el modelo continúa descargándose y cargándose en el contenedor de inferencia durante un máximo de 360 segundos. Si recibe un código de error ModelNotReadyException para una solicitud invoke_endpoint, vuelva a intentarlo. De forma predeterminada, los SDK AWS para Python (Boto 3) (que utilizan el modo de reintento heredadoinvoke_endpoint que generan errores ModelNotReadyException. Puede configurar la estrategia de reintento para seguir reintentando la solicitud durante un máximo de 360 segundos. Si espera que su modelo tarde más de 60 segundos en descargarse y cargarse en el contenedor, establezca el tiempo de espera del socket del SDK en 70 segundos. Para obtener más información sobre cómo configurar la estrategia de reintento para AWS SDK para Python (Boto3), consulte Configurar un modo de reintentoinvoke_endpoint durante un máximo de 180 segundos.
import boto3 from botocore.config import Config # This example retry strategy sets the retry attempts to 2. # With this setting, the request can attempt to download and/or load the model # for upto 180 seconds: 1 orginal request (60 seconds) + 2 retries (120 seconds) config = Config( read_timeout=70, retries={ 'max_attempts': 2 # This value can be adjusted to 5 to go up to the 360s max timeout } ) runtime_sagemaker_client = boto3.client('sagemaker-runtime', config=config)