在 Anaconda 中安装 TensorFlow-gpu 2.0(无需下载 CUDA)

最近在捣鼓 TensorFlow 2.0 alpha,最开始根据官方教程使用的

pip install tensorflow-gpu==2.0.0-alpha0

命令来安装的,但是一直报下面这个错误。

ImportError: DLL load failed: The specified module could not be found.

换了 CUDA 和 cuDNN 都不行,在 Github 的 issue 里面看到有人说可以用 conda install 来装,于是就想试试,但是 Anaconda 现在最高只支持 TensorFlow 1.13,还不能直接用 Anaconda 安装 2.0。

所以我就想着先装 TensorFlow 1.13,然后再升级到 2.0。这个办法是可行的,但是! TensorFlow 2.0 是用 cuDNN 7.4.1 编译的,Anaconda 上的 cuDNN 只有 7.3,所以版本匹配不上。

于是就想着怎么能够把 Anaconda 里面的 cuDNN 升级一下,终于让我找到了办法!

下面这个方法只是针对当前使用,当 Anaconda 支持 2.0 之后,就可以直接使用 conda install tensorflow 安装了,我也是这次才发现 Anaconda 会直接把 CUDA 和 cuDNN 装好,一条龙服务。

在此强烈建议使用 Anaconda 直接安装 TensorFlow!!!免去折腾搭建环境烦恼!

conda search tensorflow --infoconda search tensorflow-gpu --info 可以查看当前 Anaconda 支持的 TensorFlow CPU 和 GPU 版本。

当前 TensorFlow-gpu 支持 1.8 之后的版本。


下面开始正题:

  1. 先创建一个新的环境来安装 TensorFlow。
conda create -n tf2.0 python=3.6
  1. 然后激活环境
conda activate tf2.0
  1. 先使用 pip 安装 TensorFlow 2.0
pip install tensorflow-gpu==2.0.0-alpha0
  1. 然后在 Conda 中安装 cudatoolkit, cudnn, numba,安装时可以看到 cuDNN 版本为 7.3.1。Numba 用于支持 Anaconda 找到安装的 cudatoolkit 和 cudnn。
conda install cudnn cudatoolkit numba

在这里插入图片描述

  1. 接下来下载 cuDNN,TensorFlow 2.0 支持的 cuDNN 版本要 >= 7.4.1,我上传了 2 个 cuDNN,一个 CUDA 10 一个 CUDA 9 的,Linux 暂时没用到,有需要的可以留言。
    链接: https://pan.baidu.com/s/1P7jgx9lhvlpVTK5QHulvhA
    提取码: rvdh

  2. 找到环境位置,如果 Anaconda 的安装位置是 C:\Anaconda 的话,那么 tf2.0 环境的位置就在
    C:\Anaconda\envs\tf2.0
    我们需要的是这个目录下的 Library 文件夹。
    Library 文件夹里有 bin/include/lib 这三个文件夹,解压下载的 cuDNN 压缩包,可以发现里面也有名字相同的三个文件夹,直接将 cuDNN 复制过去替换就行。

  3. 运行 numba 检查 cudatoolkit 和 cuDNN。

numba -s

如果看到这些都 ok ,就没什么问题了。

Summary:
        1/1 devices are supported
CUDA driver version                           : 10010
CUDA libraries:
Finding cublas
        named  cublas64_100.dll
        trying to open library...       ok
Finding cusparse
        named  cusparse64_100.dll
        trying to open library...       ok
Finding cufft
        named  cufft64_100.dll
        trying to open library...       ok
Finding curand
        named  curand64_100.dll
        trying to open library...       ok
Finding nvvm
        named  nvvm64_33_0.dll
        trying to open library...       ok
        finding libdevice for compute_20...     ok
        finding libdevice for compute_30...     ok
        finding libdevice for compute_35...     ok
        finding libdevice for compute_50...     ok
  1. 打开 Python,运行 TensorFlow!
# 仅针对 TensorFlow 2.0
import tensorflow as tf
print(tf.reduce_sum(tf.random.normal([1000, 1000])))
2019-04-09 14:24:32.075124: I tensorflow/core/platform/cpu_feature_guard.cc:142] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2
2019-04-09 14:24:32.114064: I tensorflow/stream_executor/platform/default/dso_loader.cc:42] Successfully opened dynamic library nvcuda.dll
2019-04-09 14:24:32.440864: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1467] Found device 0 with properties:
name: Quadro P2000 major: 6 minor: 1 memoryClockRate(GHz): 1.4805
pciBusID: 0000:b3:00.0
totalMemory: 5.00GiB freeMemory: 4.13GiB
2019-04-09 14:24:32.467335: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1546] Adding visible gpu devices: 0
2019-04-09 14:24:33.637880: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1015] Device interconnect StreamExecutor with strength 1 edge matrix:
2019-04-09 14:24:33.657614: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1021]      0
2019-04-09 14:24:33.668759: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1034] 0:   N
2019-04-09 14:24:33.679975: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1149] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 3857 MB memory) -> physical GPU (device: 0, name: Quadro P2000, pci bus id: 0000:b3:00.0, compute capability: 6.1)
tf.Tensor(-2217.4058, shape=(), dtype=float32)

从文件上来看,好像通过 conda 安装的 CUDA 和 cuDNN 都安装到了 Anaconda 某个环境下的 Library 文件夹里,也就是说一个电脑里可以安装多个不同版本的 CUDA 和 cuDNN(我是这么理解的)。

所以现在安装 TensorFlow 最方便的方法应该是直接通过 conda 安装,如果想要定制一点的话也可以像上面这样手动安装。

Anaconda 中 cudatoolkit 版本支持 7.5、8、9、10。
cuDNN 可选较少,支持 6.0、7.1.4(CUDA 8、9)、7.3.1(CUDA 9、10),不过 cuDNN 替换也方便,直接覆盖就行。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章