Ubuntu16.04 + CUDA9.0 + cuDNN7.3 + Tensorflow-gpu-1.12 + Jupyter Notebook 深度学习环境配置

文章目录

    • 一、Ubuntu16.04 LTS系统的安装
    • 二、设置软件源的国内镜像
      • 1. 设置方法
      • 2.关于ubuntu镜像的小知识
    • 三、Nvidia显卡驱动的安装
      • 1. 首先查看显卡型号和推荐的显卡驱动
      • 2. 安装nvidia-384版本驱动
      • 3. 重启系统,可以查看安装是否成功
    • 四、CUDA9.0的安装
      • 1. CUDA版本选择
      • 2. 安装CUDA9.0
      • 3. 设置环境变量
    • 五、cuDNN7.3的安装
    • 六、Tensorflow-1.12的安装
      • 1. Python开发环境配置.
      • 2. 创建Python虚拟环境
      • 3. 建立软链接
      • 4. 安装Tensorflow
    • 七、Jupyter notebook的安装配置

上篇博文主要写了在Ubuntu18.04下安装配置深度学习环境的有关操作过程,考虑到很多同学还是使用ubuntu16.04,因此这里专门补一篇关于16.04的博文,其实在18.04下配置环境跟16.04下差距不大,关键是掌握好ubuntu版本、Nvidia显卡驱动版本、CUDA版本、cuDNN版本、Tensorflow版本之间的兼容关系即可。

目前我们采用如下环境配置:

  1. 系统:Ubuntu16.04.5 LTS
  2. 显卡驱动(1080Ti):Nvidia-384
  3. CUDA版本:CUDA ToolKit9.0 + 四个update patch
  4. cuDNN版本:cuDNN v7.3 for CUDA 9.0
  5. Tensorflow版本:Tensorflow-gpu1.12

一、Ubuntu16.04 LTS系统的安装

安装过程跟上一篇博文关于18.04系统的安装完全一致,请参考上篇博文,这里不赘述。

二、设置软件源的国内镜像

1. 设置方法

Ubuntu在安装软件的过程中,默认从其官方源下载,但由于国内网络的原因,往往很慢。因此为了加快安装速度,建议设置国内镜像。在ubuntu系统中,软件源记录在/etc/apt/source.list文件中,因此,我们只需要将要加入的国内镜像的地址写入这个文件即可,在写入之前记得备份一下原始的内容。

sudo cp /etc/apt/source.list /etc/apt/source.list.bak  # 备份
sudo gedit /etc/apt/source.list                        # 用gedit打开source.list文件

将下述内容全部拷贝到source.list文件的头部,保存退出。

deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse

然后,在命令行执行如下命令更新软件源

sudo apt-get update

等待片刻,软件源更新完成,这样采用apt-get install方式安装软件时将优先从上述国内镜像地址寻找软件源,速度将快不少。到此,如果你不想了解关于国内镜像的知识,可以直接进入下一节开始显卡驱动的安装,如果想了解ubuntu的镜像知识,可以继续往下看。

2.关于ubuntu镜像的小知识

首先,简单介绍下关于Ubuntu的source.list文件的内容,该文件在/etc/apt/目录下,它记录了ubuntu软件更新的源的地址及目录,默认是ubuntu的官方源,source.list文件内容的具体含义如下:

1 2 3 4 5 6 7
deb url 版本代号(比如xenial) main restricted universe multiverse
deb-src url 版本代号(比如xenial) main restricted universe multiverse

上述格式中,第1列为deb或deb-src,分别代表直接通过.deb文件进行安装和通过source code源文件进行安装两种方式;第2列为URL地址,比如ubuntu官方源的地址为http://archive.ubuntu.com/ubuntu/,第3列为版本代号,具体见下表(这里只给出.04版本的,其它版本可以自己取查看),一般只取代号的第一个单词(比如16.04版本只取Xenial这个单词),需要注意的是版本一般有5个不同的类别(这里以xenial为例说明,一般有xenial, xenial-updates, xenial-security,xenial-proposed xenial-backports,一个类别一条记录,实际上是一个文件夹),从第4列到第7列为版本代号文件夹下不同的文件夹的名称(一般也有4个不同的文件夹,分别为:main,restricted,universe,multiverse,其具体意义见下表),当然第4到第7列是并列关系,完全可以每个文件夹一条记录,也可以并列在一起。

版本号 版本代号
14.04 Trusty Tahr (可靠的塔尔羊)
15.04 Vivid Vervet (活泼的小猴)
16.04 Xenial Xerus (好客的非洲地松鼠)
17.04 Zesty Zapus(开心的跳鼠)
18.04 Bionic Beaver(仿生海狸)
文件夹名 意义
main 完全的自由软件
restricted 不完全的自由软件
universe 官方不提供支持与补丁,全靠社区支持
multiverse 非自由软件,完全不提供支持和补丁

下面分别给出16.04版本的官方源、阿里云源、以及清华的源

  1. 官方源
deb http://archive.ubuntu.com/ubuntu/ xenial main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ xenial-security main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ xenial-updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ xenial-proposed main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ xenial main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ xenial-security main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ xenial-updates main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ xenial-proposed main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ xenial-backports main restricted universe multiverse
  1. 阿里云源
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
  1. 清华的源
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-proposed main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-proposed main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main multiverse restricted universe

三、Nvidia显卡驱动的安装

1. 首先查看显卡型号和推荐的显卡驱动

ubuntu-drivers devices

在这里插入图片描述
从输出的信息看到推荐的是nvidia-driver-390的驱动,因此我们安装nvidia-390驱动。需要注意的是有个奇怪的现象就是在中断输入上述命令,有可能得到不同的推荐,比如有可能推荐384或396或410驱动,在16.04系统上,我们安装384驱动比较保险(Tensorflow1.12最低要求384以上版本的驱动)。

2. 安装nvidia-384版本驱动

# 将系统中存在的nvidia驱动全部卸载掉(如果有的话)
sudo apt-get purge nvidia*

# 添加ppa源并更新
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update

# 安装nvidia-384版本
sudo apt-get install nvidia-384

安装速度取决于下载速度,还是有点慢,但勉强接受,如果安装失败,可以再试1次。安装完毕记得一定要重启系统。

3. 重启系统,可以查看安装是否成功

nvidia-smi

四、CUDA9.0的安装

1. CUDA版本选择

目前CUDA已经到了CUDA10.0版本,但遗憾的是目即使最新的Tensorflow1.12也暂时只支持CUDA9.0,因此,我们选择9.0版本进行安装。当然,如果实在想尝鲜,可以通过tensorflow的源码安装,需要自己编译,我们将在另外文章中专门介绍,这里不详述。

2. 安装CUDA9.0

首先从Nvidia官网下载cuda-repo-ubuntu1604-9-0-local_9.0.176-1_amd64.deb和 4个补丁 文件。安装步骤如下:

Step1:切换到下载好的文件目录,并安装meta-data

sudo dpkg -i cuda-repo-ubuntu1604-9-0-local_9.0.176-1_amd64.deb

Step2: 安装CUDA的GPG Public Key

sudo apt-key add /var/cuda-repo-9-0-local/7fa2af80.pub

Step3:更新APT源

sudo apt-get update

Step4:安装CUDA

sudo apt-get install cuda

Step5:安装补丁

sudo dpkg -i cuda-repo-ubuntu1604-9-0-local-cublas-performance-update_1.0-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1604-9-0-local-cublas-performance-update-2_1.0-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1604-9-0-local-cublas-performance-update-3_1.0-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1604-9-0-176-local-patch-4_1.0-1_amd64.deb
sudo apt-get update
sudo apt-get upgrade cuda

当然,不安装上述补丁对后续的安装也应该没多大影响,但是建议还是把上述4个补丁全部安装,这对系统运行的性能可能有所提升。

3. 设置环境变量

在 ~/.bashrc中设置环境变量:

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

运行如下命令使得环境变量生效

source ~/.bashrc

测试环境变量是否生效,可以运行一下nvidia的查看CUDA版本的命令

nvcc --version

在这里插入图片描述
如果出现上述信息,说明环境变量设置生效。

五、cuDNN7.3的安装

这里我们选择下载cuDNN v7.3 for CUDA9.0版本(子项为cuDNN v7.3 Library for Linux),安装包为cudnn-9.0-linux-x64-v7.3.1.20.tgz。

Step1: 解压

tar -zxvf cudnn-9.0-linux-x64-v7.3.1.20.tgz

在当前目录下会生成cuda目录

Step2:将cudnn.h文件和lib文件拷贝到CUDA的安装目录下

sudo cp cuda/include/cudnn.h /usr/local/cuda/include/
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/ -d

注意上面第二行命令中的-d不能少,否则会提示.so不是symbol link。

Step3:赋予执行权限

sudo chmod a+x /usr/local/cuda/include/cudnn.h
sudo chmod a+x /usr/local/cuda/lib64/libcudnn*

经过上述步骤,就基本配置好了系统以及CUDA环境,下面我们就可以安装配置Tensorflow框架了

六、Tensorflow-1.12的安装

1. Python开发环境配置.

首先,我们要确保系统中安装了如下Python环境:
python3, pip3,以及 virtualenv,在命令行查询相应的版本

python3 --version
pip3 --version
virtualenv --version

如果提示没有安装,则用如下命令安装:

sudo apt update
sudo apt install python3-dev python3-pip
sudo pip3 install -U virtualenv

2. 创建Python虚拟环境

python的虚拟环境用来隔离系统和相应的安装包,这非常有利于不同版本之间的隔离,总之好处多多,尤其是不同的项目使用不同的软件版本时,能避免令人头痛的版本混乱问题,强烈建议安装虚拟环境。安装命令如下:

virtualenv --system-site-packages -p python3 ./venv

上述命令的意思是创建一个虚拟环境(该虚拟环境文件被放置到venv目录下),该环境使用python3,并且将python3下已经安装的包都复制过来(–system-site-packages),如果选择不复制python3下已经安装的包,则使用–no-site-packages,这样,已经安装到系统python环境中的所有第三方包都不会复制过来,这样就会得到一个不带任何第三方包的“干净”的python运行环境。这里我们选择复制python3下已经安装的软件包。

如果要使用,则用下述命令激活该虚拟环境

source ./venv/bin/activate

如果环境激活,则shell命令行前面会出现(venv)。
在该虚拟环境下安装任何软件包都不会影响系统python环境。如果要退出该虚拟环境,则在命令行执行即下述命令可退出该虚拟环境。

deactivate

3. 建立软链接

为了使用方便,我们可以建立一个软链接,假设我们的虚拟环境安装的绝对路径是/home/scek/Project/venv/,则激活的shell命令的绝对路径是/home/scek/Project/venv/bin/activate。一般我们启动终端的时候,会默认在/home/scek/目录下,在这个目录下建立软链接,链接名称假设为venv,则用下面命令:

ln -s ./Project/venv/bin/activate  venv

建立软链接之后,一启动终端,就可以直接输入:

source venv

即可激活虚拟环境,对比原始命令

source ./Project/venv/bin/activate

方便了不少。

4. 安装Tensorflow

安装很简单,执行如下命令即可:

pip install tensorflow-gpu

上述命令会安装最新的release版本(目是1.12版本),如果要指定安装版本,则采用如下命令

pip install tensorflow-gup = 1.10

但是由于国内网络环境问题,安装速度慢的无法忍受,这里我们推荐采用清华的pypi镜像进行安装:

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

测试安装是否成功

python -c "import tensorflow as tf; print(tf.__version__)"

如果安装成功,则会输出当前的版本。
为了方便其他pip包安装的方便,我们可以将pypi源永久修改,免得每次都要输入镜像地址:

首先在当前用户目录下新建~/.pip/pip.conf

mkdir .pip
sudo vim .pip/pip.conf

将下述内容写入pip.conf文件中并保存

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

这里我们采用了阿里云的pypi源,也可以采用其它的源:

https://pypi.tuna.tsinghua.edu.cn/simple    # 清华
http://mirrors.aliyun.com/pypi/simple/      # 阿里云
https://pypi.mirrors.ustc.edu.cn/simple/    # 中国科技大学 
http://pypi.hustunique.com/                 # 华中理工大学
http://pypi.sdutlinux.org/                  # 山东理工大学
http://pypi.douban.com/simple/              # 豆瓣

七、Jupyter notebook的安装配置

写python代码,可以采用的工具有很多:

  1. 直接在命令行输入python,即可进入python开发环境
  2. 用第三方代码编辑器,推荐使用sublime text3。 或者用第三方IDE工具, 比如Pycharm, 但是这个软件很耗内存,IDE工具的优点和缺点基本都有,个人不太喜欢使用这个IDE。
  3. 使用Jupyter Notebook. Jupyter Notebook(此前被称为 IPython notebook)是一个交互式笔记本,支持运行 40 多种编程语言。是非常友好的一款开发工具,尤其适用于代码测试,编写交互式文档,等等。需要注意的是,因为我们将tensorflow等工具安装在venv虚拟环境下,因此,为了在jupyter中正常使用tensorflow,就必须做一些额外的工作,下面给出具体步骤:

(1)step1:安装jupyter notebook

sudo pip install jupyter

(2)step2:进入venv虚拟环境(注意必须进入虚拟环境),设置kernel

pip install ipykernel
python -m ipykernel install --user --name=tensorflow

上述–name=tensorflow是设置显示的环境名称,当然可以起一个任意的名字。
(3)Step3:启动jupyter

jupyter notebook

启动之后,在new新文件时可以选择tensorflow作为内核即可。

通过上述步骤,我们已经完全配置了深度学习所需的基本环境,可以在深度学习的海洋中遨游了。

你可能感兴趣的:(深度学习)