引言
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集成了流行的Caffe deep learning framework,并支持使用cuDNN进行GPU加速。
资源信息
- 在百度里搜索:NVIDIA DIGITS
- 软件首页(DIGITS):https://developer.nvidia.com/digits
- 硬件平台(英伟达搭建的环境,NVIDIA® DIGITS™ DevBox):
https://developer.nvidia.com/devbox - 相关文档:
http://docs.nvidia.com/deeplearning/index.html#axzz3juAVWoDb
登陆软件首页,注册后下载DIGITS(注意到注册邮箱里点击激活链接),也可以下载源码(基于Python)安装。
参考资料:
-
DIGITS 2支持多GPU自动扩展 实现深度学习性能倍增,原文链接:GPU Powered DeepLearning with NVIDIA DIGITS on EC2
-
EC2上的深度学习:CUDA 7/cuDNN/caffe/DIGITS实战教程,原文链接:GPU Powered DeepLearning with NVIDIA DIGITS on EC2
说明
- 如官方所述,DIGITS现在仅支持Ubuntu,当然也在其它Linux系统上测试成功,未见有在Windows上配置的案例;
- DIGITS尝试囊括更多的开源Deep Learning 框架,当前(digits-2.0)仅包括:Caffe,Torch,Theano,andBIDMach.
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。
软件环境
环境简介及下载链接:
- 操作系统:Ubuntu 14.04 LTS 64 bit(ubuntu-14.04.3-desktop-amd64.iso)
- CUDA:CUDA-7.0(cuda-repo-ubuntu1404-7-0-local_7.0-28_amd64.deb),支持CUDA的GPU
- cuDNN:cuDNN-7.0(cudnn-7.0-linux-x64-v3.0-rc.tgz)
- Caffe:Caffe-0.13.0(caffe-master.zip)
- 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 7 sudo 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 buildessential git wget linuximagegeneric libopenblasdev pythonpip pythonnose pythonnumpy pythonscipy
- 1
- 2
- 3
- 4
3.安装CUDA:
# installing CUDAsudo cudarepoubuntu1404-70local_7.28_amd64.deb update install cuda
- 1
- 2
- 3
- 4
- 5
# setting the environment variables so CUDA will be foundecho e "\nexport CUDA_HOME=/usr/local/cuda" >>~/.bashrc echo -e "\nexport LD_LIBRARY_PATH=$CUDA_HOME/lib64:$LD_LIBRARY_PATH" >> ~/.bashrc
- 1
- 2
- 3
方式2,修改所有用户变量
先使用sudo gedit /etc/profile
打开“profile”文件,
然后在打开的“profile”文件的末尾添加如下代码并保存:
# After open profile,Add follow code at the end of file export CUDA_HOME="/usr/local/cuda" 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 GPU cudainstallsamples7.0sh / cd NVIDIA_CUDA-7.0_Samples/1_Utilities/deviceQuery make ./deviceQuery
- 1
- 2
- 3
- 4
- 5
- 6
以上过程,终端都没有给出错误信息,则证明CUDA安装成功。
安装cuDNN7.0
cuDNN的安装很简单:
1.解压:进入“cudnn-7.0-linux-x64-v3.0-rc.tgz”所在目录,将文件解压,如下:
#注意修改成你的目录cd homeliusfw #解压 gzip d cudnnlinuxx64v3rctgz tar xf cudnntar
- 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 cudaincludecudnnh usr/localcudainclude libcudnn* /usr/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)。
install libprotobufdev libleveldbdev libsnappydev libopencvdev libboostalldev libhdf5serialdev libgflagsdev libgoogleglogdev liblmdbdev protobufcompiler libatlasbasedev
- 1
- 2
- 3
- 4
2.安装其它的依赖库:查看“requirements.txt”文件,请注意将下面的路径替换为你的路径。
/sfw/caffepython for req in $(cat requirementstxt);dosudo pip install $req;done
- 1
- 2
2.修改配置文件并编译:终端进入“caffe”文件夹,复制一份Makefile.config文件,然后修改Makefile.config文件,如不使用GPU,可以去掉#GPU_ONLY=1
的注释符:#
,请根据需要自行修改,这里采用默认值,不做修改。然后进行编译:
caffe cp Makefileconfigexample 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 all make py make test make runtest
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
编译时间比较漫长,可以使用多线程,需要知道你的电脑的线程数,下面这样会快好多:
make all j4 make py j4 make test j4 make runtest j4
- 1
- 2
- 3
- 4
3.添加环境变量:方法同CUDA(安装CUDA7.0(“.deb”方式)),只是环境变量名称及路径需要变化,如:
# Add environment"\nexport CAFFE_HOME=/home/liu/sfw/caffe"/.bashrc # load the new environmental variables source ~/bashrc
- 1
- 2
- 3
- 4
或者:
sudo gedit etcprofile # Set Caffe environment CAFFE_HOME"/home/liu/sfw/caffe"# load the new environmental variablessource 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:命令如下,注意修改路径。
sfwdigits install graphviz gunicorn done
- 1
- 2
- 3
启动DIGITS
进入digits文件夹,给文件“./digits-devserver”赋予可执行权限,然后./digits-devserver
运行digits:
digits chmod +x digitsdevserver devserver
- 1
- 2
- 3
运行时可能会提示启动失败:$ImportError: /usr/lib/liblapack.so.3: undefined symbol: ATL_chemv
在stackoverflow找到了原因及解决方法,命令如下:
remove libopenblasbase
- 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--# Advanced usage python m digitsedit verbose
- 1
- 2
- 3
- 4
- 5
使用DIGITS
digits官方自带例子(MNIST)
参见GettingStarted或源码包中的“GettingStarted.md”文件。
下载MNIST数据集
DIGITS提供了下载数据集MNIST和CIFAR的工具,在/digits/tools/download_data
目录下,包含如下文件:
执行其中的main.py程序即可:
主要代码如下:
#首次使用赋予执行权限 chmod *.py #查看帮助mainpy h #创建一个目录用于存放MNIST数据集 mkdir p datamnist #下载数据集至上述目录c mnist 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 ) 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
- 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的一些信息,也可以在本人的其它博客里找到。