Uw CPU ondersteunt instructies waarvoor deze TensorFlow-binary niet is gecompileerd om te gebruiken: AVX AVX2

Ik ben nieuw bij TensorFlow. Ik heb het onlangs geïnstalleerd (Windows CPU-versie) en kreeg het volgende bericht:

Succesvol geïnstalleerd tensorflow-1.4.0 tensorflow-tensorboard-0.4.0rc2

Toen ik probeerde te rennen

import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
sess.run(hello)
'Hello, TensorFlow!'
a = tf.constant(10)
b = tf.constant(32)
sess.run(a + b)
42
sess.close()

(die ik heb gevonden via https://github.com/tensorflow/tensorflow)

Ik heb het volgende bericht ontvangen:

02-2017 01:56:21.698935: IC:\tf_jenkins\home\workspace\rel-win\M\windows\PY\36\tensorflow\core\platform\cpu_feature_guard.cc:137] Uw CPU ondersteunt instructies waarvoor dit binaire TensorFlow-bestand niet is gecompileerd: AVX AVX2

Maar toen ik rende

import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))

het liep zoals het hoort en geeft Hello, TensorFlow! af, wat aangeeft dat de installatie inderdaad is gelukt, maar dat er nog iets anders mis is.

Weet u wat het probleem is en hoe u het kunt oplossen?


Antwoord 1, autoriteit 100%

Waar gaat deze waarschuwing over?

Moderne CPU’s bieden veel instructies op laag niveau, naast de gebruikelijke rekenkunde en logica, bekend als extensies, b.v. SSE2, SSE4, AVX, etc. Van de Wikipedia:

Advanced Vector Extensions (AVX) zijn uitbreidingen op de x86-instructie
set architectuur voor microprocessors van Intel en AMD voorgesteld door
Intel in maart 2008 en voor het eerst ondersteund door Intel met de Sandy
Bridge processor verzending in Q1 2011 en later door AMD met de
Bulldozer-processor geleverd in Q3 2011. AVX biedt nieuwe functies,
nieuwe instructies en een nieuw codeerschema.

In het bijzonder introduceert AVX fused multi-accumulate (FMA) -bewerkingen, die de lineaire algebra-berekening versnellen, namelijk puntproduct, matrixvermenigvuldiging, convolutie, enz. Bijna elke machine-learningtraining omvat een groot deel van deze bewerkingen, en zal daarom sneller zijn op een CPU die ondersteunt AVX en FMA (tot 300%). De waarschuwing geeft aan dat je CPU AVX ondersteunt (hoera!).

Ik wil hier benadrukken: het draait allemaal om alleen CPU.

Waarom wordt het dan niet gebruikt?

Omdat de standaarddistributie van tensorflow is gebouwd zonder CPU-extensies, zoals SSE4.1, SSE4.2, AVX, AVX2, FMA, etc. De standaard builds (die van pip install tensorflow) zijn bedoeld om compatibel te zijn met zoveel mogelijk CPU’s. Een ander argument is dat zelfs met deze extensies de CPU een stuk langzamer is dan een GPU, en dat verwacht wordt dat middelgrote en grootschalige machine learning-training op een GPU wordt uitgevoerd.

Wat moet je doen?

Als je een GPU hebt, zou je je geen zorgen moeten maken over AVX-ondersteuning, omdat de duurste operaties op een GPU-apparaat worden verzonden (tenzij expliciet ingesteld dat dit niet het geval is). In dit geval kunt u deze waarschuwing gewoon negeren door

# Just disables the warning, doesn't take advantage of AVX/FMA to run faster
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

… of door export TF_CPP_MIN_LOG_LEVEL=2 in te stellen als je Unix gebruikt. Tensorflow werkt sowieso prima, maar je zult deze vervelende waarschuwingen niet zien.


Als je geen GPU hebt en je CPU zoveel mogelijk wilt gebruiken, dan moet je tensorflow bouwen vanaf de bron die is geoptimaliseerd voor je CPU met AVX, AVX2 en FMA ingeschakeld als je CPU ze ondersteunt. Het is besproken in deze vraag en ook dit GitHub-probleem. Tensorflow gebruikt een ad-hoc bouwsysteem genaamd bazel en het bouwen ervan is niet zo triviaal, maar is zeker te doen. Hierna zal niet alleen de waarschuwing verdwijnen, maar ook de prestaties van de tensorflow verbeteren.


Antwoord 2, autoriteit 18%

Update de tensorflow-binary voor uw CPU & OS met deze opdracht

pip install --ignore-installed --upgrade "Download URL"

De download-URL van het whl-bestand is hier te vinden

https://github.com/lakshayg/tensorflow-build


Antwoord 3, autoriteit 4%

CPU-optimalisatie met GPU

Er zijn prestatieverbeteringen die u kunt behalen door TensorFlow vanaf de bron te installeren, zelfs als u een GPU heeft en deze gebruikt voor training en inferentie. De reden is dat sommige TF-bewerkingen alleen CPU-implementatie hebben en niet op uw GPU kunnen worden uitgevoerd.

Er zijn ook enkele prestatieverbeteringstips die goed gebruik maken van uw CPU. TensorFlow’s prestatiegids beveelt het volgende aan:

Het plaatsen van invoerpijplijnbewerkingen op de CPU kan de prestaties aanzienlijk verbeteren. Door de CPU te gebruiken voor de invoerpijplijn, kan de GPU zich concentreren op training.

Voor de beste prestaties moet u uw code schrijven om uw CPU en GPU te gebruiken om samen te werken, en niet alles op uw GPU dumpen als u die heeft.
Als uw TensorFlow-binaire bestanden zijn geoptimaliseerd voor uw CPU, kan dit uren aan bespaarde looptijd opleveren en u moet het een keer doen.


Antwoord 4, autoriteit 2%

Voor Windows kunt u de officiële Intel MKL-optimalisatie voor TensorFlow-wielen die zijn gecompileerd met AVX2. Deze oplossing versnelt mijn gevolgtrekking ~x3.

conda install tensorflow-mkl

Antwoord 5, autoriteit 2%

Ga voor Windows (met dank aan de eigenaar f040225) hier naar: https://github. com/fo40225/tensorflow-windows-wheel om de url voor uw omgeving op te halen op basis van de combinatie van “tf + python + cpu_instruction_extension”. Gebruik dan deze cmd om te installeren:

pip install --ignore-installed --upgrade "URL"

Als u de foutmelding “Bestand is geen zipbestand” tegenkomt, downloadt u de .whl naar uw lokale computer en gebruikt u deze cmd om te installeren:

pip install --ignore-installed --upgrade /path/target.whl

Antwoord 6

Als je de pip-versie van TensorFlow gebruikt, betekent dit dat deze al is gecompileerd en dat je hem alleen nog maar aan het installeren bent. In principe installeer je TensorFlow-GPU, maar wanneer je het downloadt van de repository en probeert het te bouwen, moet je het bouwen met CPU AVX-ondersteuning. Als u het negeert, krijgt u elke keer een waarschuwing wanneer u op de CPU draait. Die kun je ook bekijken.

De juiste manier om compileer Tensorflow met SSE4.2 en AVX

Wat is AVX Cpu-ondersteuning in tensorflow


Antwoord 7

De gemakkelijkste manier die ik heb gevonden om dit op te lossen, is door alles te verwijderen en vervolgens een specifieke versie van tensorflow-gpu te installeren:

  1. verwijder tensorflow:
    pip uninstall tensorflow
  1. verwijder tensorflow-gpu: (zorg ervoor dat u dit uitvoert, zelfs als u niet zeker weet of u het hebt geïnstalleerd)
    pip uninstall tensorflow-gpu
  1. Specifieke tensorflow-gpu-versie installeren:
    pip install tensorflow-gpu==2.0.0
    pip install tensorflow_hub
    pip install tensorflow_datasets

Je kunt controleren of dit werkt door de volgende code toe te voegen aan een python-bestand:

from __future__ import absolute_import, division, print_function, unicode_literals
import numpy as np
import tensorflow as tf
import tensorflow_hub as hub
import tensorflow_datasets as tfds
print("Version: ", tf.__version__)
print("Eager mode: ", tf.executing_eagerly())
print("Hub Version: ", hub.__version__)
print("GPU is", "available" if tf.config.experimental.list_physical_devices("GPU") else "NOT AVAILABLE")

Voer het bestand uit en de uitvoer zou er ongeveer zo uit moeten zien:

Version:  2.0.0
Eager mode:  True
Hub Version:  0.7.0
GPU is available

Hopelijk helpt dit


Antwoord 8

Wat voor mij werkte, is deze bibliotheek https://pypi.org/project/silence-tensorflow/

Installeer deze bibliotheek en volg de instructies op de pagina, het werkt als een tierelier!


Antwoord 9

Probeer anaconda te gebruiken. Ik had dezelfde fout. Een enige optie was om tensorflow vanaf de bron op te bouwen, wat veel tijd kostte. Ik heb geprobeerd conda te gebruiken en het werkte.

  1. Maak een nieuwe omgeving in anaconda.
  2. conda -c conda-forge tensorflow

Toen werkte het.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

four − 4 =

Other episodes