Correção: sua CPU oferece suporte a instruções de que este binário do TensorFlow não foi compilado para usar AVX2

Advanced Vector Extensions ( AVX , também conhecido como Sandy Bridge New Extensions ) são extensões da arquitetura de conjunto de instruções x86 para microprocessadores da Intel e AMD proposta pela Intel em março de 2008 e com suporte pela Intel com o processador Sandy Bridge lançado no primeiro trimestre de 2011 e posteriores pela AMD com o processador Bulldozer lançado no terceiro trimestre de 2011. AVX fornece novos recursos, novas instruções e um novo esquema de codificação.

Esta mensagem de aviso é impressa pela biblioteca compartilhada do TensorFlow. Como a mensagem indica, a biblioteca compartilhada não inclui o tipo de instruções que sua CPU poderia usar.

O que causa este aviso?

Após o TensorFlow 1.6, os binários agora usam instruções AVX, que podem não funcionar mais em CPUs mais antigas. Portanto, as CPUs mais antigas não serão capazes de executar o AVX, enquanto para as mais novas, o usuário precisa construir o tensorflow da fonte para sua CPU. Abaixo estão todas as informações que você precisa saber sobre este aviso específico. Além disso, um método sobre como se livrar desse aviso para uso futuro.

O que o AVX faz?

Em particular, o AVX introduziu o FMA (Fused multiply-add); que é a operação de multiplicação-adição de ponto flutuante, e toda essa operação é feita em uma única etapa. Isso ajuda a acelerar muitas operações sem nenhum problema. Isso torna o cálculo de álgebra mais rápido e fácil de usar, também o produto escalar, multiplicação de matrizes, convolução, etc. E essas são as operações básicas mais usadas para todo treinamento de aprendizado de máquina. As CPUs que suportam AVX e FMA serão muito mais rápidas do que as mais antigas. Mas o aviso afirma que sua CPU suporta AVX, então é um bom ponto.

Por que não é usado por padrão?

Isso ocorre porque a distribuição padrão do TensorFlow é construída sem as extensões da CPU. Por extensões de CPU, indica AVX, AVX2, FMA, etc. As instruções que acionam este problema não são habilitadas por padrão nas compilações padrão disponíveis. A razão pela qual eles não estão habilitados é para tornar isso mais compatível com o maior número possível de CPUs. Além disso, para comparar essas extensões, elas são muito mais lentas na CPU do que na GPU. A CPU é usada no aprendizado de máquina em pequena escala, enquanto o uso da GPU é esperado quando ela é usada para um treinamento de aprendizado de máquina em média ou grande escala.

Consertando o Aviso!

Esses avisos são apenas mensagens simples. O objetivo desses avisos é informá-lo sobre o TensorFlow construído a partir da fonte. Quando você cria o TensorFlow a partir da fonte, ele pode ser mais rápido na máquina. Portanto, todos esses avisos falam sobre a criação do TensorFlow a partir da fonte.

Se você tiver uma GPU em sua máquina, poderá ignorar esses avisos do suporte do AVX. Porque os mais caros serão despachados em um dispositivo GPU. E se você quiser não ver mais esse erro, pode simplesmente ignorá-lo adicionando o seguinte:

importe o módulo OS em seu código de programa principal e também defina o objeto de mapeamento para ele

# Para desativar o aviso de importação os.environ ['TF_CPP_MIN_LOG_LEVEL'] = '2'

Mas se você estiver em um Unix , use o comando export no shell bash

exportar TF_CPP_MIN_LOG_LEVEL = 2

Mas se você não tiver GPU e quiser usar sua CPU o máximo possível, crie o TensorFlow a partir da fonte otimizada para sua CPU com AVX, AVX2 e FMA habilitados aqui.