NVIDIA DIGITS-2.0 + Ubuntu 14.04 + CUDA 7.0 + cuDNN 7.0 + Caffe 0.13.0环境配置

来源:互联网 发布:山海经 美洲 知乎 编辑:程序博客网 时间:2024/05/21 13:26
  • 引言
    • DIGITS简介
    • DIGITS特性
    • 资源信息
    • 说明
  • DIGITS安装
    • 软硬件环境
      • 硬件环境
      • 软件环境
    • 操作系统安装
    • DIGITS安装前准备
      • 安装CUDA70deb方式
      • 安装cuDNN70
      • 安装Caffe-0130
    • 安装DIGITS
    • 启动DIGITS
    • 配置DIGITS
  • 使用DIGITS
    • digits官方自带例子MNIST
      • 下载MNIST数据集
      • 在DIGITS server上创建数据集
      • 在DIGITS server上创建深度网络模型并训练
        • 一个小问题cuDNN
      • 使用DIGITS server 进行分类操作MNIST
  • 结语

 


引言

DIGITS简介

DIGITS: Deep Learning GPU Training System1,是由英伟达(NVIDIA)公司开发的第一个交互式深度学习GPU训练系统。目的在于整合现有的Deep Learning开发工具,实现深度神经网络(Deep Neural Network,DNN)设计、训练和可视化等任务变得简单化。DIGITS是基于浏览器的接口,因而通过实时的网络行为的可视化,可以快速设计最优的DNN。DIGITS是开源软件,可在GitHub上找到,因而开发人员可以扩展和自定义DIGITS。

技术分享

DIGITS特性

  • 提供了友好的用户界面,只需简单的点击即完成DNNs的训练。DIGITS是一个Web应用,用浏览器访问,上图是典型的工作流程图。

  • DIGITS用户接口提供了DNN优化工具。主控制台列出了现有的数据库和机器上可用的先前训练好的网络模型以及正在进行的训练活动。

  • DIGITS使可视化网络和快速对比精度变得简单。你选择一个模型,DIGITS显示训练状态和精度,并提供在网络训练时或训练完毕后加载和分类图像的选项。

  • 由于DIGITS运行在一个web服务器上,团队用户可以很方便地分享数据库和网络配置,以及测试和分享结果。

  • DIGITS集成了流行的Caffe deep learning framework,并支持使用cuDNN进行GPU加速。

资源信息

  1. 在百度里搜索:NVIDIA DIGITS
  2. 软件首页(DIGITS):https://developer.nvidia.com/digits
  3. 硬件平台(英伟达搭建的环境,NVIDIA® DIGITS™ DevBox): 
    https://developer.nvidia.com/devbox
  4. 相关文档: 
    http://docs.nvidia.com/deeplearning/index.html#axzz3juAVWoDb

登陆软件首页,注册后下载DIGITS(注意到注册邮箱里点击激活链接),也可以下载源码(基于Python)安装。

参考资料

  1. DIGITS 2支持多GPU自动扩展 实现深度学习性能倍增,原文链接:GPU Powered DeepLearning with NVIDIA DIGITS on EC2

  2. EC2上的深度学习:CUDA 7/cuDNN/caffe/DIGITS实战教程,原文链接:GPU Powered DeepLearning with NVIDIA DIGITS on EC2

说明

  1. 如官方所述,DIGITS现在仅支持Ubuntu,当然也在其它Linux系统上测试成功,未见有在Windows上配置的案例;
  2. DIGITS尝试囊括更多的开源Deep Learning 框架,当前(digits-2.0)仅包括:Caffe, Torch, Theano, and BIDMach.

DIGITS安装

安装指导,官网说DIGITS的安装相当方便:1)访问digits home page注册并下载安装器安装;或者2)从GitHub上获取源代码安装。实际上,对于新手来说并非如此,下面介绍采用源码的安装方式。

说明1:本人将采用源码安装的软件的安装根目录为:/home/liu/sfw,即~/sfw,本文中记为yourpath。这样Caffe的安装路径:/home/liu/sfw/caffe,DIGITS的安装路径:/home/liu/sfw/digits;而CUDA默认安装根目录为/usr/local

说明2:每个软件的安装方法可以查看官网的在线帮助,也可以查看源码中的文档。对于后者,多为“.md”即markdown文件,可以安装ReText查看,如下图为预览的Caffe的“installation.md”文件。 
技术分享

软硬件环境

硬件环境

笔记本× 1、CPU(Intel® Core™ i5-3210M CPU @ 2.50GHz × 4 )× 1、GPU(GeForce GT 635M/PCIe/SSE2 + IntelGMAHD3000)× 1。

软件环境

环境简介及下载链接:

  1. 操作系统:Ubuntu 14.04 LTS 64 bit(ubuntu-14.04.3-desktop-amd64.iso)
  2. CUDA:CUDA-7.0(cuda-repo-ubuntu1404-7-0-local_7.0-28_amd64.deb),支持CUDA的GPU
  3. cuDNN:cuDNN-7.0(cudnn-7.0-linux-x64-v3.0-rc.tgz)
  4. Caffe:Caffe-0.13.0(caffe-master.zip)
  5. DIGITS:DIGITS-2.0(源码安装,DIGITS-master.zip)

操作系统安装

具体安装方法参见:U盘系统盘制作与系统安装(详细图解)。

DIGITS安装前准备

采用源码安装DIGITS前,事先要安装CUDA(必须)、cuDNN(用于GPU加速,建议安装),Caffe(运行DIGITS至少要有一个Deep Learning framework,也可以安装Theano,这里不介绍)。

安装CUDA7.0(“.deb”方式)

1.下载安装文件:可以直接访问上面给出的官网链接下载,也可以在终端窗口输入如下命令下载。

# downloading the (currently) most recent version of CUDA 7sudo wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64/cuda-repo-ubuntu1404_7.0.28_amd64.deb
  • 1
  • 2

2.安装依赖工具:需要连网。

# installation of required toolssudo apt-get install -y gcc g++ gfortran build-essential   git wget linux-image-generic libopenblas-dev python-dev   python-pip python-nose python-numpy python-scipy
  • 1
  • 2
  • 3
  • 4

3.安装CUDA

# installing CUDAsudo cuda-repo-ubuntu1404-7-0-local_7.0-28_amd64.debsudo apt-get updatesudo apt-get install cuda
  • 1
  • 2
  • 3
  • 4
  • 5

4.设置环境变量: 
方式1,仅修改用户变量

# setting the environment variables so CUDA will be foundecho -e "\nexport CUDA_HOME=/usr/local/cuda" >> ~/.bashrcecho -e "\nexport LD_LIBRARY_PATH=$CUDA_HOME/lib64:$LD_LIBRARY_PATH" >> ~/.bashrc
  • 1
  • 2
  • 3

方式2,修改所有用户变量 
先使用sudo gedit /etc/profile打开“profile”文件, 
然后在打开的“profile”文件的末尾添加如下代码并保存

# setting the environment variables so CUDA will be found# After open profile, Add follow code at the end of fileexport CUDA_HOME="/usr/local/cuda"export LD_LIBRARY_PATH="$CUDA_HOME/lib64:$LD_LIBRARY_PATH"
  • 1
  • 2
  • 3
  • 4

5.加载新的环境变量:添加好环境变量后,需要加载新的环境变量,才能应用于系统。

重启sudo reboot,或加载更新环境变量source ~/.bashrc(方式1),source /etc/profile(方式2)。

6.安装samples并检查CPU:samples被默认安装在/home/liu下:

# installing the samples and checking the GPUcuda-install-samples-7.0.sh ~/cd NVIDIA_CUDA-7.0_Samples/1_Utilities/deviceQuerymake  ./deviceQuery
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

以上过程,终端都没有给出错误信息,则证明CUDA安装成功。

安装cuDNN7.0

cuDNN的安装很简单:

1.解压:进入“cudnn-7.0-linux-x64-v3.0-rc.tgz”所在目录,将文件解压,如下:

#注意修改成你的目录cd /home/liu/sfw#解压gzip -d cudnn-7.0-linux-x64-v3.0-rc.tgztar xf cudnn-7.0-linux-x64-v3.0-rc.tar
  • 1
  • 2
  • 3
  • 4
  • 5

2.copy文件至CUDA安装目录:解压后,在你的目录下生成一个“cuda”文件夹,对于cuDNN6.5的版本解压后生成“cudnn-6.5-linux-x64-v2”文件。使用如下命令copy

# copy the library files into CUDA‘s include and lib folderssudo cp cuda/include/cudnn.h /usr/local/cuda/includesudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
  • 1
  • 2
  • 3

cuDNN安装完成。

安装Caffe-0.13.0

官网的安装方法:http://caffe.berkeleyvision.org/installation.html。

下载好Caffe-0.13.0后,解压文件caffe-master.zip生成“caffe-master”文件夹,并将其重命名为“caffe”,放在yourpath根目录下下,如:/home/liu/sfw

1.首先安装一些依赖库:CUDA(已安装)、BLAS 、Boost、OpenCV等等,见官网的安装方法:http://caffe.berkeleyvision.org/installation.html,或自述文件(installation.md)。

sudo apt-get install libprotobuf-dev libleveldb-dev   libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev   libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler   libatlas-base-dev
  • 1
  • 2
  • 3
  • 4

2.安装其它的依赖库:查看“requirements.txt”文件,请注意将下面的路径替换为你的路径。

cd ~/sfw/caffe/pythonfor req in $(cat requirements.txt); do sudo pip install $req; done
  • 1
  • 2

2.修改配置文件并编译:终端进入“caffe”文件夹,复制一份Makefile.config文件,然后修改Makefile.config文件,如不使用GPU,可以去掉#GPU_ONLY=1的注释符:#,请根据需要自行修改,这里采用默认值,不做修改。然后进行编译:

cd ~/sfw/caffecp Makefile.config.example Makefile.config# for a faster build, compile in parallel by doing make all -j8 where 8 is the number of parallel threads for compilation (a good choice for the number of threads is the number of cores in your machine).make allmake pymake testmake runtest
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

编译时间比较漫长,可以使用多线程,需要知道你的电脑的线程数,下面这样会快好多:

make all -j4  make py -j4make test -j4  make runtest -j4
  • 1
  • 2
  • 3
  • 4

编译中没有错误提示,说明正确。

3.添加环境变量:方法同CUDA(安装CUDA7.0(“.deb”方式)),只是环境变量名称及路径需要变化,如:

# Add environmentecho -e "\nexport CAFFE_HOME=/home/liu/sfw/caffe" >> ~/.bashrc# load the new environmental variablessource ~/.bashrc
  • 1
  • 2
  • 3
  • 4

或者:

# Add environmentsudo gedit /etc/profile# After open profile, Add follow code at the end# Set Caffe environmentexport CAFFE_HOME="/home/liu/sfw/caffe"# load the new environmental variablessource /etc/profile
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

这样caffe就安装好了!

安装DIGITS

1.解压文件:终于可以安装DIGITS了,解压下载好的DIGITS-master.zip文件生成“DIGITS-master”文件夹,将其重命名为“digits”,并copy到你的目录yourpath,如/home/liu/sfw下面。

2.安装DIGITS:命令如下,注意修改路径。

cd /home/liu/sfw/digitssudo apt-get install graphviz gunicornfor req in $(cat requirements.txt); do sudo pip install $req; done
  • 1
  • 2
  • 3

启动DIGITS

进入digits文件夹,给文件“./digits-devserver”赋予可执行权限,然后./digits-devserver运行digits:

cd ~/sfw/digitschmod +x ./digits-devserver./digits-devserver
  • 1
  • 2
  • 3

运行时可能会提示启动失败:$ImportError: /usr/lib/liblapack.so.3: undefined symbol: ATL_chemv

在stackoverflow找到了原因及解决方法,命令如下:

sudo apt-get remove libopenblas-base
  • 1

然后在终端输入./digits-devserver,即可成功启动: 
技术分享

久违的界面终于出来了: 
技术分享

配置DIGITS

上述步骤,是按默认配置启动digits,如果你想自定义配置,可以在启动前输入:

Most values are set silently by default. If you need more control over your configuration, try one of these commands:# Set more options before starting the server./digits-devserver --config# Advanced usagepython -m digits.config.edit --verbose
  • 1
  • 2
  • 3
  • 4
  • 5

使用DIGITS

digits官方自带例子(MNIST)

参见GettingStarted或源码包中的“GettingStarted.md”文件。

下载MNIST数据集

DIGITS提供了下载数据集MNIST和CIFAR的工具,在/digits/tools/download_data目录下,包含如下文件: 
技术分享

执行其中的main.py程序即可: 
技术分享 
技术分享

主要代码如下:

#首次使用赋予执行权限chmod +x *.py#查看帮助./main.py -h#创建一个目录用于存放MNIST数据集mkdir -p /home/liu/sfw/digits/data/mnist#下载数据集至上述目录./main.py -c mnist ~/sfw/digits/data/mnist
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

执行后,可以在/digits/data/mnist目录下看到下载好的数据集,如下图: 
技术分享

在DIGITS server上创建数据集

这里按照“GettingStarted.md”文件中所述,创建数据集为分类数据集:在digits server首页的DataSets区域点击Images,选择Classfication,在弹出的窗口填写训练数据集信息,这里为60000个样本(“GettingStarted.md”里的例子样本数为10k),信息见下图: 
技术分享

数据集创建过程: 
技术分享

技术分享

点击左上角的“DIGITS”返回查看创建好的MNIST train 60k数据集: 
技术分享

在DIGITS server上创建深度网络模型并训练

如上图,在Models区域点击Images,选择Classfication。在弹出的页面填写信息,数据集选择:MNIST train 60k,模型命名为:LeNet on MNIST 60k,如下图: 
技术分享

点击蓝色按钮“Create”后,任务即开始执行!

一个小问题(cuDNN)

原以为可以兴奋地看到结果,然而失望了,报出了错误:

ERROR: Check failed: status == CUDNN_STATUS_SUCCESS (6 vs. 0) CUDNN_STATUS_ARCH_MISMATCH
  • 1

如下图: 
技术分享

其实,在安装Caffe时,当运行make runtest时就有个小问题,报出了“Check failure”,不过让我直接忽略了,没想到又回来了,哈哈。 
技术分享

这是因为笔记本上的GT635M的计算能力CUDA Capability是2.1,而官方的cuDNN加速是不支持3.0以下的版本的,因此只能在Makefile.config中注释掉USE_CUDNN这行,重新执行以下编译2。

make clean  make all -j4  make test -j4  make runtest -j4
  • 1
  • 2
  • 3
  • 4

:访问CUDA GPUs查看GPU的计算能力,在页面选择GPU的型号,如Geforce GT 635M,如下图: 
技术分享

编译完成后,删除之前建的LetNet on MNIST 60k任务,然后仿造上述步骤,重新新建一个任务,执行后,如下图: 
技术分享

运行过程,网络的训练状态,GPU的状态等信息会实时显示: 
技术分享

学习率与训练代数关系 
技术分享

使用DIGITS server 进行分类操作(MNIST)

训练结束后,可以对手写体数字图像进行分类,可以对单个图像分类,也可以同时分类多幅图像,这里以上述步骤中生成的“MNIST train 60k”数据集中的验证集为例。

在“Upload Image List”区域点击选择文件按钮,选择验证集的 list文件val.txt: 
技术分享

选择好后,点击Classify Many Images按钮,即可对多幅图像分类,这时,界面上没有显示进度,在终端中显示,如下图: 
技术分享

对所选图像分类完成后,弹出分类结果页面: 
技术分享

可视化分类结果: 
技术分享

结语

本文记录了本人安装配置NVIDIA DIGITS步骤与方法,软件环境为Ubuntu 14.04 + CUDA 7.0 + cuDNN 7.0 + Caffe 0.13.0 + DIGITS 2.0。并以DIGITS自述文件中的例子为例,简单介绍了DIGITS的用法。

可见,DIGITS的源码安装方式还是有一定难度,特别是对Linux不熟悉的使用者。DIGITS的使用很方便,只需进行简单的点击操作,即可完成数据集创建、网络模型创建、网络训练、网络训练状态的实时显示、用训练好的网络进行图像分类等任务,使得不熟悉深度学习的人员也可以在深度学习的大海中轻而易举地航行,这正式DIGITS的设计目的所在。

DIGITS除了支持Caffe,还支持Theano,本文并未介绍Theano,不过会陆续补充,关于Theano的一些信息,也可以在本人的其它博客里找到。


 

  • 引言
    • DIGITS简介
    • DIGITS特性
    • 资源信息
    • 说明
  • DIGITS安装
    • 软硬件环境
      • 硬件环境
      • 软件环境
    • 操作系统安装
    • DIGITS安装前准备
      • 安装CUDA70deb方式
      • 安装cuDNN70
      • 安装Caffe-0130
    • 安装DIGITS
    • 启动DIGITS
    • 配置DIGITS
  • 使用DIGITS
    • digits官方自带例子MNIST
      • 下载MNIST数据集
      • 在DIGITS server上创建数据集
      • 在DIGITS server上创建深度网络模型并训练
        • 一个小问题cuDNN
      • 使用DIGITS server 进行分类操作MNIST
  • 结语

 



  1. http://devblogs.nvidia.com/parallelforall/digits-deep-learning-gpu-training-system/ ?
  2. http://blog.csdn.net/songyu0120/article/details/43233907 ?

版权声明:本文为博主原创文章,未经博主允许不得转载。

 
阅读全文
0 0
原创粉丝点击