ubuntu18.04发布以来,曾经在16.04和14.04上费九牛二虎之力才能编译通过caffe的日子从此一去不复返了。使用caffe的日子 你终于和使用tensorflow一样畅快无阻了,再结合新系统许多亮眼的设计和漂亮的界面,ubuntu18.04你值得拥有~
说明一下,由于Digits官方github上目前只支持python2,所以围绕python2进行环境部署,如果有习惯python3的朋友,这篇的digits部分可能目前无法兼容。
1. 配置Anaconda2
1.1. 下载官网地址:
https://www.anaconda.com/download/#linux
1.2. 安装
下载完之后是缀 .sh 文件在终端输入: bashAnaconda2-5.0.1-Linux-x86_64.sh
会询问是否要把变量写入环境,选yes
1.3. 使环境变量生效
source ~/.bashrc
然后重启系统,打开终端,输入 Python,出现anaconda2表明设置成功
2.安装Pycharm或者Spyder
Ubuntu18.04的App Store自带Pycharm和Spyder的free版本,直接点击安装即可。和手机安装APP一样。
3. Cuda9.0 安装
3.1. NVIDIA自动驱动安装
Ubuntu18.04 自带了 NVIDIA 驱动,但是它没有安装完整,不能在终端使用nvidia-smi命令查看,在之后的 CUDA 编译测试里面也会出现问题,因此需要重新安装。重新安装的方式如下:
# 首先,检测你的 NVIDIA 图形卡和推荐的驱动程序的模型
ubuntu-drivers devices
有两种方法:
方法一、选择安装所有推荐的驱动
sudo ubuntu-drivers autoinstall
方法二、只安装其中一个驱动
sudo apt install nvidia-390
虽然390是比较新的版本。但是在后期的模型训练过程中会出现一个问题,就是会报cudasuccess(4 vs 0)的错误,这个错误表示当前驱动版本太高,需要降级驱动。
因此我们需要上NVIDIA Driver的官网下载低版本的驱动来进行安装,进过测试,可以使用 驱动nvidia-384。
前往Nvidia Driver官网下载相应驱动:https://www.geforce.com/drivers
关键的几步:!!!
打开终端,先删除旧的驱动:sudo apt-get purge nvidia*
禁用自带的 nouveau nvidia驱动(important!)
创建一个文件通过命令 sudo vim/etc/modprobe.d/blacklist-nouveau.conf
并添加如下内容:
blacklist nouveau
options nouveau modeset=0
再更新一下
sudo update-initramfs -u
修改后需要重启系统。确认下Nouveau是已经被你干掉,使用命令:
lsmod | grep nouveau
进入文本模式安装下载的驱动:
由于Ubuntu18.04用GDM代替了lightdm,所以无法使用sudo service lightdm stop来关闭界面服务。直接Ctrl+Alt+F3进入文本模式即可:
接下来就是最关键的一步了:sudo ./NVIDIA.run --no-opengl-files开始安装,安装过程比较快,根据提示选择即可。
最后安装完毕后,然后Ctrl+Alt+F1进入图形界面;如果安装后驱动程序工作不正常,使用下面的命令进行卸载:
sudo sh ~/NVIDIA-Linux-x86_64-367.44.run --uninstall
然后再安装两个软件:
sudo apt-get install mesa-common-dev
sudo apt-get install freeglut3-dev
重启系统
执行完命令后,在终端输入:nvidia-smi 可以得到相关信息说明安装成功。
3.2. 降级 GCC
因为 Ubuntu18.04 默认gcc7.3,而CUDA9.0 只支持gcc6.0 及以下版本
我们选择降级到的版本是 gcc5 版本。
# 首先查看自己的版本
gcc –version
机器显示 7.3.0,因此降级版本并激活。
# 在终端输入
sudo apt-get install gcc-5 g++-5
sudo update-alternatives --install/usr/bin/gcc gcc /usr/bin/gcc-5 100
sudo update-alternatives --install/usr/bin/g++ g++ /usr/bin/g++-5 100
# 这时候再在终端输入
gcc –version
如果显示是5.5版本则 OK。
3.3. 依赖库的安装
# 在终端输入
sudo apt-get install freeglut3-devbuild-essential libx11-dev libxmu-dev
sudo apt-get install libxi-dev libgl1-mesa-glxlibglu1-mesa libglu1-mesa-dev
3.4. 安装 Cuda9.0
下载deb安装包及三个补丁,18年出了第三个补丁,一起下载安装。
#在安装包存放目录处打开终端输入
sudo dpkg -i cuda-repo-ubuntu1704-9-0-local_9.0.176-1_amd64.deb
sudo apt-key add /var/cuda-repo-9-0-local/7fa2af80.pub
sudo dpkg -icuda-repo-ubuntu1704-9-0-local-cublas-performance-update_1.0-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1704-9-0-local-cublas-performance-update-2_1.0-1_amd64.deb
sudo dpkg -icuda-repo-ubuntu1704-9-0-local-cublas-performance-update-3_1.0-1_amd64.deb
sudo apt-get update
之后这步可能会报错:
The following packages have unmet dependencies:
cuda : Depends: cuda-9-0 (>= 9.0.176) but it is not going to beinstalled
E: Unable to correct problems, you have held broken packages.
解决方法参见博客:Ubuntu18.04 LTS 下Caffe-GPU 版本安装常见错误
主要原因是ubuntu18.04的源可能太旧了,需要更新一下新的源才行。
进入/etc/apt/,备份掉原有的sources.list,新建一个,并输入以下内容,然后再update一下。
deb http://archive.ubuntu.com/ubuntu/ trusty main restricteduniverse multiverse
deb http://archive.ubuntu.com/ubuntu/ trusty-security mainrestricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ trusty-updates main restricteduniverse multiverse
deb http://archive.ubuntu.com/ubuntu/ trusty-proposed mainrestricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ trusty-backports mainrestricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ trusty main restricteduniverse multiverse
deb-src http://archive.ubuntu.com/ubuntu/ trusty-security mainrestricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ trusty-updates main restricteduniverse multiverse
deb-src http://archive.ubuntu.com/ubuntu/ trusty-proposed mainrestricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ trusty-backports mainrestricted universe multiverse
sudo apt-get install cuda
在/usr/local 目录下可以看到 cuda 和 cuda-9.0 两个文件夹,表面安装成功,接下来进行
环境变量配置。
3.5. 环境配置
完成以上的步骤以后一定要进行环境的配置。步骤如下:
#打开终端输入
sudo gedit ~/.bashrc
# 会弹出一个可写的配置文件,在末尾把以下配置写入并保存
export CUDA_HOME=/usr/local/cuda-9.0
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64:/usr/local/cuda-9.0/extras/CUPTI/lib64:$LD_LIBRARY_PATHs
export PATH=/usr/local/cuda-9.0/bin:$PATH
exportLD_LIBRARY_PATH="/usr/local/cuda-9.0/lib64:/usr/local/cuda-9.0/extras/CUPTI/lib64:/usr/local/cuda-9.0/lib64:/usr/local/cuda-9.0/lib64"
然后生效环境变量source ~/.bashrc
重启电脑
3.6. 安装测试
在安装的时候也相应安装了一些 cuda 的一些例子,可以进入例子的文件夹然后使用
make 命令执行。
从网上找了两个例子,例一:
# 第一步,进入例子文件
cd /usr/local/cuda-9.0/samples/1_Utilities/deviceQuery
# 第二步,执行 make 命令
sudo make
# 第三步,运行 Demo
./deviceQuery
如果结果有 GPU的信息,说明安装成功。
例二:
# 进入例子对应的文件夹
cd/usr/local/cuda/samples/5_Simulations/fluidsGL
# 执行make
sudo make clean &&sudo make
# 运行
./fluidsGL

自带例子测试通过,Cuna9.0 安装配置完成!
4. CuDnn7.0 安装(其实这步可以不需要,后面caffe和tensorflow会自动安装)
官网下载地址:点击这里(需要注册个账号):
为适应 Cudn9.0,下载的是 CuDnn v7.0.5, for CUDA 9.0。下载完的 CuDnn是.tar 格式的文件。
# 解压
tar -xvzf cudnn-9.0-linux-x64-v7.tar
# 在终端输入
sudo cp cuda/include/cudnn.h /usr/local/cuda/include
# 注意,解压后的文件夹名称为 cuda ,将对应文件复制到 /usr/local 中的 cuda 内
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
创建软连接:
cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.so libcudnn.so.7
sudo ln -s libcudnn.so.7.0.5 libcudnn.so.7
sudo ln -s libcudnn.so.7 libcudnn.so
sudo ldconfig /usr/local/cuda/lib64
此处 Cudnn安装完成.
# 在终端输入(此处的 V 是大写)
nvcc–V显示nvcc和cuda的相关信息
安装成功!(若没有显示,可以重启电脑)
后面就是caffe和tensorflow的安装,只要两步即可完成。
5. Tensorflow-GPU 安装
# 在终端输入
conda install tensorflow-gpu
进图python,输入
import tensorflow as tf
hello = tf.constant(“hello,world”)
sess=tf.session() #此处会有显示使用哪块GPU
sess.run(hello)
输出为”hello,world”
说明测试通过
7. Caffe-GPU安装
# 在终端输入
conda install caffe-gpu
完成后进入python,输入
import caffe进行测试是否可以
8. 配置Digits
git clone https://github.com/NVIDIA/DIGITS.git digits
cd digits
安装依赖:
sudo apt-get install graphviz gunicorn
pip install -r requirements.txt
运行digits
./digits-devserver
若import caffe报错 缺失file文件,则重新安装protobuf
pip uninstall protobuf
pip install protobuf
然后打开火狐浏览器,输入0.0.0.0:5000即可访问digits服务界面,如下图:
进入model,可以看到caffe和tensorflow两个后端支持。