Ubuntu16.04-安装TensorFlow-gpu版(详细)

一共需要4个组件

  1. TensorFlow
  2. Nvidia驱动
  3. CUDA
  4. cuDNN

TensorFlow-gpu版安装

贴上官网作为参考。

# 更新pip工具,如果是python3就用pip3
pip install --upgrade pip

# 默认安装当前最新的稳定版,python3同上
pip install tensorflow-gpu

此时可能会碰到下载缓慢的问题,可以更换pip源,亲测有效,修改 ~/.pip/pip.conf (没有就创建一个文件夹及文件。文件夹要加“.”,表示是隐藏文件夹),加入:

[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host=mirrors.aliyun.com

windows下,直接在user目录中创建一个pip目录,如:C:\Users\xx\pip,新建文件pip.ini。内容同上。

安装完成后进入python环境,导入库

import tensorflow as tf

可能会出现如下提示,这是缺少TensorRT有关库,不影响使用,也不影响GPU加速。

2020-06-05 21:38:11.007131: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library ‘libnvinfer.so.6’; dlerror: libnvinfer.so.6: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /usr/local/cuda/lib64:/home/kadian/arm_move2/devel/lib:/opt/ros/kinetic/lib:/opt/ros/kinetic/lib/x86_64-linux-gnu
2020-06-05 21:38:11.007224: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library ‘libnvinfer_plugin.so.6’; dlerror: libnvinfer_plugin.so.6: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /usr/local/cuda/lib64:/home/kadian/arm_move2/devel/lib:/opt/ros/kinetic/lib:/opt/ros/kinetic/lib/x86_64-linux-gnu
2020-06-05 21:38:11.007236: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:30] Cannot dlopen some TensorRT libraries. If you would like to use Nvidia GPU with TensorRT, please make sure the missing libraries mentioned above are installed properly.

输入代码查看版本,这个版本号很重要,后面安装GPU相关东西都需要与这个版本号对应。

print(tf.__version__)

在这里插入图片描述
这样tensorflow就安装好了。

nvidia驱动安装

nvidia驱动与cuda是有版本对应要求的,可以参考网址,建议直接去官网安装最新的驱动,版本基本都满足要求,选择自己GPU型号对应的驱动,下载很慢,我是到windows上用chrome 下的,速度凑合。
安装之前要卸载原来安装的驱动(如果有的话)。

# 如果原驱动是用apt-get安装的,就用第1种方法卸载。 
#方法一: original driver installed by apt-get:
sudo apt-get remove --purge nvidia*

# 方法二:如果原驱动是用runfile安装的,就用–uninstall命令卸载。其实,用runfile安装的时候也会卸载掉之前的驱动,所以不手动卸载亦可。
#for case2: original driver installed by runfile:
sudo chmod +x *.run
sudo ./NVIDIA-Linux-x86_64-384.59.run --uninstall

之后执行 lsmod | grep nouveau ,如果有输出则需禁用nouveau驱动,编辑/etc/modprobe.d/blacklist.conf文件

sudo gedit /etc/modprobe.d/blacklist.conf
#在文本最后添加:
blacklist nouveau
options nouveau modeset=0

然后执行:

sudo update-initramfs -u

重启后执行

lsmod | grep nouveau

如果没有屏幕输出,说明禁用nouveau成功。

把之前下的驱动文件放到自己记得的地方,因为待会要关闭图形化界面,用命令行找到驱动文件并安装。
首先关闭图形化界面:

sudo service lightdm stop 

屏幕会黑掉,按Ctrl-Alt+F1进入命令行界面,输入用户名和密码登录即可。
cd到驱动文件的目录,执行

#给驱动run文件赋予执行权限:
sudo chmod +x NVIDIA-Linux-x86_64-384.59.run
#换成自己的文件名,后面的参数非常重要,不可省略,不然会陷入登录循环
sudo ./NVIDIA-Linux-x86_64-384.59.run –no-opengl-files

然后会出现几个选项,我记得我是no,yes,no,具体问题不记得了,影响据说不大。
安装完成后在命令行输入:sudo service lightdm start ,然后按Ctrl-Alt+F7即可恢复到图形界面。
输入命令nvidia-smi,出现GPU列表则安装成功。

CUDA安装

首先查看tensorflow2.1对应的版本,可以参考官网(翻到最下面),这里贴出来目前的版本对应关系。
Ubuntu16.04-安装TensorFlow-gpu版(详细)_第1张图片
然后上官网下载对应版本,点右下角Legacy Releases选择版本,然后安装对应系统的runfile,网上建议runfile,然后会提示你如何下载和安装。
Ubuntu16.04-安装TensorFlow-gpu版(详细)_第2张图片
每个版本安装界面会不一样,总之不要安装driver,因为已经安装过了,其余都组件都安装就行。
然后设置下环境变量

sudo gedit ~/.bashrc
#在最下面添加:
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
export CUDA_HOME=/usr/local/cuda

#注意这里可以不写cuda几点几,因为上面安装cuda的时候把cuda-10.1的文件链接到了/usr/local/cuda/,
#以后下新版本的时候会自动覆盖链接到/cuda,就不用重新设环境变量了,
#也可以把原cuda文件删掉,用 ln  -s  源文件  目标文件 手动链接,注意要用绝对路径

source ~/.bashrc #使设置生效

完成后可执行 nvcc --version 查看cuda版本,执行上述nvidia-smi也可查看,但不一定准确,比如我安的10.1 ,它显示的10.2。

cuDNN安装

首先说明下cudnn的安装方式其实就是把下载下来的文件放到刚才安的cuda-版本号里,cudnn和cuda的结构都是一致的,把cudnn里的东西放到对应地方即可。值得注意的是要放在/usr/local/cuda-版本号里,不要放在/usr/local/cuda里。
去官网下载你需要的cudnn,下载的时候需要注册账号。选择对应你cuda版本的cudnn下载,标题有说明,for CUDA几点几,然后选择cuDNN Library for Linux
下载完成后将cuDNN中的一些文件放到cuda-版本号对应的一些地方,执行;

#解压,注意更换自己的文件名
tar -xvf cudnn-10.1-linux-x64-v7.6.5.32.tgz
#移动相应文件到cuda-版本号,注意更换自己的文件名
cp cuda/include/cudnn.h /usr/local/cuda-10.1/include/ 
cp cuda/lib64/libcudnn*  /usr/local/cuda-10.1/lib64
chmod a+r /usr/local/cuda-10.0/include/cudnn.h /usr/local/cuda-10.0/lib64/libcudnn* 

测试CUDA:

cd /usr/local/cuda-10.1/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery

会输出显卡信息:
Ubuntu16.04-安装TensorFlow-gpu版(详细)_第3张图片

测试

测试tensorflow gpu加速。
进入python

import tensorflow as tf
tf.test.is_gpu_available()

返回日志信息,gpu信息和True就证明可以。
还可以跑一下MNIST手写数字测试下。

import tensorflow as tf
mnist = tf.keras.datasets.mnist

(x_train, y_train),(x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0

model = tf.keras.models.Sequential([
  tf.keras.layers.Flatten(input_shape=(28, 28)),
  tf.keras.layers.Dense(128, activation='relu'),
  tf.keras.layers.Dropout(0.2),
  tf.keras.layers.Dense(10, activation='softmax')
])

model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

model.fit(x_train, y_train, epochs=5)
model.evaluate(x_test, y_test)

Ubuntu16.04-安装TensorFlow-gpu版(详细)_第4张图片
运行时执行 nvidia-smi可以查看GPU使用情况:
在这里插入图片描述
可以看到有调用GPU加速,成功

参考

https://www.cnblogs.com/microman/p/6107879.html
https://blog.csdn.net/hancoder/article/details/86634415

你可能感兴趣的:(深度学习探索,tensorflow)