Ubuntu18.04下深度学习环境搭建及问题解决(双系统+2080Ti显卡)

本文使用的是SSD+机械安装双系统,先安装Win10,然后是Ubuntu18.04,显卡是Nvidia 2080TI

1. Win10,Ubuntu18.04双系统安装

见我另一篇博客

2.安装显卡驱动

如果只想在Windows下玩深度环境的可以看我另外一篇博客

  • 删除系统自带的不适配的NVIDIA驱动

sudo apt-get purge nvidia-*

  • 安装完毕后,通过命令行方式禁用自带的驱动:

sudo vim /etc/modprobe.d/blacklist-nouveau.conf

添加以下内容:

blacklist nouveau

再更新一下

sudo update-initramfs -u

修改后需要重启系统。确认下Nouveau是已经被你干掉,使用命令: lsmod | grep nouveau

如果没有结果,说明已经禁掉。

  • 安装官网NVIDIA 2080TI驱动(有问题)

网上很多帖子说用官网驱动,我在官网上下载得到的最新驱动就是NVIDIA-Linux-x86_64-410.78.run,运行安装过程中提示编译该驱动的版本比系统自带GCC的版本低,可能会出现兼容性问题,忽略该提示继续安装后,重启后出现问题3。

  • 使用Ubuntu第三方仓库中的驱动

网上很多说用Ubuntu第三方仓库中的NVIDIA驱动比较老旧,但可能近期已经更新,版本比官网还高。

这里采用自动安装:

添加PPA仓库:sudo add-apt-repository ppa:graphics-drivers/ppa

更新:sudo apt-get update

输入命令:ubuntu-drivers devices

显示出支持的显卡驱动有:

== /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0 ==

modalias : pci:v000010DEd00001180sv00001458sd0000353Cbc03sc00i00

vendor : NVIDIA Corporation

driver : nvidia-driver-418 -third-party-free

driver : nvidia-driver-410 -third-party-free

driver : nvidia-driver-430 -third-party-free recommended

driver : nvidia-driver-415 -third-party-free

driver : xserver-xorg-video-nouveau - distro free builtin

可以看到PPA仓库中已经有最新的2080TI驱动:sudo ubuntu-drivers autoinstall 即可reboot

安装完reboot发现卡在紫色界面,没有任何显示,CTRL+ALT+F2进入命令行模式,使用nvidia-smi命令可以正常显示N卡信息,说明驱动安装正常,问题出在显示上。

3.安装完毕后的问题解决

  • /dev/sda6:clean / files, ***/***blocks

安装完毕后是默认使用Ubuntu的启动菜单,可以选择进入Win10还是Ubuntu。选择进入Ubuntu后屏幕上方出现/dev/sda6:clean / files, ***/***blocks,一直卡在这里没有用。网上查找了很长时间,主要解决方法有两种:

1.CTRL+ALT+Fn进入命令行,输入fsck /dev/sda6,对我无效。

2.Ubuntu自带显卡驱动与NVIDIA显卡不兼容,CTRL+ALT+Fn进入命令行,输入sudo apt-get purge nvidia*删除所有NVIDIA相关显卡,对我无效。

最终折腾了半天找到第三种奏效的方法:

sudo apt install lightdm

然后重启

  • /dev/sda6:Super Blocklast Mount time is in the future

/dev/sda6是我的/分区,出现这个提示,在启动时候进入Ubuntu高级选项,选择recover模式->root,然后fsck /dev/sdb6

4. 安装Cuda

到nvidia官网下载cuda DEB格式,后输入命令安装即可,我这里先下载最新的CUDA10.1,官网有安装说明:


sudo dpkg -i cuda-repo-ubuntu1804-10-1-local-10.1.168-418.67_1.0-1_amd64.deb

sudo apt-key add /var/cuda-repo-10-1-local-10.1.168-418.67/7fa2af80.pub

sudo apt-get update

sudo apt-get install cuda

安装完后重启一下

nvcc -V 看到CUDA信息说明正常。

PS:如果安装的是性能低一些的,支持的是CUDA9.0的显卡,可能还设计GCC、G++的降级等,见我另一篇博客,这里不提。

5.安装cudnn

从官网下载,选择第三个cuDNN Library for Linux,选择和CUDA10.1适配的cudnn,我下载的是cudnn-10.1-linux-x64-v7.6.2.24.tgz。

解压缩后cd到cuDNN目录,执行以下操作:


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*

接下来编辑path环境变量文档:sudo gedit ~/.bashrc

将cuda的环境变量加到打开的文件最后:


export LD_LIBRARY_PATH=”$LD_LIBRARY_PATH:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64”

export CUDA_HOME=/usr/local/cuda

export PATH="$CUDA_HOME/bin:$PATH"

souce以下使环境配置生效:source ~/.bashrc

6.安装Anaconda

  • 官网太慢从清华源下载,我下载的是最新的Anaconda3-5.3.1-Linux-x86_64.sh,Python是3.7的,可以通过建立虚环境来设置Python版本,所以没关系。

安装:bash Anaconda3-5.3.1-Linux-x86_64.sh

然后看清楚提示,该yes的要yes,其中要加入环境变量,同时安装到最后会帮你安装VSCode,我比较喜欢这个IDE,不太喜欢重量级的Pycharm,所以也YES安装。

  • 改为国内源

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/

conda config --set show_channel_urls yes

添加pytorch源,不然安装贼慢

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/

  • 创建虚环境

这个Anaconda默认Python是3.7的,可能与很多包还不太兼容,所以建立虚环境。

conda create -n deeplearning python=3.6

创建的是Python3.6.8的环境

  • 安装深度学习环境

source activate deeplearning

conda install tensorflow-gpu

conda install pytorch torchvision

source deactivate deeplearning

可以看到安装的是tensorflow-gpu-1.14.0和pytorch-1.1.0

  • 让Jupyter-notebook能支持新创建的虚环境

source activate deeplearning

conda install nb_conda

source deactivate deeplearningcon

source activate base

conda install nb_conda

source deactivate base

这样进入jupyter notebook尽可以创建新建的deeplearning虚环境下的notebook

  • 修改jupyter notebook默认的工作路径

在终端输入:jupyter-notebook --generate-config

用gedit打开上述命令输出的路径文件,在其中搜索c.NotebookApp.notebook_dir =,原本前面有#表示注释,删除#后将需要变更的路加入即可

VScode虚环境支持

  • 菜单中文显示

F1后输入language display,现在install other language,安装中文,重启vscode

  • 常用插件的安装

个人觉得vscode比较强大的就是插件库,加上一些插件后如虎添翼,这里推荐几个插件:

(1)Python:这个是vscode提供的python 官方插件,提供了python代码的调试,自动补全,代码格式化等功能

(2)vscode-icons:这个也是vscode官方提供的插件,作用是给vscode编辑的文件增加图标。这里再推荐一个相同功能的插件vscode-icons-mac,文件图标变成Mac风格,相当美观。

(3)Path Intellisense:这个插件的作用是当代码中读入文件名或者文件路径时,提供文件名或者文件路径的自动补全

(4)topper:这个插件的作用是在.pyw文件的开头添加一些说明header

(5)Bracket Pair Colorizer:这个插件的作用是给代码中的括号增加颜色,同一对括号是相同的颜色,尤其是在括号中还包着括号的时候,看起来更加的清晰。

(6)Code Spell Checker:代码拼写检查器

(7)guides:显示代码对齐辅助线

(8)Rainbow Brackets:圆括号,方括号和大括号提供彩虹色。

(9)Indent-Rainbow:用四种不同颜色交替着色文本前面的缩进

(10)filesize:在状态栏中显示当前文件大小,点击后还可以看到详细创建、修改时间

(11)Atuo Rename Tag:修改 html 标签,自动帮你完成头部和尾部闭合标签的同步修改

(12)beautify:格式化代码工具

  • 虚环境的支持

没有网上说得那么负责,需要改变配置文件之类,直接F1快捷键输入python:select interpreter就可以看到虚环境,选择即可应用到当前项目。

  • 测试

在vsode中写个代码测试一下是否成功:

import tensorflow as tf
import torch
with tf.device('/cpu:0'):
a = tf.constant([1.0,2.0,3.0],shape=[3],name='a')
b = tf.constant([1.0,2.0,3.0],shape=[3],name='b')
with tf.device('/gpu:1'):
c = a+b
#注意:allow_soft_placement=True表明:计算设备可自行选择,如果没有这个参数,会报错。
#因为不是所有的操作都可以被放在GPU上,如果强行将无法放在GPU上的操作指定到GPU上,将会报错。
sess = tf.Session(config=tf.ConfigProto(allow_soft_placement=True,log_device_placement=True))
#sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
sess.run(tf.global_variables_initializer())
print(sess.run(c))
print(torch.cuda.is_available())

不得不说,深度学习环境在Linux下还是要容易得多,Windows下安装和使用中会出一些莫名其妙的问题,在Ubuntu下很简单。

你可能感兴趣的:(TensorFlow)