¿Por qué mi punto de conexión de Amazon SageMaker pasa a un estado de error cuando creo o actualizo un punto de conexión?

Última actualización: 21/11/2022

Quiero solucionar los errores de creación o actualización de mi punto de conexión de Amazon SageMaker

Resolución

Cuando se produce un error al crear o actualizar el punto de conexión de SageMaker, SageMaker explica el motivo del error. Use una de las siguientes opciones para revisar este motivo:

  • Compruebe el punto de conexión en la consola de SageMaker. El motivo del error se informa en la consola.
  • Ejecute el comando describe-endpoint de la Interfaz de la línea de comandos de AWS (AWS CLI). Compruebe el campo FailureReason para conocer el motivo del error.

Nota: Si recibe errores mientras ejecuta los comandos de AWS CLI, asegúrese de que esté utilizando la versión más reciente de AWS CLI.

Los siguientes son algunos de los motivos detrás del error y sus métodos de resolución.

No se puede aprovisionar la capacidad de computación de ML solicitada debido a un error InsufficientInstanceCapacity

Puede que aparezca el siguiente error al intentar crear un punto de conexión:

Unable to provision requested ML compute capacity due to InsufficientInstanceCapacity error

Este error se produce cuando AWS no tiene la capacidad suficiente para aprovisionar las instancias solicitadas para el punto de conexión.

Puede solucionar este error al probar uno o más de los siguientes métodos:

  • Espere unos minutos e inténtelo de nuevo, ya que la capacidad puede cambiar con frecuencia.
  • Si usa varias instancias para el punto de conexión, intente crear el punto de conexión con un número inferior de instancias. Si tiene configurado el escalado automático, SageMaker puede escalarlo vertical u horizontalmente según sea necesario y según lo permita la capacidad.
  • Pruebe con otro tipo de instancia que sea compatible con la carga de trabajo. Después de crear un punto de conexión, actualícelo con el tipo de instancia deseado. Como SageMaker usa un método de implementación azul/verde para maximizar la disponibilidad, puede llevar a cabo la transición a un nuevo tipo de instancia sin afectar a las cargas de trabajo de producción actuales.

El contenedor de la variante de producción <variant> no pasó la comprobación de estado del ping. Compruebe los registros de CloudWatch para revisar este punto de conexión.

Los contenedores usados para los puntos de conexión de SageMaker deben implementar un servidor web que responda a los puntos de conexión /invocations y /ping. Al crear un punto de conexión, SageMaker comienza a enviar solicitudes GET periódicas al punto de conexión /ping una vez iniciado el contenedor.

Como mínimo, un contenedor debe responder con un código de estado HTTP 200 OK y un cuerpo vacío para indicar que el contenedor está listo para aceptar solicitudes de inferencia. Este error se produce cuando SageMaker no recibe respuestas coherentes del contenedor en un plazo de cuatro minutos después de que este se inicia. SageMaker no considera que el estado del punto de conexión sea correcto porque no responde a la comprobación de estado. Por lo tanto, el punto de conexión se marca como Failed (Fallido).

También se puede producir un error en la comprobación de estado al usar una de las imágenes de los Contenedores de aprendizaje profundo de AWS. Estas imágenes usan TorchServe o Multi Model Server para servir a los modelos que implementan los puntos de conexión HTTP para llevar a cabo comprobaciones de estado e inferencia. Estos marcos comprueban si el modelo está cargado antes de enviar a SageMaker una respuesta 200 OK. Si el servidor no puede ver que el modelo está cargado, se produce un error en la comprobación de estado. Es posible que un modelo no se cargue por muchos motivos, incluido el uso de memoria. Los mensajes de error correspondientes se registran en los registros de Amazon CloudWatch del punto de conexión. Si el código cargado en el punto de conexión provocó el error (por ejemplo, model_fn para PyTorch), los errores se registran en AWS CloudTrail. Para aumentar la verbosidad de estos registros, actualice la variable de entorno SAGEMAKER_CONTAINER_LOG_LEVEL para el modelo con los niveles de registro para el registro de Python.

Una solicitud de comprobación de estado debe recibir una respuesta en un plazo de dos segundos para que sea correcta. Asegúrese de probar la respuesta. Para ello, inicie el contenedor del modelo localmente y envíe una solicitud GET al contenedor para comprobar la respuesta.

No se pudo extraer el archivo de datos del modelo para el contenedor

SageMaker espera un archivo TAR con los datos del modelo para usarlo en el punto de conexión. Después de que SageMaker descargue el archivo TAR, se extrae el archivo de datos. Este error puede producirse si SageMaker no logra extraer este archivo de datos. Por ejemplo, SageMaker no puede extraer el archivo de datos si el artefacto del modelo contiene enlaces simbólicos a los archivos ubicados en el archivo TAR.

Cuando cree un punto de conexión, asegúrese de que los artefactos del modelo no incluyan enlaces simbólicos en el archivo TAR. Para comprobar si el archivo TAR incluye enlaces simbólicos, extraiga los datos del modelo y, a continuación, ejecute el siguiente comando dentro de los artefactos:

find . -type l -ls

Este comando muestra todos los enlaces simbólicos encontrados después de hacer una búsqueda en el directorio actual y en cualquiera de sus subdirectorios. Sustituya cualquier enlace devuelto por las copias reales del archivo.

CannotStartContainerError

Este error se produce cuando SageMaker no puede iniciar el contenedor para prepararlo para la inferencia.

Cuando SageMaker inicia el punto de conexión, el contenedor se inicia con el siguiente comando:

docker run <image-id> serve

Cuando se ejecuta este comando, el contenedor debe iniciar el proceso de servicio.

Para solucionar este error, use el modo local para el SDK para Python de SageMaker. O bien, intente ejecutar la imagen de inferencia con el comando docker run. El SDK para Python de SageMaker carga el modelo de forma similar a un punto de conexión de SageMaker. Sin embargo, Docker no carga el modelo a menos que configure el comando o el contenedor para hacerlo. Puede usar un comando similar al siguiente para cargar el modelo de forma local:

docker run -v $(pwd)/test_dir:/opt/ml -p 8080:8080 --rm ${image} serve

¿Le resultó útil este artículo?


¿Necesita asistencia técnica o con la facturación?