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?
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:
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.