Я новичок в TensorFlow. Я недавно установил его (версия процессора Windows) и получил следующее сообщение:
Успешно установлено tenorflow-1.4.0 tenorflow-tenorboard-0.4.0rc2
Затем, когда я пытался бежать
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()
(который я нашел через https://github.com/tensorflow/tensorflow )
Я получил следующее сообщение:
2017-11-02 01: 56: 21.698935: IC: \ tf_jenkins \ home \ workspace \ rel-win \ M \ windows \ PY \ 36 \ensorflow \ core \ platform \ cpu_feature_guard.cc: 137] Ваш ЦП поддерживает следующие инструкции: Двоичный файл TensorFlow не скомпилирован для использования: AVX AVX2
Но когда я побежал
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))
он работал как надо и выводил Hello, TensorFlow!
, что указывает на то, что установка действительно прошла успешно, но есть что-то еще, что не так.
Знаете ли вы, в чем проблема и как ее исправить?
источник
>>> 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
.Ответы:
О чем это предупреждение?
Современные процессоры предоставляют много низкоуровневых инструкций, помимо обычной арифметики и логики, известных как расширения, например, SSE2, SSE4, AVX и т. Д. Из Википедии :
В частности, AVX вводит операции слияния с умножением и накоплением (FMA), которые ускоряют вычисления в линейной алгебре, а именно: произведение точек, умножение матриц, свертка и т. Д. Почти каждое обучение машинному обучению включает в себя множество этих операций, поэтому будет быстрее на процессоре, который поддерживает AVX и FMA (до 300%). В предупреждении говорится, что ваш процессор поддерживает AVX (ура!).
Я хотел бы подчеркнуть здесь: все дело только в процессоре .
Почему тогда не используется?
Поскольку распределение по умолчанию тензорного потока построено без расширений ЦП , таких как SSE4.1, SSE4.2, AVX, AVX2, FMA и т. Д. Сборки по умолчанию (из которых
pip install tensorflow
) предназначены для совместимости с максимально возможным количеством ЦП. Другой аргумент заключается в том, что даже с этими расширениями ЦП намного медленнее, чем ГП, и ожидается, что средне- и крупномасштабное обучение машинному обучению будет проводиться на ГП.Что вы должны сделать?
Если у вас есть графический процессор , вам не нужно заботиться о поддержке AVX, потому что самые дорогие операции будут отправляться на устройство с графическим процессором (если явно не указано иное). В этом случае вы можете просто проигнорировать это предупреждение
... или установкой,
export TF_CPP_MIN_LOG_LEVEL=2
если вы используете Unix. В любом случае Tensorflow работает нормально, но вы не увидите этих раздражающих предупреждений.Если у вас нет графического процессора и вы хотите максимально использовать процессор, вы должны создать тензорный поток из источника, оптимизированного для вашего процессора, с включенными AVX, AVX2 и FMA, если ваш процессор поддерживает их. Это обсуждалось в этом вопросе, а также в проблеме GitHub . Tensorflow использует специальную систему сборки под названием bazel, и ее сборка не так тривиальна, но, безусловно, выполнима. После этого не только исчезнет предупреждение, но и улучшится производительность тензорного потока.
источник
Обновите двоичный файл tenorflow для вашего процессора и ОС, используя эту команду
URL загрузки файла whl можно найти здесь
https://github.com/lakshayg/tensorflow-build
источник
Оптимизация процессора с помощью графического процессора
Вы можете получить прирост производительности, установив TensorFlow из исходного кода, даже если у вас есть графический процессор и вы используете его для обучения и умозаключений. Причина в том, что некоторые операции TF имеют только реализацию CPU и не могут выполняться на вашем GPU.
Кроме того, есть несколько советов по повышению производительности, которые эффективно используют ваш процессор. Руководство по производительности TensorFlow рекомендует следующее:
Для лучшей производительности вы должны написать свой код, чтобы использовать ваш ЦП и графический процессор для совместной работы, а не выгружать все это на свой графический процессор, если он у вас есть. Оптимизация ваших двоичных файлов TensorFlow для вашего процессора может окупить часы сэкономленного времени работы, и вам придется сделать это один раз.
источник
Для Windows вы можете проверить официальную оптимизацию Intel MKL для колес TensorFlow , скомпилированных с AVX2. Это решение ускоряет мой вывод ~ х3.
источник
Для Windows (спасибо владельцу f040225) перейдите по ссылке: https://github.com/fo40225/tensorflow-windows-wheel, чтобы получить URL-адрес вашей среды на основе комбинации «tf + python + cpu_instruction_extension». Затем используйте этот cmd для установки:
Если вы столкнулись с ошибкой «Файл не является zip-файлом», загрузите .whl на свой локальный компьютер и используйте этот cmd для установки:
источник
Если вы используете pip- версию tenorflow, это означает, что она уже скомпилирована, и вы просто ее устанавливаете. По сути, вы устанавливаете tenorflow-gpu, но когда вы загружаете его из репозитория и пытаетесь его собрать, вы должны собрать его с поддержкой CPU AVX. Если вы проигнорируете это, вы получите предупреждение каждый раз, когда вы запускаете процессор.
источник
Самый простой способ, который я нашел, чтобы это исправить, это удалить все и установить определенную версию tenorflow-gpu:
Вы можете проверить, сработало ли это, добавив следующий код в файл Python:
Запустите файл и затем результат должен быть примерно таким:
Надеюсь это поможет
источник
pip install tensorflow_hub
иpip install tensorflow_datasets
Что сработало для меня, так это библиотека
https://pypi.org/project/silence-tensorflow/
Установите эту библиотеку и сделайте так, как указано на странице, она работает как шарм!
источник