Mac

Lightgbm ejecuta OMP: Error # 15: Inicializando libomp.dylib, pero descubrió que libiomp5.dylib ya se inicializó

Lightgbm Runs Omp Error 15

Se produjo el siguiente error al ejecutar lightgbm 2.2.3:
OMP: Error # 15: Inicializando libomp.dylib, pero encontró que libiomp5.dylib ya se inicializó

Aquí hay una explicación:
OMP: Sugerencia Esto significa que se han vinculado varias copias del tiempo de ejecución de OpenMP al programa. Eso es peligroso, ya que puede degradar el rendimiento o provocar resultados incorrectos. Lo mejor que puede hacer es asegurarse de que solo un tiempo de ejecución de OpenMP esté vinculado al proceso, p. Ej. evitando la vinculación estática del tiempo de ejecución de OpenMP en cualquier biblioteca. Como solución alternativa insegura, no admitida e indocumentada, puede configurar la variable de entorno KMP_DUPLICATE_LIB_OK = TRUE para permitir que el programa continúe ejecutándose, pero eso puede causar bloqueos o producir silenciosamente resultados incorrectos. Para obtener más información, consulte http://openmp.llvm.org/

Esto significa que cuando el programa se está ejecutando, hay enlaces a múltiples copias de openMP, lo que puede causar una degradación del rendimiento o resultados incorrectos. Es mejor asegurarse de que solo se acceda a uno.
¡Pero no entiendo qué es openMP! ~~~

Primero resuelva este problema:

Método 1)

Como se explica en la explicación, configure la variable de entorno KMP_DUPLICATE_LIB_OK en TRUE, pero esto también puede causar un bloqueo o un resultado incorrecto. . .

|_+_|

Método 2)

en LightGBM La Pregunta 10 de la página de preguntas frecuentes menciona este problema y ofrece una solución. (Pero solo para los usuarios de macOS, otros usuarios deben encontrar el paquete de conflicto y elegir uno de ellos).

Si está utilizando Python distribuido por Conda, entonces es muy probable que el error sea causado por el paquete numpy de Conda que incluye el paquete mkl que a su vez entra en conflicto con la biblioteca de todo el sistema. En este caso, puede actualizar el paquete numpy en Conda o reemplazar la instancia de la biblioteca OpenMP de Conda por una para todo el sistema creando un enlace simbólico en la carpeta del entorno Conda $ CONDA_PREFIX / lib.

Si Python está básicamente instalado en Conda, el mkl en el paquete numpy en Conda puede entrar en conflicto fácilmente con la biblioteca del sistema. Puede elegir actualizar el paquete numpy en Conda o configurarlo como biblioteca del sistema.

Suponiendo que está utilizando macOS con Homebrew, el comando que sobrescribe los archivos de la biblioteca OpenMP en el entorno activo actual de Conda con enlaces simbólicos a las bibliotecas de todo el sistema instaladas por Homebrew:

|_+_|

En una máquina con MacOS instalado con Homebrew conda, puede conectar el entorno conda directamente a la biblioteca de todo el sistema instalada con Homebrew ingresando el contenido anterior directamente en la terminal. CONDA_PREFIX es la ruta de instalación de Conda.