如何使用 TensorFlow GPU?
Posted
技术标签:
【中文标题】如何使用 TensorFlow GPU?【英文标题】:How do I use TensorFlow GPU? 【发布时间】:2018-12-20 18:10:04 【问题描述】:如何在 Python 3.6 x64 中使用 TensorFlow GPU 版本而不是 CPU 版本?
import tensorflow as tf
Python 正在使用我的 CPU 进行计算。 我可以注意到它,因为我有一个错误:
您的 CPU 支持此 TensorFlow 二进制文件不支持的指令 编译使用:AVX2
我已经安装了 tensorflow 和 tensorflow-gpu。
如何切换到 GPU 版本?
【问题讨论】:
您是否尝试过卸载tensorflow
并保留tensorflow-gpu
的安装状态?
尝试下载CUDA并安装GPU版本。
这只是一个警告,如果你有一个 NVIDIA GPU,Tensorflow-gpu 会自动使用它。要了解更多信息以及如何禁用警告:***.com/a/47227886/4892874 要检查您是否正在使用 GPU:sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
设备映射:没有已知设备。我不使用 Anaconda
NVIDIA 940mx,是比较新的Nvidia显卡。 @JorgeLeitão 是的,那我没有 TensorFlow
【参考方案1】:
按照这个教程Tensorflow GPU我做到了,效果很好。
注意! - 安装 9.0 版! Tensorflow-gpu 不支持更新版本
步骤:
-
卸载旧的 tensorflow
安装tensorflow-gpu
pip install tensorflow-gpu
安装 Nvidia 显卡和驱动程序(您可能已经拥有)
下载并安装 CUDA
下载并安装 cuDNN
通过简单程序验证
from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())
【讨论】:
那么,CUDA 9.2 可能是问题所在?那我应该安装9.0吗?昨天安装 CUDA 9.2 后出现错误。它说我需要CUDA 9.0的DLL,我知道它使用的是GPU版本,今天我一直看到关于CPU的错误,所以它正在使用CPU。我会一步一步尝试,谢谢。 是的,大约 2 个月前我遇到了同样的问题。我尝试了 CUDA 9.1 并且 Tensorflow 不支持它。然后我卸载所有内容并使用 CUDA 9.0 重复所有步骤,现在它可以正常工作了。 也许我应该问另一个问题,但是 GPU 上的 tensorflow 是否比 PC 上的 CPU 更快?我尝试使用线性回归模型,对于 10000 epos 和 0.01 步,我的 CPU 可以在 13 秒内计算出来,而当我使用 GPU 时需要 39 秒。 Ofc 我有 CPU i7 8700k 和 GPU nVidia GTX 1060 STRING 6GB,GPU 上的速度大约快 20 倍。 请注意,较新版本的 tensorflow 将 cpu 和 gpu 包组合成一个包。 tensorflow.org/install/gpu【参考方案2】:我尝试按照上述教程进行操作。事情是 tensorflow 发生了很大变化,在 GPU 上运行所需的 NVIDIA 版本也是如此。下一个问题是您的驱动程序版本决定了您的工具包版本等。截至今天,有关软件要求的这些信息应该可以阐明它们如何相互作用:
NVIDIA® GPU drivers —CUDA 9.0 requires 384.x or higher.
CUDA® Toolkit —TensorFlow supports CUDA 9.0.
CUPTI ships with the CUDA Toolkit.
cuDNN SDK (>= 7.2) Note: Make sure your GPU has compute compatibility >3.0
(Optional) NCCL 2.2 for multiple GPU support.
(Optional) TensorRT 4.0 to improve latency and throughput for inference on some models.
here 你会发现 tensorflow 提出的最新要求(希望他们会定期更新)。
【讨论】:
【参考方案3】:首先你需要安装 tensorflow-gpu,因为这个包负责 gpu 计算。还要记住使用环境变量 CUDA_VISIBLE_DEVICES = 0 运行您的代码(或者,如果您有多个 gpus,请将它们的索引放在逗号中)。可能存在与使用 gpu 相关的一些问题。如果你的 tensorflow 不使用 gpu,try this
【讨论】:
【参考方案4】:奇怪的是,尽管 tensorflow 网站 1 提到 CUDA 10.1 与 tensorflow-gpu-1.13.1 兼容,但到目前为止它还不起作用。虽然 tensorflow-gpu 已正确安装,但在运行时会抛出奇怪的错误。
到目前为止,使用 GPU 运行 tensorflow 的最佳配置是 CUDA 9.0 和 python3.6 下的 tensorflow_gpu-1.12.0。
按照https://***.com/a/51307381/2562870(上面的答案)中提到的步骤进行此配置,对我有用:)
【讨论】:
【参考方案5】:如果您有 Nvidia,安装 tensorflow GPU 的“新”方法是使用 Anaconda。也适用于 Windows。 1 行。
conda create --name tf_gpu tensorflow-gpu
这是 3 个命令的快捷方式,如果您需要或者如果您已经有 conda 环境并且不需要创建一个,您可以单独执行这些命令。
创建 anaconda 环境conda create --name tf_gpu
激活环境conda activate tf_gpu
安装tensorflow-GPUconda install tensorflow-gpu
你可以使用 conda 环境。
【讨论】:
在 2:conda activate tf_gpu
【参考方案6】:
卸载tensorflow,只安装tensorflow-gpu;这应该足够了。默认情况下,这应该在 GPU 而不是 CPU 上运行。但是,您可以进一步执行以下操作来指定您希望它在哪个 GPU 上运行。
如果您有 nvidia GPU,请在终端上使用命令 nvidia-smi
找出您的 GPU id。之后,在您的脚本中添加这些行:
os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID"
os.environ["CUDA_VISIBLE_DEVICES"] = #GPU_ID from earlier
config = tf.ConfigProto()
sess = tf.Session(config=config)
对于您希望使用 GPU 的函数,请编写如下内容:
with tf.device(tf.DeviceSpec(device_type="GPU", device_index=gpu_id)):
【讨论】:
【参考方案7】:按照最新版本文档中的步骤操作。注意:GPU 和 CPU 功能现在合并在一个 tensorflow 包中
pip install tensorflow
# OLDER VERSIONS pip install tensorflow-gpu
https://www.tensorflow.org/install/gpu
如果需要,这是安装驱动程序和 CUDA 的绝佳指南: https://www.quantstart.com/articles/installing-tensorflow-22-on-ubuntu-1804-with-an-nvidia-gpu/
【讨论】:
以上是关于如何使用 TensorFlow GPU?的主要内容,如果未能解决你的问题,请参考以下文章
如何检查 keras 是不是使用 gpu 版本的 tensorflow?
如何确保 Keras 使用 GPU 和 tensorflow 后端?