【程序喵笔记】TF2.0 GPU环境搭建

TF2.0 GPU环境搭建

啊哈,总是死在环境配置和安装上的我,为了升级TensorFlow一起来配置,不要慌,不要慌。

先捋捋

  • 系统:Linux x86_64,Ubuntu16.04

  • 显卡:GeForce GTX 1080Ti

我需要安装tensorflow 2.0 GPU版本的,先去官网寻瞅一下最低需求:
https://tensorflow.google.cn/install/source?hl=en#linux

【程序喵笔记】TF2.0 GPU环境搭建_第1张图片

再瞅瞅CUDA版本对应的NVIDIA驱动版本对照表:
https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html

【程序喵笔记】TF2.0 GPU环境搭建_第2张图片

嘿,真不巧,原先版本都不够,好,那我就安吧~ 说一下安装顺序,上图红色是最低版本

  • NVIDIA驱动 440.64
  • CUDA 10.0.130
  • cuDNN 7.6
  • tensorflow 2.0

NVIDIA驱动安装

安装版本:440.64

下载

进入官网:https://www.geforce.cn/drivers,输入对应型号显卡,找一个喜欢的版本

【程序喵笔记】TF2.0 GPU环境搭建_第3张图片

下载之后是一个 .run的文件,比如我是这样NVIDIA-Linux-x86_64-440.64.run,放到桌面(推荐一个方便能找到的位置并记录文件名,要不关闭图形化界面后,屏幕黑乎乎一片,只有命令行,可是找不到)

卸载旧版本

卸载

# 卸载驱动
sudo apt-get remove --purge nvidia-* 

# 删除安装的nvidia相关,不保留配置
sudo apt-get autoremove 

# 删除依赖包
sudo apt-get install -f

# 重启
sudo reboot

检测卸载成功

终端输入

nvidia-smi

不显示信息则表示卸载完成

安装驱动

需要将Ubuntu自带的显卡驱动nouveau加入黑名单(禁止自带显卡驱动),还需要关闭图形界面。

禁用自带驱动nouveau

# gedit打开黑名单文件
sudo gedit /etc/modprobe.d/blacklist.conf

# 文件最后增加
blacklist nouveau

# 文件生效
sudo update-initramfs -u

检测是否禁用成功

终端输入

lsmod | grep nouveau

没有输出说明禁用成功

  • 【出现问题】重启电脑不能进入登陆页面,一片黑
  • 【解决方法】不要慌~重启ubuntu,随即长按shirft进入grub菜单,选择第二个选项 Advanced options for Ubuntu;进入下一个页面选择 recovery mode;recovery menu下选择root,以root登录,再打开终端进行下一步安装。

关闭图形化界面

# 二选一
sudo service lightdm stop
sudo /etc/init.d/lightdm stop

这时候屏幕又黑了,不要慌~

Alt+F6,进入用户登录页面,登录用户,进入.run的文件目录

安装

终端输入

sudo sh NVIDIA-Linux-x86_64-440.64.run

一步步yes安装

  • 【问题】nouveau没有禁止
  • 【解决】lsmod | grep nouveau,没有输出说明禁用成功,否则再禁用nouveau
  • 【问题】X服务没关闭
  • 【解决】没有关闭图形化解面,需要关闭图形化界面sudo service lightdm stop

开启图形化界面

# 二选一
sudo service lightdm start
sudo /etc/init.d/lightdm start

查看安装是否成功

终端输入nvidia-smi出现对应驱动版本

【程序喵笔记】TF2.0 GPU环境搭建_第4张图片

CUDA安装

安装版本:CUDA 10.0.130。两种安装方式:package manager安装和runfile安装, 好像package manager失败概率较大,选择runfile安装方式。

下载

官网下载:https://developer.nvidia.com/cuda-10.0-download-archive,选择对应的版本,选择 runfile文件

【程序喵笔记】TF2.0 GPU环境搭建_第5张图片

下载后得到文件 cuda_10.0.130_410.48_linux.run放到桌面(推荐一个方便能找到的位置并记录文件名)

用MD5 检验,如果序号不和,要重新下载。输入:md5sum cuda_10.0.130_410.48_linux.run

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kKquZdRV-1587894978974)(E:\Tensorflow\0.我的笔记\7.tf2.0_gpu安装\image\6.md5校验.png)]

卸载旧版本

卸载旧版本,我的是9.0,就是在/usr/local/文件夹下有对应表版本文件,比如cuda-9.0

# 卸载
sudo /usr/local/cuda-9.0/bin/uninstall_cuda_9.0.pl

# 删除相关文件
sudo rm -rf /usr/local/cuda-9.0/

安装CUDA

进入TUI界面

建议在文本用户界面(TUI)模式,而不是图形用户界面(GUI),否则容易安装失败

具体操作:进入登录界面的时候,不要登录进入桌面,直接按Ctrl+Alt+F1进入TUI模式,登录账户

关闭图形化界面

# 二选一
sudo service lightdm stop
sudo /etc/init.d/lightdm stop

安装

进入cuda_10.0.130_410.48_linux.run的文件目录

终端输入:sudo sh cuda_10.0.130_410.48_linux.run,接下来会出现

# 一路回车看条款
# 是否同意条款,必须同意才能继续安装
accept/decline/quit: accept

# 【注意】不要安装驱动,否则会与旧版本的显卡驱动冲突,导致重启循环登录,一定不要安装OpenGL
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 410.48?
(y)es/(n)o/(q)uit: n

# 安装cuda10.0
Install the CUDA 10.0 Toolkit?
(y)es/(n)o/(q)uit: y

# 安装路径按回车
Enter Toolkit Location
 [ default is /usr/local/cuda-10.0 ]:  

# 创建软连接
Do you want to install a symbolic link at /usr/local/cuda?
(y)es/(n)o/(q)uit: y

# 安装测试
Install the CUDA 10.0 Samples?
(y)es/(n)o/(q)uit: y

# 安装中
Installing the CUDA Toolkit in /usr/local/cuda-10.0 ...

开启图形化界面

# 二选一
sudo service lightdm start
sudo /etc/init.d/lightdm start

进入GUI界面

同时按住Alt + ctrl +F7,返回到图形化登录界面,输入密码登录。

如果登录成功,恭喜可能成功啦,当然也可能遇到问题

  • 【问题】循环登录

  • 【解决】可能是不小心安装了驱动,然后又不小心安装OpenGL,双显卡会冲突。

    可以进入到TUI,在登录界面状态下,按Ctrl + Alt + f1, 登录用户;

    卸载安装的CUDA和驱动:

    sudo /usr/local/cuda-10.0/bin/uninstall_cuda_10.0.pl
    sudo rm -rf /usr/local/cuda-10.0/
    sudo /usr/bin/nvidia-uninstall
    

    重启,在TUI下重新安装NVIDIA驱动CUDA(我这么反复安了几次,不要慌,能安就卸)

设备验证Device Node Verification

终端输入:

ls /dev/nvidia*

如果出现,有类似这三个文件,就ok了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eRvvPto3-1587894978976)(E:\Tensorflow\0.我的笔记\7.tf2.0_gpu安装\image\7.cuda成功了?.png)]

那么就是很成功的了

  • 【问题】也有可能出现(我没有出现,可参考):

    # 这样
    ls: cannot access/dev/nvidia*: No such file or directory
    # 或者这样
    /dev/nvidia0     /dev/nvidiactl
    
  • 【解决】首先要添加一个启动脚本,执行 sudo gedit /etc/rc.local或者会用vi的也可sudo vi /etc/rc.local

    这文件的第一行是#!/bin/sh -e-e去掉(否则它不会加载这文本的内容),然后把下列内容复制进去,保存退出(第一行已经有了就不用复制了)。

    #!/bin/bash
    /sbin/modprobe nvidia
    if [ "$?" -eq 0 ]; then
    #Count the number of NVIDIA controllers found.
    NVDEVS=`lspci | grep -i NVIDIA`
    N3D=`echo "$NVDEVS" | grep "3D controller" | wc -l`
    NVGA=`echo "$NVDEVS" | grep "VGA compatible controller" | wc -l`
    
    N=`expr $N3D + $NVGA - 1`
    for i in `seq 0 $N`; do
    mknod -m 666 /dev/nvidia$i c 195 $i
    done
    
    mknod -m 666 /dev/nvidiactl c 195 255
    
    else
    exit 1
    fi
    
    /sbin/modprobe nvidia-uvm
    
    if [ "$?" -eq 0 ]; then
    #Find out the major device number used by the nvidia-uvm driver
    D=`grep nvidia-uvm /proc/devices | awk '{print $1}'`
    
    mknod -m 666 /dev/nvidia-uvm c $D 0
    else
    exit 1
    fi
    

    保存,重启确认

配置环境变量

终端输入:

sudo gedit /etc/profile

在打开的文件末尾,添加以下两行,并保存

export PATH=/usr/local/cuda-10.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

文件生效,终端输入:

source /etc/profile

(好像说这个是临时生效的,退出终端就不生效了,建议在重启一下)

版本检查

检查环境变量是否成功,激动的时刻到了,验证驱动版本和CUDA Toolkit信息

# 验证驱动版本
cat /proc/driver/nvidia/version

# 验证CUDA Toolkit信息
nvcc -V

【程序喵笔记】TF2.0 GPU环境搭建_第6张图片

编译样例

编译

进入home/用户名/NVIDIA_CUDA-10.0_Samples目录下,终端输入make,等待一阵,这样就编译成功

【程序喵笔记】TF2.0 GPU环境搭建_第7张图片

  • 【问题】这样lglut找不到

    /usr/bin/ld: cannot find -lglut
    collect2: error: ld returned 1 exit status
    Makefile:308: recipe for target 'volumeRender' failed
    
  • 【解决】安装这些再make

    sudo apt-get install libgl1-mesa-dev
    sudo apt-get install libglu1-mesa-dev
    sudo apt-get install libglut-dev  or  sudo apt-get install freeglut3-dev
    
  • 【问题】没有gcc

  • 【解决】安装gcc再make

    sudo apt-get install gcc
    

运行二进制文件

进入NVIDIA_CUDA-10.0_Samples/bin/x86_64/linux/release 然后在终端输入 :

 ./deviceQuery 

出现pass就成功啦~

【程序喵笔记】TF2.0 GPU环境搭建_第8张图片

设备连接情况

同样目录下,终端输入:

 ./bandwidthTest

同样,出现pass就可以啦~

【程序喵笔记】TF2.0 GPU环境搭建_第9张图片

安装cuDNN

安装版本:cuDNN 7.6.3,这个轻松些,只要下载下来复制就行

下载

官网下载cudnn的安装文件:https://developer.nvidia.com/rdp/cudnn-archive

【程序喵笔记】TF2.0 GPU环境搭建_第10张图片

可能要登录账号啥的,反正就是自己想办法啊~~下载好之后是一个压缩包 cudnn-10.0-linux-x64-v7.6.3.30.tgz

安装

解压

终端输入

tar -xvf cudnn-10.0-linux-x64-v7.6.3.30.tgz

会得到一系列文件

cuda/include/cudnn.h
cuda/NVIDIA_SLA_cuDNN_Support.txt
cuda/lib64/libcudnn.so
cuda/lib64/libcudnn.so.7
cuda/lib64/libcudnn.so.7.6.3
cuda/lib64/libcudnn_static.a

复制文件

sudo cp cuda/include/cudnn.h /usr/local/cuda/include/
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/
# 修改权限
sudo chmod a+r /usr/local/cuda/include/cudnn.h
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*

# 我又复制了一遍到cuda-10.0中,应该是只复制到软连接cuda就可以
sudo cp cuda/lib64/* /usr/local/cuda-10.0/lib64/
sudo cp cuda/include/* /usr/local/cuda-10.0/include/
sudo chmod a+r /usr/local/cuda-10.0/include/cudnn.h
sudo chmod a+r /usr/local/cuda-10.0/lib64/libcudnn*

查看版本

终端输入:

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

【程序喵笔记】TF2.0 GPU环境搭建_第11张图片

Tensorflow2.0安装

版本:tensflow2.0 GPU版本

创建环境

在Anaconda下创建虚拟环境,终端输入

conda create -n tf2 python=3.7

激活环境

source  activate tf2

安装

tf2环境下安装,官网给出

pip install tensorflow-gpu==2.0.0       # TensorFlow GPU版本
pip install tensorflow==2.0.0           # TensorFlow CPU版本

建议添加清华镜像,pip 都加上,会块很多

-i https://pypi.tuna.tsinghua.edu.cn/simple

终端输入:

pip install tensorflow-gpu==2.0.0 -i https://pypi.tuna.tsinghua.edu.cn/simple

安装只要网速可以就行,还是很方便的。

测试

在tf2环境下,输入python测试

import tensorflow as tf
print(tf.__version__)
print('GPU', tf.test.is_gpu_available())

【程序喵笔记】TF2.0 GPU环境搭建_第12张图片

当然,也可以整个网络跑跑,速度很酸爽~

【程序喵笔记】TF2.0 GPU环境搭建_第13张图片

参考博客:

https://blog.csdn.net/lihe4151021/article/details/90237681

https://blog.csdn.net/qq_33200967/article/details/80689543

https://www.jianshu.com/p/e52b847970aa

你可能感兴趣的:(tensorflow,ubuntu)