您的 CPU 支持此 TensorFlow 二进制文件未编译使用的指令:AVX AVX2
- 2024-12-20 08:37:00
- admin 原创
- 67
问题描述:
我最近安装了 tensorflow(Windows CPU 版本),并收到以下消息:
成功安装 tensorflow-1.4.0 tensorflow-tensorboard-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\tensorflow\core\platform\cpu_feature_guard.cc:137] 您的 CPU 支持此 TensorFlow 二进制文件未编译使用的指令:AVX AVX2
但当我跑的时候
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))
它按应有的方式运行并输出Hello, TensorFlow!
,这表明安装确实成功了,但是还有其他错误。
您知道问题是什么以及如何解决它吗?
解决方案 1:
此警告是关于什么的?
现代 CPU 除了提供通常的算术和逻辑之外,还提供了许多低级指令,称为扩展,例如 SSE2、SSE4、AVX 等。摘自维基百科:
高级矢量扩展( AVX ) 是英特尔和 AMD 微处理器 x86 指令集架构的扩展,由英特尔于 2008 年 3 月提出,英特尔首先在 2011 年第一季度推出的 Sandy Bridge 处理器中支持该指令,随后 AMD 在 2011 年第三季度推出的 Bulldozer 处理器中也支持该指令。AVX 提供了新功能、新指令和新的编码方案。
具体来说,AVX 引入了融合乘法累加(FMA) 运算,可加速线性代数计算,即点积、矩阵乘法、卷积等。几乎每个机器学习训练都涉及大量这些运算,因此在支持 AVX 和 FMA 的 CPU 上速度会更快(最高可达 300%)。警告表明您的 CPU 确实支持 AVX(太棒了!)。
我想在这里强调一下:这一切都与CPU无关。
那为什么不使用它呢?
因为 tensorflow 默认发行版没有 CPU 扩展,例如 SSE4.1、SSE4.2、AVX、AVX2、FMA 等。默认版本(来自的版本pip install tensorflow
)旨在与尽可能多的 CPU 兼容。另一个论点是,即使有了这些扩展,CPU 也比 GPU 慢得多,而且预计中型和大型机器学习训练将在 GPU 上进行。
你应该做什么?
如果您有 GPU,则不必关心 AVX 支持,因为大多数昂贵的操作都将在 GPU 设备上调度(除非明确设置不这样做)。在这种情况下,您可以简单地忽略此警告,方法是
# Just disables the warning, doesn't take advantage of AVX/FMA to run faster
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
...或者如果您使用的是 Unix,请进行设置export TF_CPP_MIN_LOG_LEVEL=2
。Tensorflow 无论如何都能正常工作,但您不会看到这些烦人的警告。
如果您没有 GPU并且想要尽可能多地利用 CPU,则应该从针对您的CPU优化的源代码构建 tensorflow,并启用 AVX、AVX2 和 FMA(如果您的 CPU 支持它们)。这个问题和这个 GitHub 问题已经讨论过了。Tensorflow 使用一个名为bazel 的临时构建系统,构建它并不那么简单,但肯定是可行的。在此之后,不仅警告会消失,tensorflow 性能也会提高。
解决方案 2:
使用此命令更新适用于你的 CPU 和操作系统的 tensorflow 二进制文件
pip install --ignore-installed --upgrade "Download URL"
whl 文件的下载地址可以在这里找到
https://github.com/lakshayg/tensorflow-build
解决方案 3:
使用 GPU 进行 CPU 优化
即使您有 GPU 并将其用于训练和推理,从源代码安装 TensorFlow 也可以获得性能提升。原因是某些 TF 操作只有 CPU 实现,无法在您的 GPU 上运行。
此外,还有一些性能增强技巧,可以充分利用您的 CPU。TensorFlow 的性能指南建议如下:
将输入管道操作放在 CPU 上可以显著提高性能。利用 CPU 进行输入管道可让 GPU 专注于训练。
为了获得最佳性能,您应该编写代码以利用 CPU 和 GPU 协同工作,而不是将所有代码都放在 GPU 上(如果有的话)。针对 CPU 优化 TensorFlow 二进制文件可以节省数小时的运行时间,而且您只需执行一次。
解决方案 4:
对于 Windows,您可以查看使用 AVX2 编译的TensorFlow 轮子的官方英特尔 MKL 优化。此解决方案将我的推理速度提高了约 3 倍。
conda install tensorflow-mkl
解决方案 5:
对于 Windows(感谢所有者 f040225),请转到此处: https: //github.com/fo40225/tensorflow-windows-wheel,根据“tf + python + cpu_instruction_extension”组合获取您环境的 URL。然后使用此 cmd 安装:
pip install --ignore-installed --upgrade "URL"
如果遇到“文件不是 zip 文件”错误,请将 .whl 下载到本地计算机,然后使用此 cmd 进行安装:
pip install --ignore-installed --upgrade /path/target.whl
解决方案 6:
如果您使用pip版本的 TensorFlow,则意味着它已经编译完毕,您只需安装它即可。基本上,您安装的是 TensorFlow-GPU,但是当您从存储库下载它并尝试构建它时,您应该使用 CPU AVX 支持来构建它。如果您忽略它,则每次在 CPU 上运行时都会收到警告。您也可以看看这些。
使用 SSE4.2 和 AVX 编译 Tensorflow 的正确方法
TensorFlow 中的 AVX CPU 支持是什么
解决方案 7:
我发现解决这个问题的最简单方法是卸载所有内容,然后安装特定版本的 tensorflow-gpu:
卸载 TensorFlow:
pip uninstall tensorflow
卸载 tensorflow-gpu:(即使不确定是否安装了它,也请确保运行它)
pip uninstall tensorflow-gpu
安装特定的 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
希望这有帮助
解决方案 8:
对我有用的是这个库https://pypi.org/project/silence-tensorflow/
安装此库并按照页面上的说明进行操作,它会非常有效!
解决方案 9:
尝试使用 anaconda。我遇到了同样的错误。唯一的选择是从源代码构建 tensorflow,这需要很长时间。我尝试使用 conda,它成功了。
在anaconda中创建一个新的环境。
conda install -c conda-forge tensorflow
然后,它就成功了。
解决方案 10:
正如消息所示,您的 CPU 支持 TensorFlow 二进制文件未编译使用的指令。这应该不是 CPU 版本的 TensorFlow 的问题,因为它不执行 AVX(高级矢量扩展)指令。但是,似乎 TensorFlow 在代码的某些部分使用了 AVX 指令,并且该消息只是一个警告,您可以放心地忽略它。您可以使用 AVX 指令编译您自己的 TensorFlow 版本。
解决方案 11:
他提供过一次列表,被人删除了,但看到答案是
下载包列表
输出:
F: empPython>python test_tf_logics_.py
[0, 0, 26, 12, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0]
[ 0 0 0 26 12 0 0 0 2 0 0 0 0 0 0 0 0]
[ 0 0 26 12 0 0 0 2 0 0 0 0 0 0 0 0 0]
2022-03-23 15:47:05.516025: I tensorflow/core/platform/cpu_feature_guard.cc:151] 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.
2022-03-23 15:47:06.161476: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1525] Created device /job:localhost/replica:0/task:0/device:GPU:0 with 10 MB memory: -> device: 0, name: NVIDIA GeForce GTX 1060 6GB, pci bus id: 0000:01:00.0, compute capability: 6.1
[0 0 2 0 0 0 0 7 0 0 0 0 0 0 0 0 0]
...
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理必备:盘点2024年13款好用的项目管理软件