2017-11-02 01:56:21.698935: I C:\tf_jenkins\home\workspace\rel-win\M\windows\PY\36\tensorflow\core\platform\cpu_feature_guard.cc:137 ] Ваш процессор поддерживает инструкции, для использования которых этот двоичный файл TensorFlow не был скомпилирован: AVX AVX2
он выполнялся как положено и выводился Hello, TensorFlow!, что указывает на то, что установка действительно прошла успешно, но есть что-то еще, что не так.
Вы знаете, в чем проблема и как ее исправить?
Переведено автоматически
Ответ 1
О чем это предупреждение?
Современные процессоры предоставляют множество низкоуровневых инструкций, помимо обычной арифметики и логики, известных как расширения, например SSE2, SSE4, AVX и т.д. Из Википедии:
Расширенные векторные расширения (AVX) - это расширения архитектуры набора команд x86 для микропроцессоров Intel и AMD, предложенные Intel в марте 2008 года и впервые поддерживаемые Intel при поставке процессора Sandy Bridge в 1 квартале 2011 года, а позже AMD при поставке процессора Bulldozer в 3 квартале 2011 года. AVX предоставляет новые функции, новые инструкции и новую схему кодирования.
В частности, AVX вводит операции объединенного умножения-накопления (FMA), которые ускоряют вычисления в линейной алгебре, а именно скалярное произведение, умножение матрицы, свертку и т.д. Почти каждое обучение машинному обучению включает в себя большое количество этих операций, следовательно, оно будет выполняться быстрее на процессоре, поддерживающем AVX и FMA (до 300%). В предупреждении указано, что ваш процессор поддерживает AVX (ура!).
Я хотел бы подчеркнуть здесь: это касается только процессора.
Почему тогда он не используется?
Поскольку дистрибутив tensorflow по умолчанию построен без расширений процессора, таких как SSE4.1, SSE4.2, AVX, AVX2, FMA и т.д. Сборки по умолчанию (из pip install tensorflow) предназначены для совместимости с максимально возможным количеством процессоров. Другой аргумент заключается в том, что даже с этими расширениями процессор работает намного медленнее графического процессора, и ожидается, что средне- и крупномасштабное обучение машинному обучению будет выполняться на графическом процессоре.
Что вам следует делать?
Если у вас есть графический процессор, вам не следует заботиться о поддержке AVX, потому что большинство дорогостоящих операций будут выполняться на устройстве с графическим процессором (если явно не установлено, что это не так). В этом случае вы можете просто проигнорировать это предупреждение, выполнив
# Just disables the warning, doesn't take advantage of AVX/FMA to run faster import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
... или установив export TF_CPP_MIN_LOG_LEVEL=2, если вы в Unix. Tensorflow в любом случае работает нормально, но вы не увидите этих раздражающих предупреждений.
Если у вас нет графического процессора и вы хотите максимально использовать процессор, вам следует создать tensorflow из исходного кода, оптимизированного для вашего процессора с включенными AVX, AVX2 и FMA, если ваш процессор их поддерживает. Это обсуждалось в этом вопросе, а также в этом выпуске GitHub. Tensorflow использует специальную систему сборки под названием bazel, и ее построение не так уж тривиально, но, безусловно, выполнимо. После этого не только исчезнет предупреждение, производительность tensorflow также должна улучшиться.
Ответ 2
Обновите двоичный файл tensorflow для вашего процессора и ОС с помощью этой команды
Вы можете повысить производительность, установив TensorFlow из исходного кода, даже если у вас есть графический процессор и вы используете его для обучения и вывода. Причина в том, что некоторые операции TF реализованы только в ЦП и не могут выполняться на вашем графическом процессоре.
Кроме того, есть несколько советов по повышению производительности, которые эффективно используют ваш процессор. Руководство по производительности TensorFlow рекомендует следующее:
Возложение операций конвейера ввода на центральный процессор может значительно повысить производительность. Использование центрального процессора для конвейера ввода освобождает графический процессор, чтобы сосредоточиться на обучении.
Для достижения наилучшей производительности вам следует написать код, позволяющий использовать ваш процессор и графический процессор для совместной работы, а не сбрасывать все это на ваш графический процессор, если он у вас есть. Оптимизация двоичных файлов TensorFlow для вашего процессора может окупиться потерей часов рабочего времени, и вам придется сделать это один раз.