es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Excepción de carga de PyTorch DJL en Java.

Estoy ejecutando un trabajo de Flink en modo de implementación independiente que utiliza Java DJL para cargar un modelo de PyTorch. El modelo se carga correctamente y puedo cancelar el trabajo a través de la API de Flink Rest. Sin embargo, cuando intento lanzar el trabajo de Flink nuevamente, muestra el siguiente mensaje de error:


UnsatisfiedLinkError: <pytorch>.so ya cargado en otro classloader

Es necesario reiniciar la implementación independiente para poder cargarlo nuevamente. ¿Es posible cerrar el proceso junto con la solicitud de cierre del trabajo para poder cargarlo nuevamente sin reiniciar?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Solución para el error UnsatisfiedLink en el modo de despliegue independiente de Flink

    El error “UnsatisfiedLink Error” ocurre porque la biblioteca “pytorch.so” ya está cargada en otro classloader. Esto puede suceder cuando el trabajo de Flink se cancela, pero la biblioteca pytorch no se libera del classloader anterior.

    Para resolver este problema, puedes agregar un hook de cierre en tu código, que cerrará el proceso junto con la solicitud de cierre del trabajo, liberando así la biblioteca pytorch del classloader anterior. Aquí tienes un ejemplo de cómo agregar un hook de cierre:

    Runtime.getRuntime().addShutdownHook(new Thread() {
        public void run() {
            // Cerrar cualquier recurso y bibliotecas, incluyendo pytorch
            // Esto liberará la biblioteca del classloader anterior
        }
    });
    

    Agrega este código en tu trabajo de Flink, y cerrará todos los recursos de manera adecuada cuando canceles el trabajo, permitiéndote cargar la biblioteca pytorch nuevamente sin reiniciar el despliegue.

Comments are closed.