¿Cómo puedo solucionar el error de inferencia de Amazon SageMaker «Se agotó el tiempo de espera del upstream (110): Tiempo de espera de la conexión agotado) al leer el encabezado de la respuesta del upstream»?

4 minutos de lectura
0

Al implementar un punto de conexión de Amazon SageMaker o al ejecutar un trabajo de BatchTransform, se agota el tiempo de espera de la conexión y aparece este error: «Se agotó el tiempo de espera del upstream (110: Tiempo de espera de la conexión agotado) al leer el encabezado de la respuesta del upstream, el cliente: 169.xxx.xxx.xxx, servidor: , solicitud: «POST /invocations HTTP/1.1», upstream: «http://unix:/tmp/gunicorn.sock/invocations» , host: «169.xxx.xxx.xxx:8080»

Descripción breve

Este error indica un problema con la conexión entre NGINX y el servidor web. Ambos componentes se ejecutan en el contenedor del modelo, independientemente de si está utilizando su propio contenedor o un contenedor ya construido. Estos componentes no están directamente relacionados con el alojamiento de SageMaker ni con las transformaciones por lotes. Sin embargo, cuando se agota el tiempo de espera de la conexión entre NGINX y el servidor web, SageMaker no puede obtener la inferencia del punto de conexión /invocations.

Para solucionar este problema:

  1. Reduzca la latencia del contenedor del algoritmo o aumente el límite de tiempo de espera del contenedor.
  2. Aumente la configuración del tiempo de espera de NGINX.conf.

Resolución

Reduzca la latencia del contenedor del algoritmo o aumente el límite de tiempo de espera

  • Si está ejecutando un código de inferencia para servicios de alojamiento: Los contenedores de su modelo deben responder a las solicitudes en un plazo de 60 segundos. El modelo en sí puede tener un tiempo de procesamiento máximo de 60 segundos. Si sabe que su modelo necesita entre 50 y 60 segundos de tiempo de procesamiento, configure el tiempo de espera del socket del SDK a 70 segundos. Para obtener más información, consulte Cómo debe responder el contenedor a las solicitudes de inferencia.
  • Si está ejecutando un código de inferencia para la transformación por lotes: Utilice ModelClientConfig para configurar los parámetros InvocationsTimeoutInSeconds e InvocationsMaxRetries.

Amazon SageMaker establece las variables de entorno especificadas en CreateModel y CreateTransformJob en su contenedor. Ajuste los siguientes parámetros de la API para reducir la latencia del contenedor del algoritmo. Por ejemplo, si la entrada se puede dividir, limite el tamaño de la carga útil de cada solicitud configurando el campo MaxPayloadInMB al crear un trabajo de transformación.

  • MaxPayloadInMB: El tamaño máximo de la carga útil que se envía al contenedor. Si el contenedor puede procesar rápidamente una transformación por lotes, aumente esta propiedad. Si la transformación por lotes tarda más de lo esperado, reduzca esta propiedad.
  • MaxConcurrentTransforms: El valor predeterminado es 1. Aumente esta configuración si tiene más de un trabajador de NGINX.
  • BatchStrategy: Para incluir la mayor cantidad de registros en un mini-lote (hasta el límite de MaxPayloadInMB), configure BatchStrategy a MultiRecord y SplitType a Line.

Si utiliza un contenedor de SageMaker Framework que implementa Gunicorn, pase estas propiedades al contenedor de Docker como variables de entorno:

  • SAGEMAKER _MODEL_SERVER_TIMEOUT: El tiempo de espera del servidor Gunicorn. Para permitir que la solicitud se procese durante más tiempo antes de que se cierre la conexión, aumente este valor.
  • SAGEMAKER _MODEL_SERVER_WORKERS: La cantidad de trabajadores por CPU.

Aumente la configuración de tiempo de espera de NGINX.conf

Si utiliza uno de los contenedores de Docker prediseñados de Amazon SageMaker, no puede modificar el archivo NGINX.conf. Puede modificar NGINX.conf solo si utiliza su propio contenedor de Docker.

Los tiempos de espera de NGINX pueden provocar errores porque Amazon SageMaker cierra la conexión una vez transcurrido el tiempo de espera. Si el contenedor intenta leer o escribir en la conexión cerrada, la solicitud falla. Modifique una o más de las siguientes propiedades para adaptarlas a la sobrecarga de la red.

  • proxy_read_timeout: Esta es la cantidad de tiempo que NGINX espera una respuesta del modelo después de una llamada a request.send. Aumente este valor para que Amazon SageMaker tenga más tiempo para procesar la solicitud antes de cerrar la conexión.
  • worker_processes: Este es el número de hilos para las conexiones entrantes. En la mayoría de los casos, el valor debe ser igual o mayor que el número de núcleos de la CPU. Por ejemplo, para un tipo de instancia de dos núcleos, como ml.m5.large, establezca esta propiedad en un mínimo de dos.
  • worker_connections: Este es el número máximo de conexiones simultáneas para cada proceso de trabajo. Se recomienda establecer el valor inicial para esto en 1024.

Para obtener más información sobre los ajustes de configuración, consulte el módulo ngx_http_proxy_module en la documentación de NGINX.


OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 2 años