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

2024-06-05 13:48

本文主要是介绍NVIDIA DIGITS 学习笔记(NVIDIA DIGITS-2.0 + Ubuntu 14.04 + CUDA 7.0 + cuDNN 7.0 + Caffe 0.13.0),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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


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


引言

DIGITS简介

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

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自动扩展 实现深度学习性能倍增,原文链接:Easy Multi-GPU Deep Learning with DIGITS 2

  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”文件。
使用ReText查看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,必须是NVIDIA’s fork,原因点此)
  5. DIGITS:DIGITS-2.0(源码安装,DIGITS-master.zip)

操作系统安装

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

DIGITS安装前准备

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

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

CUDA-7.0在Linux下的安装步骤参见官网手册:CUDA_Getting_Started_Linux,其中提及了“.run”、“.deb”等安装文件的安装方法,本人选择”deb”包的格式,因为它比较简单。

0.检查你的电脑是否支持CUDA
检查GPU是否支持:输入如下命令,如果输出的GPU型号是NVIDIA的,并且在此http://developer.nvidia.com/cuda-gpus列表内,则支持。

lspci | grep -i nvidia

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

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

3.安装CUDA

# installing CUDA
sudo dpkg -i cuda-repo-ubuntu1404-7-0-local_7.0-28_amd64.debsudo apt-get update
sudo apt-get install cuda

4.设置环境变量

注意:此环境变量为64位系统下的,32位的把lib64改成lib即可。

方式1,仅修改用户变量

# setting the environment variables so CUDA will be foundecho "\nexport PATH=/usr/local/cuda-7.0/bin:$PATH" >> ~/.bashrc
echo "\nexport LD_LIBRARY_PATH=/usr/local/cuda-7.0/lib64:$LD_LIBRARY_PATH" >> ~/.bashrc

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

# setting the environment variables so CUDA will be found
# After open profile, Add follow code at the end of file
export PATH=/usr/local/cuda-7.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-7.0/lib64:$LD_LIBRARY_PATH

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

加载更新环境变量source ~/.bashrc(方式1),source /etc/profilesource ~/.bashrc(方式2)。

=====重启系统!重启系统!重启系统!=======

sudo reboot

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

执行完./deviceQuery命令,终端输出如下类似信息,有GPU型号、驱动版本和运行版本、计算能力……诸多信息:
GPU设备信息

至此CUDA安装成功。

显卡切换

如果你用的是具有双显卡的PC机,比如本人的Intel集成显卡+NVIDIA的独立显卡,可以使用nvidia-prime来切换使用哪个显卡。双击/usr/share/applications/NVIDIA X Server Settings启动NVIDIA X Server 设置,如下图,但不像网上说的有nvidia-prime那一项:
NVIDIA X Server Settings

于是自己安装NVIDIA-prime指示器,命令如下:

sudo add-apt-repository ppa:nilarimogard/webupd8
sudo apt-get update
sudo apt-get install prime-indicator
sudo reboot

重启系统后,在右上方托盘区可见NVIDIA或Intel的图标,点击即可切换。

安装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

2.copy文件至CUDA安装目录:解压后,在你的目录下生成一个“cuda”文件夹,对于cuDNN6.5的版本解压后生成“cudnn-6.5-linux-x64-v2”文件。使用如下命令copy,注意第二个有个-a参数,否则,拷贝过去的文件失去了链接。

# copy the library files into CUDA's include and lib folders
sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp -a cuda/lib64/libcudnn* /usr/local/cuda/lib64

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

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

cd ~/sfw/caffe/python
for req in $(cat requirements.txt); do sudo pip install $req; done

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

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

make all -j4  
make py -j4
make test -j4  
make runtest -j4

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

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

# Add environment
echo -e "\nexport CAFFE_HOME=/home/liu/sfw/caffe" >> ~/.bashrc
# load the new environmental variables
source ~/.bashrc

或者:

# 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

这样caffe就安装好了!如果在make runtest时提示“Core dumped”,现象截图及解决办法见一个小问题(Caffe&cuDNN)。

安装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

如果网络不好,或软件源服务关闭等等可能造成某些依赖库无法下载和安装,终端会有大片红色文字,请更改软件源确认网络连接正常,重新执行上述命令。

启动DIGITS

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

cd ~/sfw/digits
chmod +x ./digits-devserver
./digits-devserver

第一次运行会提示输入caffe的安装路径:
输入caffe的安装路径

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

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

sudo apt-get remove libopenblas-base

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

久违的界面终于出来了:
digits server

配置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

使用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

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

在DIGITS server上创建数据集

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

数据集创建过程:
digits server正在创建数据集

digits创建的数据集信息

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

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

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

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

一个小问题(Caffe&cuDNN)

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

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

如下图:
出错啦

其实,在安装Caffe时,当运行make runtest时就有个小问题,报出了“Check failure”,不过让我直接忽略了,没想到又回来了,哈哈。
Chek 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

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

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

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

学习率与训练代数关系
学习率与训练代数关系图

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

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

在“Upload Image List”区域点击选择文件按钮,选择验证集的 list文件val.txt:
选择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上创建深度网络模型并训练
        • 一个小问题CaffecuDNN
      • 使用DIGITS server 进行分类操作MNIST
  • 结语



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

这篇关于NVIDIA DIGITS 学习笔记(NVIDIA DIGITS-2.0 + Ubuntu 14.04 + CUDA 7.0 + cuDNN 7.0 + Caffe 0.13.0)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1033226

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

uva 10061 How many zero's and how many digits ?(不同进制阶乘末尾几个0)+poj 1401

题意是求在base进制下的 n!的结果有几位数,末尾有几个0。 想起刚开始的时候做的一道10进制下的n阶乘末尾有几个零,以及之前有做过的一道n阶乘的位数。 当时都是在10进制下的。 10进制下的做法是: 1. n阶位数:直接 lg(n!)就是得数的位数。 2. n阶末尾0的个数:由于2 * 5 将会在得数中以0的形式存在,所以计算2或者计算5,由于因子中出现5必然出现2,所以直接一

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

线性代数|机器学习-P36在图中找聚类

文章目录 1. 常见图结构2. 谱聚类 感觉后面几节课的内容跨越太大,需要补充太多的知识点,教授讲得内容跨越较大,一般一节课的内容是书本上的一章节内容,所以看视频比较吃力,需要先预习课本内容后才能够很好的理解教授讲解的知识点。 1. 常见图结构 假设我们有如下图结构: Adjacency Matrix:行和列表示的是节点的位置,A[i,j]表示的第 i 个节点和第 j 个