首页 技术 正文
技术 2022年11月12日
0 收藏 714 点赞 4,072 浏览 8821 个字

转自: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。

NVIDIA DIGITS 学习笔记(NVIDIA DIGITS-2.0 + Ubuntu 14.04 + CUDA 7.0 + cuDNN 7.0 + Caffe 0.13.0)

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

登陆软件首页,注册后下载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)仅包括:CaffeTorchTheano, 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”文件。 
NVIDIA DIGITS 学习笔记(NVIDIA DIGITS-2.0 + Ubuntu 14.04 + CUDA 7.0 + cuDNN 7.0 + Caffe 0.13.0)

软硬件环境

硬件环境

笔记本× 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 bitubuntu-14.04.3-desktop-amd64.iso
  2. CUDACUDA-7.0(cuda-repo-ubuntu1404-7-0-local_7.0-28_amd64.deb),支持CUDA的GPU
  3. cuDNNcuDNN-7.0(cudnn-7.0-linux-x64-v3.0-rc.tgz)
  4. CaffeCaffe-0.13.0caffe-master.zip
  5. DIGITSDIGITS-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.debsudo 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 GPUcuda-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,即可成功启动: 
NVIDIA DIGITS 学习笔记(NVIDIA DIGITS-2.0 + Ubuntu 14.04 + CUDA 7.0 + cuDNN 7.0 + Caffe 0.13.0)

久违的界面终于出来了: 
NVIDIA DIGITS 学习笔记(NVIDIA DIGITS-2.0 + Ubuntu 14.04 + CUDA 7.0 + cuDNN 7.0 + Caffe 0.13.0)

配置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提供了下载数据集MNISTCIFAR的工具,在/digits/tools/download_data目录下,包含如下文件: 
NVIDIA DIGITS 学习笔记(NVIDIA DIGITS-2.0 + Ubuntu 14.04 + CUDA 7.0 + cuDNN 7.0 + Caffe 0.13.0)

执行其中的main.py程序即可: 
NVIDIA DIGITS 学习笔记(NVIDIA DIGITS-2.0 + Ubuntu 14.04 + CUDA 7.0 + cuDNN 7.0 + Caffe 0.13.0) 
NVIDIA DIGITS 学习笔记(NVIDIA DIGITS-2.0 + Ubuntu 14.04 + CUDA 7.0 + cuDNN 7.0 + Caffe 0.13.0)

主要代码如下:

#首次使用赋予执行权限
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目录下看到下载好的数据集,如下图: 
NVIDIA DIGITS 学习笔记(NVIDIA DIGITS-2.0 + Ubuntu 14.04 + CUDA 7.0 + cuDNN 7.0 + Caffe 0.13.0)

在DIGITS server上创建数据集

这里按照“GettingStarted.md”文件中所述,创建数据集为分类数据集:在digits server首页的DataSets区域点击Images,选择Classfication,在弹出的窗口填写训练数据集信息,这里为60000个样本(“GettingStarted.md”里的例子样本数为10k),信息见下图: 
NVIDIA DIGITS 学习笔记(NVIDIA DIGITS-2.0 + Ubuntu 14.04 + CUDA 7.0 + cuDNN 7.0 + Caffe 0.13.0)

数据集创建过程: 
NVIDIA DIGITS 学习笔记(NVIDIA DIGITS-2.0 + Ubuntu 14.04 + CUDA 7.0 + cuDNN 7.0 + Caffe 0.13.0)

NVIDIA DIGITS 学习笔记(NVIDIA DIGITS-2.0 + Ubuntu 14.04 + CUDA 7.0 + cuDNN 7.0 + Caffe 0.13.0)

点击左上角的“DIGITS”返回查看创建好的MNIST train 60k数据集: 
NVIDIA DIGITS 学习笔记(NVIDIA DIGITS-2.0 + Ubuntu 14.04 + CUDA 7.0 + cuDNN 7.0 + Caffe 0.13.0)

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

如上图,在Models区域点击Images,选择Classfication。在弹出的页面填写信息,数据集选择:MNIST train 60k,模型命名为:LeNet on MNIST 60k,如下图: 
NVIDIA DIGITS 学习笔记(NVIDIA DIGITS-2.0 + Ubuntu 14.04 + CUDA 7.0 + cuDNN 7.0 + Caffe 0.13.0)

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

一个小问题(cuDNN)

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

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

如下图: 
NVIDIA DIGITS 学习笔记(NVIDIA DIGITS-2.0 + Ubuntu 14.04 + CUDA 7.0 + cuDNN 7.0 + Caffe 0.13.0)

其实,在安装Caffe时,当运行make runtest时就有个小问题,报出了“Check failure”,不过让我直接忽略了,没想到又回来了,哈哈。 
NVIDIA DIGITS 学习笔记(NVIDIA DIGITS-2.0 + Ubuntu 14.04 + CUDA 7.0 + cuDNN 7.0 + Caffe 0.13.0)

这是因为笔记本上的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,如下图: 
NVIDIA DIGITS 学习笔记(NVIDIA DIGITS-2.0 + Ubuntu 14.04 + CUDA 7.0 + cuDNN 7.0 + Caffe 0.13.0)

编译完成后,删除之前建的LetNet on MNIST 60k任务,然后仿造上述步骤,重新新建一个任务,执行后,如下图: 
NVIDIA DIGITS 学习笔记(NVIDIA DIGITS-2.0 + Ubuntu 14.04 + CUDA 7.0 + cuDNN 7.0 + Caffe 0.13.0)

运行过程,网络的训练状态,GPU的状态等信息会实时显示: 
NVIDIA DIGITS 学习笔记(NVIDIA DIGITS-2.0 + Ubuntu 14.04 + CUDA 7.0 + cuDNN 7.0 + Caffe 0.13.0)

学习率与训练代数关系 
NVIDIA DIGITS 学习笔记(NVIDIA DIGITS-2.0 + Ubuntu 14.04 + CUDA 7.0 + cuDNN 7.0 + Caffe 0.13.0)

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

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

在“Upload Image List”区域点击选择文件按钮,选择验证集的 list文件val.txt: 
NVIDIA DIGITS 学习笔记(NVIDIA DIGITS-2.0 + Ubuntu 14.04 + CUDA 7.0 + cuDNN 7.0 + Caffe 0.13.0)

选择好后,点击Classify Many Images按钮,即可对多幅图像分类,这时,界面上没有显示进度,在终端中显示,如下图: 
NVIDIA DIGITS 学习笔记(NVIDIA DIGITS-2.0 + Ubuntu 14.04 + CUDA 7.0 + cuDNN 7.0 + Caffe 0.13.0)

对所选图像分类完成后,弹出分类结果页面: 
NVIDIA DIGITS 学习笔记(NVIDIA DIGITS-2.0 + Ubuntu 14.04 + CUDA 7.0 + cuDNN 7.0 + Caffe 0.13.0)

可视化分类结果: 
NVIDIA DIGITS 学习笔记(NVIDIA DIGITS-2.0 + Ubuntu 14.04 + CUDA 7.0 + cuDNN 7.0 + Caffe 0.13.0)

结语

本文记录了本人安装配置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的一些信息,也可以在本人的其它博客里找到。




  1. http://devblogs.nvidia.com/parallelforall/digits-deep-learning-gpu-training-system/ 
  2. http://blog.csdn.net/songyu0120/article/details/43233907 
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,492
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,907
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,740
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,495
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,132
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,295