Je suis nouveau sur TensorFlow. Je l'ai récemment installé (version CPU Windows) et j'ai reçu le message suivant:
Tensorflow-1.4.0 Tensorflow-Tensorboard-0.4.0rc2 installé avec succès
Puis quand j'ai essayé de courir
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()
(que j'ai trouvé sur https://github.com/tensorflow/tensorflow )
J'ai reçu le message suivant:
2017-11-02 01: 56: 21.698935: IC: \ tf_jenkins \ home \ workspace \ rel-win \ M \ windows \ PY \ 36 \ tensorflow \ core \ platform \ cpu_feature_guard.cc: 137] Votre CPU prend en charge les instructions que ce Le binaire TensorFlow n'a pas été compilé pour utiliser: AVX AVX2
Mais quand j'ai couru
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))
il s'est déroulé comme il se doit et a généré une sortie Hello, TensorFlow!
, ce qui indique que l'installation a réussi, mais il y a autre chose qui ne va pas.
Savez-vous quel est le problème et comment le résoudre?
la source
>>> sess = tf.Session() 2017-11-05 18:02:44.670825: I C:\tf_jenkins\home\workspace\rel-win\M\windows\PY\ 35\tensorflow\core\platform\cpu_feature_guard.cc:137] Your CPU supports instruct ions that this TensorFlow binary was not compiled to use: AVX AVX2
Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2
.Réponses:
Quel est cet avertissement?
Les processeurs modernes offrent un grand nombre d'instructions de bas niveau, en plus de l'arithmétique et la logique habituelle, connue sous le nom des extensions, par exemple SSE2, SSE4, AVX, etc. Du Wikipédia :
En particulier, AVX introduit des opérations de multiplication-accumulation (FMA) fusionnées , qui accélèrent le calcul d'algèbre linéaire, à savoir le produit scalaire, la multiplication matricielle, la convolution, etc. Presque chaque formation en machine-learning implique une grande partie de ces opérations, donc sera plus rapide sur un processeur prenant en charge AVX et FMA (jusqu'à 300%). L'avertissement indique que votre CPU prend en charge AVX (hourra!).
Je voudrais souligner ici: il s'agit uniquement de CPU .
Pourquoi n'est-il pas utilisé alors?
Parce que la distribution par défaut tensorflow est construite sans extensions CPU , telles que SSE4.1, SSE4.2, AVX, AVX2, FMA, etc. Les versions par défaut (celles de
pip install tensorflow
) sont conçues pour être compatibles avec autant de CPU que possible. Un autre argument est que, même avec ces extensions, le processeur est beaucoup plus lent qu'un GPU, et il est prévu que la formation d'apprentissage machine à moyenne et grande échelle soit effectuée sur un GPU.Que devrais tu faire?
Si vous avez un GPU , vous ne devriez pas vous soucier de la prise en charge d'AVX, car les opérations les plus chères seront expédiées sur un périphérique GPU (sauf si elles sont explicitement définies comme non). Dans ce cas, vous pouvez simplement ignorer cet avertissement en
... ou en définissant
export TF_CPP_MIN_LOG_LEVEL=2
si vous êtes sous Unix. Tensorflow fonctionne bien de toute façon, mais vous ne verrez pas ces avertissements ennuyeux.Si vous n'avez pas de GPU et que vous souhaitez utiliser le processeur autant que possible, vous devez créer un tensorflow à partir de la source optimisée pour votre processeur avec AVX, AVX2 et FMA activés si votre processeur les prend en charge. Il a été discuté dans cette question et également dans ce problème GitHub . Tensorflow utilise un système de construction ad hoc appelé bazel et sa construction n'est pas si simple, mais est certainement faisable. Après cela, non seulement l'avertissement disparaîtra, mais les performances du tensorflow devraient également s'améliorer.
la source
Mettez à jour le binaire tensorflow pour votre CPU et votre système d'exploitation à l'aide de cette commande
L'url de téléchargement du fichier whl se trouve ici
https://github.com/lakshayg/tensorflow-build
la source
Optimisation CPU avec GPU
Il y a des gains de performances que vous pouvez obtenir en installant TensorFlow à partir de la source même si vous avez un GPU et que vous l'utilisez pour la formation et l'inférence. La raison en est que certaines opérations TF n'ont qu'une implémentation CPU et ne peuvent pas s'exécuter sur votre GPU.
En outre, il existe des conseils d'amélioration des performances qui font bon usage de votre processeur. Le guide des performances de TensorFlow recommande ce qui suit:
Pour de meilleures performances, vous devez écrire votre code pour utiliser votre CPU et GPU pour travailler en tandem, et ne pas tout vider sur votre GPU si vous en avez un. L'optimisation de vos binaires TensorFlow pour votre processeur pourrait rapporter des heures de temps de fonctionnement économisées et vous devez le faire une fois.
la source
Pour Windows, vous pouvez vérifier l' optimisation officielle Intel MKL pour les roues TensorFlow compilées avec AVX2. Cette solution accélère mon inférence ~ x3.
la source
Pour Windows (Merci au propriétaire f040225), allez ici: https://github.com/fo40225/tensorflow-windows-wheel pour récupérer l'url de votre environnement en fonction de la combinaison de "tf + python + cpu_instruction_extension". Utilisez ensuite cette cmd pour installer:
Si vous rencontrez l'erreur «Le fichier n'est pas un fichier zip», téléchargez le .whl sur votre ordinateur local et utilisez cette cmd pour installer:
la source
Si vous utilisez la version pip de tensorflow, cela signifie qu'il est déjà compilé et que vous ne faites que l'installer. Fondamentalement, vous installez tensorflow-gpu, mais lorsque vous le téléchargez à partir du référentiel et essayez de le construire, vous devez le construire avec le support CPU AVX. Si vous l'ignorez, vous obtiendrez l'avertissement à chaque fois que vous exécutez sur cpu.
la source
Le moyen le plus simple que j'ai trouvé pour résoudre ce problème est de tout désinstaller puis d'installer une version spécifique de tensorflow-gpu:
Vous pouvez vérifier si cela a fonctionné en ajoutant le code suivant dans un fichier python:
Exécutez le fichier et la sortie devrait ressembler à ceci:
J'espère que cela t'aides
la source
pip install tensorflow_hub
etpip install tensorflow_datasets
Ce qui a fonctionné pour moi c'est cette bibliothèque
https://pypi.org/project/silence-tensorflow/
Installez cette bibliothèque et faites comme indiqué sur la page, cela fonctionne comme un charme!
la source