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

Extensiones vectoriales avanzadas (AVX, llamado Nuevas extensiones de Sandybridge) son extensiones a la arquitectura del conjunto de instrucciones x86 para microprocesadores de Intel y AMD propuestas por Intel en marzo de 2008 e inicialmente respaldadas por Intel con un procesador Sandy Bridge lanzado en el primer trimestre de 2011 y luego por AMD con el envío del procesador Bulldozer en el tercer trimestre de 2011. AVX proporciona nuevas funciones, nuevas instrucciones y un nuevo esquema de codificación.

La advertencia se muestra en cmd

La biblioteca compartida de TensorFlow imprime este mensaje de advertencia. Como indica el mensaje, la biblioteca compartida no incluye el tipo de instrucciones que puede usar su CPU.

¿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, y para las más nuevas, el usuario tiene que construir el flujo tensorial desde la fuente para su CPU. A continuación se muestra toda la información que necesita saber 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 (Fusión de multiplicación plural); esa es la operación de multiplicación del tapón flotante, y toda esta operación se realiza en un solo paso. Esto ayuda a agilizar muchas operaciones sin ningún problema. Hace que el cálculo del álgebra sea más rápido y fácil de usar, también el producto punto, la multiplicación de matrices, la determinación, etc. Y estas son las operaciones básicas más utilizadas para toda la formación 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 dice que su CPU es compatible con AVX, por lo que ese es un buen punto.

Tecnología Intel AVX

¿Por qué no usarlo por defecto?

Esto se debe a que la distribución predeterminada de TensorFlow se crea sin las extensiones de CPU. Por extensiones de CPU menciona AVX, AVX2, FMA, etc. Las instrucciones que desencadenan este problema no están habilitadas de forma predeterminada en las compilaciones predeterminadas disponibles. Las razones son que no están habilitadas para que esto sea lo 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 utiliza en el aprendizaje automático a pequeña escala y se espera el uso de la GPU cuando se utiliza para la formación de aprendizaje automático a mediana o gran escala.

¡Arregle la advertencia!

Estas advertencias son simples mensajes. El propósito de esta advertencia es informarle sobre el TensorFlow tomado de la fuente. Cuando toma TensorFlow de la fuente, puede ser más rápido en la máquina. Entonces, todas estas advertencias le indican que no debe compilar 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 lanzarán en un dispositivo GPU. Y si desea no volver a ver este error nunca más, puede ignorarlo agregando:

importación de la Módulo del sistema operativo en el código de su programa principal y también establezca el objeto de mapeo en él

# For disabling the warning
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

Pero si estás en un Unix, luego use el comando de exportación en bash shell

export TF_CPP_MIN_LOG_LEVEL=2

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