Я новичок в TensorFlow. Я недавно установил его (версия процессора Windows) и получил следующее сообщение:

Успешно установлен tenorflow-1.4.0 tensorflow-tensorboard-0.4.0rc2

Потом при попытке запустить

импортировать тензорный поток как tf
hello = tf.constant ('Привет, TensorFlow!')
сессия = tf.Session ()
сесс.run (привет)
«Привет, TensorFlow!»
а = tf.constant (10)
b = tf.constant (32)
сессия. запуск (а + б)
42
сесс.close ()

(который я нашел через https://github.com/tensorflow/tensorflow)

Мне пришло следующее сообщение:

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] Ваш ЦП поддерживает инструкции, для использования которых этот двоичный файл TensorFlow не был скомпилирован: AVX AVX2

Но когда я запустил

импортировать тензорный поток как tf
hello = tf.constant ('Привет, TensorFlow!')
сессия = tf.Session ()
print (sessions.run (привет))

он работал, как должен, и выводил Hello, TensorFlow!, что указывает на то, что установка действительно прошла успешно, но есть еще кое-что, что не так.

Вы знаете, в чем проблема и как ее исправить?

csg

Ответов: 9

Ответы (9)

О чем это предупреждение?

Современные процессоры предоставляют множество низкоуровневых инструкций, помимо обычной арифметики и логики, известных как расширения, например SSE2, SSE4, AVX и т. Д. Из Википедии:

Advanced Vector Extensions (AVX) являются расширениями инструкции x86 установить архитектуру для микропроцессоров от Intel и AMD, предложенную Intel в марте 2008 г. и впервые была поддержана Intel с Sandy Поставка мостовых процессоров в первом квартале 2011 года, а позже - от AMD с Поставка процессора Bulldozer в третьем квартале 2011 года. AVX предоставляет новые функции, новые инструкции и новая схема кодирования.

В частности, AVX вводит объединенные операции умножения-накопления (FMA), которые ускоряют вычисления линейной алгебры, а именно точечное произведение, умножение матриц, свертку и т. Д. Практически каждое обучение машинному обучению включает в себя Многие из этих операций будут выполняться быстрее на ЦП, поддерживающем AVX и FMA (до 300%). В предупреждении указано, что ваш процессор поддерживает AVX (ура!).

Подчеркну: все дело в Только CPU.

Почему тогда не используется?

Потому что распределение по умолчанию tenorflow построено без расширений ЦП, таких как 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 в любом случае работает нормально, но вы не увидите этих надоедливых предупреждений.


Если у вас нет GPU и вы хотите максимально использовать CPU, вы должны построить тензорный поток из источника, оптимизированного для вашего CPUс включенными AVX, AVX2 и FMA, если ваш процессор поддерживает их. Это обсуждалось в этом вопросе, а также в этом выпуске GitHub. Tensorflow использует специальную систему сборки под названием bazel, и ее создание не так уж и тривиально, но, безусловно, выполнимо. После этого не только исчезнет предупреждение, но и улучшится производительность тензорного потока.

Оптимизация CPU с помощью GPU

Есть прирост производительности, который вы можете получить, установив TensorFlow из исходного кода, даже если у вас есть графический процессор и вы используете его для обучения и вывода. Причина в том, что некоторые операции TF реализуются только на CPU и не могут выполняться на вашем GPU.

Кроме того, есть несколько советов по повышению производительности, которые позволяют эффективно использовать ваш процессор.Руководство по производительности TensorFlow рекомендует следующее:

Размещение операций конвейера ввода на ЦП может значительно повысить производительность. Использование ЦП для входного конвейера позволяет графическому процессору сосредоточиться на обучении.

• 100001 Оптимизация двоичных файлов TensorFlow для вашего процессора может окупить часы сэкономленного времени работы, и вам придется сделать это один раз.

If you use the pip version of TensorFlow, it means it's already compiled and you are just installing it. Basically you install TensorFlow-GPU, but when you download it from the repository and trying to build it, you should build it with CPU AVX support. If you ignore it, you will get a warning every time when you run on the CPU. You can take a look at those too.

Proper way to compile Tensorflow with SSE4.2 and AVX

What is AVX Cpu support in tensorflow

What worked for me tho is this library https://pypi.org/project/silence-tensorflow/

Install this library and do as instructed on the page, it works like a charm!

Попробуйте использовать анаконду. У меня была такая же ошибка. Единственный вариант - построить тензорный поток из исходников, что заняло много времени. Я пробовал использовать conda, и это сработало.

  1. Создать новую среду в анаконде.
  2. conda -c conda-forge tenorflow

Тогда это сработало.

Для Windows вы можете проверить официальную оптимизацию Intel MKL для колес TensorFlow, скомпилированных с AVX2. Это решение ускоряет мой вывод ~ x3.

conda install tensorflow-mkl

Для Windows (спасибо владельцу f040225) перейдите сюда: https://github.com/fo40225/tensorflow-windows-wheel, чтобы получить URL-адрес вашей среды на основе комбинации «tf + python + cpu_instruction_extension». Затем используйте этот cmd для установки:

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

Если вы столкнулись с ошибкой «Файл не является zip-файлом», загрузите .whl на свой локальный компьютер и используйте этот cmd для установки:

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

Обновите двоичный файл tenorflow для вашего процессора и ОС с помощью этой команды

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

URL загрузки файла whl можно найти здесь

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

Самый простой способ исправить это - удалить все, а затем установить определенную версию tensorflow-gpu:

  1. удалить tenorflow:
    pip uninstall tensorflow
  1. удалить tensorflow-gpu: (не забудьте запустить это, даже если вы не уверены, что установили его)
    pip uninstall tensorflow-gpu
  1. Установить конкретную версию tensorflow-gpu:
    pip install tensorflow-gpu==2.0.0
    pip install tensorflow_hub
    pip install tensorflow_datasets

Вы можете проверить, сработало ли это, добавив следующий код в файл python:

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")

Запустите файл, и тогда результат должен быть примерно таким:

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

Надеюсь, это поможет

2022 WebDevInsider