ubuntu 16.04 torch7 + cuda/cudnn
前言: 远离高版本,时间比经验更宝贵!
本文安装软件环境:ubuntu 16.04 + cuda 8.0
写在前面:之前因为电脑系统是ubuntu 16.10的缘故,经历了万般波折到最近也算是把环境配好了,但是过程中的痛苦自是不再想提及,由于系统版本的升级导致了一些依赖库版本的升级,而配置torch所需要的版本并不能与之兼容,所以有些库会强制进行降版本,我这里记录了一些,基于此,强烈不建议使用高版本。
bash install-deps
libjpeg-dev
liblcms2-dev
libwmf-dev
libx11-dev
libxext-dev
libxml2-dev
libfreetype6-dev
libtiff-dev libz-dev
libpng-dev
libbz2-dev
libltdl-dev
libltdl-dev -> libltdl7=2.4.6-0.1 ->
libbz2-dev -> libbz2-1.0=1.0.6-8 ->
libpng-dev -> zlib1g-dev -> zlib1g=1:1.2.8.dfsg-2ubuntu4.1
libtiff-dev -> libjpeg-dev -> libjpeg8-dev -> libjpeg-turbo8-dev -> libjpeg-turbo8=1.4.2-0ubuntu3.1
-> libtiff5=4.0.6-1ubuntu0.4 -> liblzma5=5.1.1alpha+20120614-2ubuntu2 ->liblzma-dev
libfreetype6-dev -> libfreetype6=2.6.1-0.1ubuntu2.3
libxml2-dev -> libxml2=2.9.3+dfsg1-1ubuntu0.5
libxext-dev -> libx11-dev -> libx11-6 libx11-doc
libwmf-dev -> libwmf0.2-7
如上类推,后面带版本号,依次添加依赖
报没有 <readline>的错
sudo apt install libreadline-dev -> libreadline6-dev=6.3-8ubuntu2 -> libtinfo-dev
-> ruby-interpreter -> 预依赖 awk 使用 aptitude
1.1 安装torch
Torch是一个基于Lua语言的深度学习框架,官网地址https://github.com/torch,安装torch7官方有文档,按照文档可完成http://torch.ch/docs/getting-started.html#_
安装之前首先确定你的Ubuntu下以安装git工具,通过Ctrl+Alt+T打开终端,在终端下输入git,加入终端输出,
image_1cl93ve3q4vp1kjp1kfaq3j13992m.png-39kB
则说明您的系统未安装git。在终端下输入sudo apt install git 即可安装,如下图所示。
image_1cl940bnjeh71m4h2lr1ufe1gd433.png-692.1kB
在确定成功安装git工具后就可以开始安装Torch7啦!
第一步:
获取安装LuaJIT(C语言编写的Lua的解释器)和Torch所必需的依赖包。代码如下:git clone https://github.com/torch/distro.git ~/torch --recursive 如下图所示。
第二步:
由于默认将依赖包下载在当前路径下的torch文件下,进入torch文件夹,打开并执行install-deps中的命令(这个命令执行时间可能有点长,别着急哈)。代码如下:
第三步:
执行install.sh文件,如下图所示。
image_1cl9h5hh4epmf2719pp1hs0bbf4a.png-976.9kB image_1cl9h6kct1hjvlvmhifbkji424n.png-963.8kB
终端提示:
Do you want to automatically prepend the Torch install location to PATH and LD_LIBRARY_PATH in your /home/guodongwei/.bashrc? (yes/no)
输入:yes 如上图所示。
第四步:
将路径手动添加到PATH变量中:
image_1cl9h83f03c71gpp1gl31c1cdn254.png-19.9kB
image_1cl9h8kj21k317vv1ge91b6gllg5h.png-25.7kB
第五步:
检测安装是否成功。在终端输入th命令,若出现下图,表明安装成功。
image_1cl9h9g07ltb1abuo2115nsa9g5u.png-150.2kB
1.2 安装hdf5
Hierarchical Data Format(HDF)是一种针对大量数据进行组织和存储的文件格式。经历了20多年的发展,HDF格式的最新版本是HDF5,它包含了数据模型,库,和文件格式标准。以其便捷有效,移植性强,灵活可扩展的特点受到了广泛的关注和应用。
很多大型机构的数据存储格式都采用了HDF5,比如NASA的地球观测系统,MATLAB的.m文件,流体细算软件CDF,都将HDF5作为标准数据格式。现在HDF5还支持了大数据技术和NoSQL技术,并广泛用于科研,金融,以及其他科学和工程领域。
hdf5的文件格式HDF5在技术上提供了丰富的接口,包含C,C++,Fortran, Python, Java等,能够在不同的语言间完美兼容。
打开hdf5官方资源地址hdf5,下载源码如hdf5-1.8.18.tar.gz形式的文件:
$ tar -xzf hdf5-1.8.18.tar.gz
$ cd hdf5-1.8.18
$ ./configure --prefix=/usr/local/hdf5 #安装路径
$ make
$ make check # run test suite
$ install
$ make check-install # verify installation
这里我们介绍一个hdf5可视化工具,它可以用来查看和编辑HDF文件:HDFView,如图,
image_1cl9iei8h1mtd44o1rdv1b8f1vi76o.png-51kB
1.3 安装torch-hdf5
在github上https://github.com/deepmind/torch-hdf5/blob/master/doc/usage.md
$ sudo apt-get install libhdf5-serial-dev hdf5-tools
$ git clone https://github.com/deepmind/torch-hdf5
$ cd torch-hdf5
$ luarocks make hdf5-0-0.rockspec LIBHDF5_LIBDIR="/usr/lib/x86_64-linux-gnu/"
1.4 安装cuda8.0
1.4.1 检查计算机是否具备CUDA安装条件
$ lspci | grep -i nvidia
显示出GPU 版本:
image_1clahc5v3kon12co1hhbl621bf075.png-14.8kB
1.4.2 验证自己的Linux版本是否支持 CUDA
$ uname -m && cat /etc/*release
image_1clahejs01sriaaf177c65neh7i.png-58.4kB
1.4.3 安装驱动(apt方式)
$ sudo add-apt-repository ppa:graphics-drivers/ppa
$ sudo apt-get update
# 寻找合适的驱动版本
$ ubuntu-drivers devices
image_1clahi0n51rveuffhp21vh7e617v.png-41.8kB
$ sudo apt-get install nvidia-390
# 安装完重启
$ sudo reboot
# 查看驱动安装状态
$ sudo nvidia-smi
$ sudo nvidia-settings
image_1clahkk101r716vo78713fbh7m8s.png-60.9kB
image_1clahl05r16u7127v1gjdvk5dog99.png-157.4kB
1.4.4 安装cuda8.0
在官网下载cuda8.0 run文件,https://developer.nvidia.com,网站需要注册才可以下载;
image_1clahpflaevi1sp41a331bre18sn9m.png-58.5kB# 关闭图形化界面
$ sudo service lightdm stop
# 安装cuda8.0
$ sudo sh cuda_8.0.44_linux.run
单击回车,直到提示“是否为NVIDIA安装驱动?”
选择否,因为已经安装好驱动程序,其他都是默认。
安装完成后可能还会需要添加这些库:
$ sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev
# 完成后重启
$ sudo service lightdm start
最后需要设置环境变量:
$ sudo vim /etc/profile
在文件末尾添加以下两行:
$ export PATH=/usr/local/cuda-8.0/bin:$PATH
$ export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH
重启使环境变量生效!
1.5 安装cudnn,cudnn.torch
1.5.1 安装cudnn7
下载cudnn7所需要的包,https://developer.nvidia.com/rdp/cudnn-download
按照如下方式安装:
# Navigate to your <cudnnpath> directory containing cuDNN Debian file.
# Install the runtime library, for example:
$ sudo dpkg -i libcudnn7_7.0.3.11-1+cuda9.0_amd64.deb
# Install the developer library, for example:
$ sudo dpkg -i libcudnn7-dev_7.0.3.11-1+cuda9.0_amd64.deb
# Install the code samples and the cuDNN Library User Guide, for example:
$ sudo dpkg -i libcudnn7-doc_7.0.3.11-1+cuda9.0_amd64.deb
安装完成后需要手动添加一下路径:
$ sudo cp /usr/local/cuda-8.0/lib64/libcudart.so.8.0 /usr/local/lib/libcudart.so.8.0 && sudo ldconfig
$ sudo cp /usr/local/cuda-8.0/lib64/libcublas.so.8.0 /usr/local/lib/libcublas.so.8.0 && sudo ldconfig
$ sudo cp /usr/local/cuda-8.0/lib64/libcurand.so.8.0 /usr/local/lib/libcurand.so.8.0 && sudo ldconfig
1.5.2 torch.cudnn
最后由于版本兼容性,我们还需要修改torch.cudnn的版本:
git clone https://github.com/soumith/cudnn.torch.git -b R7 && cd cudnn.torch && luarocks make cudnn-scm-1.rockspec
我们的torch就可以使用cudnn了!
1.6 安装lua-cjson
下载lua CJSON,https://www.kyne.com.au/%7Emark/software/lua-cjson-manual.html
将下载的包解压,按照如图方式添加:
image_1clainn2c1vd31oonqgn7isk5nb0.png-23.8kB1.7 安装loadcaffe
添加loadcaffe库,https://github.com/szagoruyko/loadcaffe,如下所示:
# Install torch first. There is no Caffe dependency, only protobuf has to be installed. In Ubuntu do:
$ sudo apt-get install libprotobuf-dev protobuf-compiler
$ luarocks install loadcaffe