@[TOC]html
上篇博文主要写了在Ubuntu18.04下安装配置深度学习环境的有关操做过程,考虑到不少同窗仍是使用ubuntu16.04,所以这里专门补一篇关于16.04的博文,其实在18.04下配置环境跟16.04下差距不大,关键是掌握好ubuntu版本、Nvidia显卡驱动版本、CUDA版本、cuDNN版本、Tensorflow版本之间的兼容关系便可。python
目前咱们采用以下环境配置:linux
- 系统:Ubuntu16.04.5 LTS
- 显卡驱动(1080Ti):Nvidia-384
- CUDA版本:CUDA ToolKit9.0 + 四个update patch
- cuDNN版本:cuDNN v7.3 for CUDA 9.0
- Tensorflow版本:Tensorflow-gpu1.12
1、Ubuntu16.04 LTS系统的安装
安装过程跟上一篇博文关于18.04系统的安装彻底一致,请参考上篇博文,这里不赘述。shell
2、设置软件源的国内镜像
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文件的头部,保存退出。ubuntu
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
而后,在命令行执行以下命令更新软件源vim
sudo apt-get update
等待片刻,软件源更新完成,这样采用apt-get install方式安装软件时将优先从上述国内镜像地址寻找软件源,速度将快很多。到此,若是你不想了解关于国内镜像的知识,能够直接进入下一节开始显卡驱动的安装,若是想了解ubuntu的镜像知识,能够继续往下看。bash
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版本的官方源、阿里云源、以及清华的源 |
- 官方源
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
- 阿里云源
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
- 清华的源
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
3、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
4、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
若是出现上述信息,说明环境变量设置生效。
5、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框架了
6、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/ # 豆瓣
7、Jupyter notebook的安装配置
写python代码,能够采用的工具备不少:
- 直接在命令行输入python,便可进入python开发环境
- 用第三方代码编辑器,推荐使用sublime text3。 或者用第三方IDE工具, 好比Pycharm, 可是这个软件很耗内存,IDE工具的优势和缺点基本都有,我的不太喜欢使用这个IDE。
- 使用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做为内核便可。
经过上述步骤,咱们已经彻底配置了深度学习所需的基本环境,能够在深度学习的海洋中遨游了。