NVIDIA DIGITS 学习笔记(NVIDIA DIGITS-2.0 + Ubuntu 14.04 + CUDA 7.0 + cuDNN 7.0 + Caffe 0.13.0)
转自:http://blog.csdn.net/enjoyyl/article/details/47397505?from=timeline&isappinstalled=0#10006-weixin-1-52626-6b3bffd01fdde4900130bc5a2751b6d1
NVIDIA DIGITS-2.0 + Ubuntu 14.04 + CUDA 7.0 + cuDNN 7.0 + Caffe 0.13.0环境配置
引言
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加速。
资源信息
- 在百度里搜索: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, 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。
软件环境
环境简介及下载链接:
- 操作系统: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 tools
sudo 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 CUDA
sudo cuda-repo-ubuntu1404-7-0-local_7.0-28_amd64.deb
sudo apt-get update
sudo apt-get install cuda
- 1
- 2
- 3
- 4
- 5
4.设置环境变量:
方式1,仅修改用户变量
# setting the environment variables so CUDA will be found
echo -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”文件的末尾添加如下代码并保存:
# setting the environment variables so CUDA will be found
# After open profile, Add follow code at the end of file
export 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 GPU
cuda-install-samples-7.0.sh ~/
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 /home/liu/sfw
#解压
gzip -d cudnn-7.0-linux-x64-v3.0-rc.tgz
tar 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 folders
sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo 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/python
for 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/caffe
cp 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 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
echo -e "\nexport CAFFE_HOME=/home/liu/sfw/caffe" >> ~/.bashrc
# load the new environmental variables
source ~/.bashrc
- 1
- 2
- 3
- 4
或者:
# Add environment
sudo gedit /etc/profile
# After open profile, Add follow code at the end
# Set Caffe environment
export CAFFE_HOME="/home/liu/sfw/caffe"
# load the new environmental variables
source /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/digits
sudo apt-get install graphviz gunicorn
for req in $(cat requirements.txt); do sudo pip install $req; done
- 1
- 2
- 3
启动DIGITS
进入digits文件夹,给文件“./digits-devserver”赋予可执行权限,然后./digits-devserver
运行digits:
cd ~/sfw/digits
chmod +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 usage
python -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的一些信息,也可以在本人的其它博客里找到。
版权声明:本文为博主原创文章,未经博主允许不得转载。
- 上一篇我的软件
- 顶
- 0
- 踩
- 0
- 猜你在找
核心技术类目
- 文章搜索
- 文章分类
- 阅读排行
- Matlab编程实现图像增强与去噪(3228)
- 如何将Matlab代码带颜色无乱码粘贴到word或网页中(2540)
- 基于VHDL的具有自动乐曲演奏功能的电子琴设计(1351)
- 双线性插值实现图像放大(Matlab实现)(953)
- 微机原理上机实验 - 汇编(753)
- 最优化理论与方法上机报告(713)
- 制作自己的具有透明化背景的电子版手写体(623)
- Cir 和 IBIS模型的使用(466)
- Visual Studio 2010 编程中可能会遇到的一个小问题(454)
- U盘系统盘制作与系统安装(详细图解)(453)
- 评论排行
- 基于VHDL的具有自动乐曲演奏功能的电子琴设计(4)
- Matlab调用Java版JPEG2000图像压缩工具:jj2000-4.1(4)
- Matlab编程实现图像增强与去噪(3)
- 如何将Matlab代码带颜色无乱码粘贴到word或网页中(1)
- 再也不用担心系统出问题了(1)
- 最优化理论与方法上机报告(1)
- 去噪自编码器_DeepLearning 0.1 documentation中文翻译(0)
- 深度学习教程_DeepLearning 0.1 documentation中文翻译(0)
- 微机原理上机实验 - 汇编(0)
- DeepLearning 0.1 documentation中文翻译_内容扉页(0)
- 最新评论
- Matlab调用Java版JPEG2000图像压缩工具:jj2000-4.1
如若明镜: @davidjiao1987:如果在DOS里可以,而在MATLAB里不可以,重启电脑,就好了。
- Matlab调用Java版JPEG2000图像压缩工具:jj2000-4.1
如若明镜: @davidjiao1987:“pict.pgm”是自动生成的,“jpeg2000.m”里第68行:...
- Matlab调用Java版JPEG2000图像压缩工具:jj2000-4.1
davidjiao1987: 请问,调用编码器时,键入命令行Java JJ2KEncoder -i pict.pgm -o pic...
- Matlab调用Java版JPEG2000图像压缩工具:jj2000-4.1
davidjiao1987: 你好,我想问下,把jj2000-4.1.jar的路径添加到CLASSPATH环境变量,不成功怎么办,...
- 再也不用担心系统出问题了
jianhualuoying: 妈妈再也不用担心我系统备份了
- 最优化理论与方法上机报告
scott321: 受益良多啊!感谢楼主整理!
- 基于VHDL的具有自动乐曲演奏功能的电子琴设计
如若明镜: @wumaoyi22:最近有点忙,一直没上博客,回复的晚了,请理解。本人现在做算法,那个只是本科期间...
- 基于VHDL的具有自动乐曲演奏功能的电子琴设计
wumaoyi22: @u011335616:嗯啊,,谢谢啊,你现在还研究这方面吗?编写录音回放模块好写吗?
- 基于VHDL的具有自动乐曲演奏功能的电子琴设计
如若明镜: @wumaoyi22:你可以使用7个开关作为:do - si七个音符弹奏键,记为:1-7,另外一个作...
- 基于VHDL的具有自动乐曲演奏功能的电子琴设计
wumaoyi22: 亲,,,我的板子没有4*4的矩阵键盘,只有8个拨码开关,那个键盘控制模块应该怎样改写啊???求大神帮...
暂无评论