Correção: Sua CPU suporta instruções que este Binário TensorFlow não foi compilado para usar o AVX2

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

O aviso é mostrado em cmd

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 esse aviso?

Após o TensorFlow 1.6, os binários agora usam instruções AVX que podem não ser executadas em CPUs mais antigas. Assim, as CPUs mais antigas não poderão rodar o AVX, enquanto que, para as mais recentes, o usuário precisa construir o fluxo de tensão a partir da fonte para sua CPU. Abaixo está toda a informação que você precisa saber sobre este aviso em particular. Além disso, um método para se livrar desse aviso para uso futuro.

O que o AVX faz?

Em particular, o AVX introduziu o FMA (Fused multiplply-add); que é a operação de adição múltipla de ponto flutuante, e toda essa operação é feita em uma única etapa. Isso ajuda a acelerar muitas operações sem nenhum problema. Torna a computação algébrica mais rápida e fácil de usar, também o produto de ponto, multiplicação de matriz, convolução, etc. E estas são todas as operações mais usadas e básicas para cada treinamento de aprendizado de máquina. As CPUs que suportam o AVX e o FMA serão muito mais rápidas que as mais antigas. Mas o aviso indica que o seu processador suporta o AVX, então é um bom ponto.

Tecnologia Intel AVX

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, ele indica o AVX, AVX2, FMA, etc. As instruções que acionam esse problema não são ativadas por padrão nas compilações padrão disponíveis. Os motivos pelos quais eles não estão habilitados são para torná-lo mais compatível com o maior número possível de CPUs. Também 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 de GPU é esperado quando é usado para um treinamento de aprendizado de máquina de médio ou grande porte.

Corrigindo o aviso!

Esses avisos são apenas mensagens simples. O objetivo desses avisos é informar sobre o TensorFlow criado a partir da fonte. Quando você constrói o TensorFlow a partir da fonte, ele pode ser mais rápido na máquina. Então, todos esses avisos estão falando 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 a AVX. Porque os mais caros serão despachados em um dispositivo de GPU. E se você não quiser mais ver esse erro, simplesmente ignore-o adicionando isto:

importar o módulo do sistema operacional em seu código de programa principal e também definir o objeto de mapeamento para ele

 # Para desabilitar o aviso import os os.environ ['TF_CPP_MIN_LOG_LEVEL'] = '2' 

Mas se você estiver em um Unix, use o comando de exportação no shell bash

 exportar TF_CPP_MIN_LOG_LEVEL = 2 

Mas se não tiver GPU e você quiser usar seu processador o máximo possível, você deve criar o TensorFlow a partir da fonte otimizada para seu processador com AVX, AVX2 e FMA habilitado aqui.

Artigos Interessantes