Solución: su CPU admite instrucciones de que este binario de TensorFlow no se compiló para usar AVX2

Las extensiones vectoriales avanzadas ( AVX , también conocidas como Sandy Bridge New Extensions ) son extensiones de la arquitectura del conjunto de instrucciones x86 para microprocesadores de Intel y AMD propuestas por Intel en marzo de 2008 y admitidas por primera vez por Intel con el procesador Sandy Bridge que se distribuyó en el primer trimestre de 2011 y posteriores. de AMD con el procesador Bulldozer que se distribuirá en el tercer trimestre de 2011. AVX ofrece nuevas funciones, nuevas instrucciones y un nuevo esquema de codificación.

Este mensaje de advertencia lo imprime la biblioteca compartida de TensorFlow. Como indica el mensaje, la biblioteca compartida no incluye el tipo de instrucciones que su CPU podría usar.

¿Qué causa esta advertencia?

Después de TensorFlow 1.6, los binarios ahora usan instrucciones AVX que es posible que ya no se ejecuten en CPU más antiguas. Por lo tanto, las CPU más antiguas no podrán ejecutar AVX, mientras que para las más nuevas, el usuario debe crear el flujo tensorial desde la fuente para su CPU. A continuación se muestra toda la información que necesita sobre esta advertencia en particular. Además, un método para deshacerse de esta advertencia para uso futuro.

¿Qué hace el AVX?

En particular, el AVX introdujo el FMA (Fused multiply-add); que es la operación de suma múltiple de punto flotante, y toda esta operación se realiza en un solo paso. Esto ayuda a acelerar muchas operaciones sin ningún problema. Hace que el cálculo de álgebra sea más rápido y fácil de usar, también el producto punto, la multiplicación de matrices, la convolución, etc. Y estas son las operaciones básicas y más utilizadas para cada entrenamiento de aprendizaje automático. Las CPU que admiten AVX y FMA serán mucho más rápidas que las más antiguas. Pero la advertencia indica que su CPU es compatible con AVX, por lo que es un buen punto.

¿Por qué no se usa por defecto?

Eso se debe a que la distribución predeterminada de TensorFlow se crea sin las extensiones de CPU. Por extensiones de CPU, indica AVX, AVX2, FMA, etc. Las instrucciones que desencadenan este problema no están habilitadas de forma predeterminada en las compilaciones predeterminadas disponibles. La razón por la que no están habilitados es para hacer esto más compatible con tantas CPU como sea posible. Además, para comparar estas extensiones, son mucho más lentas en CPU que en GPU. La CPU se usa en el aprendizaje automático a pequeña escala, mientras que se espera el uso de GPU cuando se usa para una capacitación de aprendizaje automático a mediana o gran escala.

¡Arreglando la Advertencia!

Estas advertencias son simples mensajes. El propósito de estas advertencias es informarle sobre el TensorFlow compilado desde la fuente. Cuando compila TensorFlow desde la fuente, puede ser más rápido en la máquina. Entonces, todas estas advertencias le informan sobre la compilación de TensorFlow desde la fuente.

Si tiene una GPU en su máquina, puede ignorar estas advertencias del soporte de AVX. Porque los más caros se enviarán en un dispositivo GPU. Y si no desea ver más este error, simplemente puede ignorarlo agregando esto:

importar el módulo del sistema operativo en el código de su programa principal y también establecer el objeto de mapeo para él

# Para deshabilitar la advertencia import os.environ ['TF_CPP_MIN_LOG_LEVEL'] = '2'

Pero si está en Unix , use el comando exportar en bash shell

exportar TF_CPP_MIN_LOG_LEVEL = 2

Pero si no tiene GPU y desea usar su CPU tanto como sea posible, debe compilar TensorFlow desde la fuente optimizada para su CPU con AVX, AVX2 y FMA habilitados aquí.