Я только что установил tensorflow v2.3 на anaconda python. Я попытался протестировать установку с помощью приведенной ниже команды python;
$ python -c "import tensorflow as tf; x = [[2.]]; print('tensorflow version', tf.__version__); print('hello, {}'.format(tf.matmul(x, x)))"
Я получил следующее сообщение;
2020-12-15 07:59:12.411952: I tensorflow/core/platform/cpu_feature_guard.cc:142] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN)to use the following CPU instructions in performance-critical operations: AVX AVX2
To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.
hello, [[4.]]
Судя по сообщению, установка прошла успешно. Но что именно означает This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN)to use the following CPU instructions in performance-critical operations: AVX AVX2
?
Использую ли я версию tensorflow с некоторыми ограниченными функциями? Какие-либо побочные эффекты?
Я использую Windows 10.
Сообщение
This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN)
to use the following CPU instructions in performance-critical operations: AVX AVX2
означает, что в местах, где важна производительность (например, умножение матриц в глубоких нейронных сетях), будут использоваться определенные оптимизированные инструкции компилятора. Установка вроде прошла успешно.
В репозитории oneDNN GitHub говорится:
Библиотека глубокой нейронной сети oneAPI (oneDNN) — это кроссплатформенная библиотека производительности с открытым исходным кодом, состоящая из основных строительных блоков для приложений глубокого обучения. Библиотека оптимизирована для процессоров архитектуры Intel, графики процессоров Intel и графики на основе архитектуры Xe. oneDNN экспериментально поддерживает следующие архитектуры:
- 64-битная архитектура Arm* (AArch64)
- Графический процессор NVIDIA*
- OpenPOWER* Power ISA (PPC64)
- IBMz* (s390x)
Есть ли способ скрыть это сообщение, не скрывая возможные ошибки в остальной части кода?
@TheQuantumMan - я думаю, stackoverflow.com/a/42121886/5666087 отвечает на ваш вопрос
Я думал, что не использую oneAPI. Так что, если вы используете графический процессор NVIDIA, то гарантированно будет использоваться один API?
У меня аналогичный вопрос: поскольку я использую графический процессор Nvidia. Означает ли это сообщение, что Tensorflow может не работать с моим графическим процессором, используя эти инструкции для ЦП?
Нет, это не повлияет на то, как тензорный поток использует GPU.
Важной частью Tensorflow является то, что он должен быть быстрым. При соответствующей установке он работает с процессорами, графическими процессорами или TPU. Часть быстрой работы означает, что он использует другой код в зависимости от вашего оборудования. Некоторые ЦП поддерживают операции, которые не поддерживают другие ЦП, такие как векторизованное сложение (одновременное добавление нескольких переменных). Tensorflow просто сообщает вам, что установленная вами версия может использовать операции AVX и AVX2 и настроена на это по умолчанию в определенных ситуациях (скажем, внутри матрицы прямого или обратного умножения), что может ускорить работу. Это не ошибка, это просто говорит вам, что он может и будет использовать ваш процессор для получения дополнительной скорости.
Примечание. AVX расшифровывается как Advanced Vector Extensions.
Спасибо. Похоже, это хорошая вещь. Не предупреждение, о котором стоит беспокоиться. На самом деле, если это хорошо, нет необходимости выводить сообщение для информирования пользователей. Некоторые из нас могут волноваться.
Да, у меня была именно такая жалоба, когда я впервые попробовал. Отсутствие новостей — это хорошая новость в моем мире.
Есть ли способ скрыть это сообщение, не скрывая возможные ошибки в остальной части кода?
@TheQuantumMan import os; os.environ['TF_CPP_MIN_LOG_LEVEL'] = '1'
см.: stackoverflow.com/a/42121886/2547724
Просто чтобы быть уверенным, он уже оптимизирован? Или мне нужно как-то активировать его?
Это мясо, что ваша библиотека Tensorflow сделана без этих печатных флагов и должна быть перекомпилирована с этими флагами, чтобы получить полную скорость библиотеки Tensorflow.
Я получаю такое же сообщение в Nodejs. Можно ли скрыть сообщение в NodeJS? Я пробовал tf.env().set('PROD', true); но безрезультатно.
Я сделал следующие команды для установки keras и tensorflow на CPU и GPU:
conda create --name py36 python==3.6.13
conda install tensorflow
conda install keras
conda install tensorflow-gpu
conda install tensorflow-estimator==2.1.0
когда я использовал "verbose = 0" в Model.fit(), это произошло затем я удаляю это, и это решается
Ваш ответ может быть улучшен с помощью дополнительной вспомогательной информации. Пожалуйста, отредактируйте , чтобы добавить дополнительные сведения, такие как цитаты или документация, чтобы другие могли подтвердить правильность вашего ответа. Вы можете найти больше информации о том, как писать хорошие ответы в справочном центре.
Я несколько раз компилировал библиотеку Tensorflow, и если у вас получилось что-то вроде следующего:
kosinkie_l@Fedora ~/project/build $ python -c "import tensorflow as tf; x = [[2.]]; print('tensorflow version', tf.__version__); print('hello, {}'.format(tf.matmul(x, x)))"
2022-08-09 15:31:03.414926: I tensorflow/core/platform/cpu_feature_guard.cc:193] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: SSE3 SSE4.1 SSE4.2 AVX AVX2 FMA
To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.
tensorflow version 2.10.0-rc0
hello, Tensor("MatMul:0", shape=(1, 1), dtype=float32)
kosinkie_l@Fedora ~/project/build $
это означало, что процессор может их использовать, но библиотека Tensorflow их не использует.
Сообщения могут быть перепутаны, поэтому я выбрал исходный код (tensorflow/core/platform/cpu_feature_guard.cc:193), и есть следующее:
131 #ifndef __AVX__
132 CheckIfFeatureUnused(CPUFeature::AVX, "AVX", missing_instructions);
133 #endif // __AVX__
134 #ifndef __AVX2__
135 CheckIfFeatureUnused(CPUFeature::AVX2, "AVX2", missing_instructions);
136 #endif // __AVX2__
...
192 if (!missing_instructions.empty()) {
193 LOG(INFO) << "This TensorFlow binary is optimized with "
194 << "oneAPI Deep Neural Network Library (oneDNN) "
195 << "to use the following CPU instructions in performance-"
196 << "critical operations: " << missing_instructions << std::endl
197 << "To enable them in other operations, rebuild TensorFlow "
198 << "with the appropriate compiler flags.";
199 }
Метод «CheckIfFeatureUnused(CPUFeature::AVX, «AVX»,missing_instructions)» проверяет, может ли ЦП выполнять AVX, и помещает «AVX» в коллекциюmissing_instructions, что выводится.
Спасибо за ваш полезный ответ. Вы углубились в код, к которому я боюсь идти. Я получил такое же сообщение, но я использую графический процессор Nvidia. Означает ли это сообщение, что Tensorflow может не работать с моим графическим процессором, используя эти инструкции для ЦП?
Вам нужно создать новую среду или попытаться установить тензорный поток в графическом процессоре в текущей базовой среде, для этого используйте следующие команды...
создание новой среды:
conda create --name py36 python==3.6.13 or any latest version
установка тензорного потока в ЦП:
conda install tensorflow
conda install keras
установка тензорного потока в GPU:
conda install tensorflow-gpu
conda install tensorflow-estimator==2.1.0 or any latest version
Я надеюсь, что это поможет вам, спасибо...
Это сообщение обычно появляется, когда вы используете предварительно созданный двоичный файл TensorFlow, который не включает поддержку инструкций ЦП AVX2 и FMA, которые могут значительно ускорить определенные операции. Чтобы воспользоваться этими инструкциями, вам нужно собрать TensorFlow из исходного кода с соответствующими флагами компилятора.
Чтобы решить эту проблему, вы можете выполнить следующие действия:
Установите необходимые программные зависимости, такие как Python, Зависимости сборки TensorFlow и компилятор C++.
Загрузите исходный код TensorFlow из официального репозитория.
Настройте сборку с соответствующими флагами, чтобы включить поддержку инструкций AVX2 и FMA. Вы можете сделать это, передав --config=opt для сценария ./configure.
Соберите TensorFlow из исходного кода, выполнив команду bazel build //tensorflow/tools/pip_package:build_pip_package
.
Наконец, установите недавно созданный пакет pip TensorFlow, запустив
pip install /path/to/tensorflow_pkg.whl
.
После выполнения этих шагов у вас должна быть версия TensorFlow, оптимизированная для вашего ЦП и включающая поддержку инструкций AVX2 и FMA.
Установка конечно удалась.