2017-11-20 22:13:27 Lauyeed 阅读数 3824
  • WebGL 可视化3D绘图框架:Three.js 零基础上手实战

    相对于Flash,Flex,Silverlight等富客户端技术,WebGL之ThreeJS:通过OpenGL ES 2.0,WebGL可以为HTML5 Canvas提供硬件3D加速渲染,这样Web开发人员就可以借助系统显卡来在浏览器里更流畅地展示3D场景和模型了,还能创建复杂的导航和数据视觉化。这是未来的网游趋势,如果你想做可视化动画三维企业应用,又不想用复杂的C++程序,那么 Three.js 将会是你最好的选择。  本课程主要的功效就是让你学习完本教程后,能够写出在浏览器上流畅运行的3D程序,包括但不限于:大数据可视化,360度全景展示,3D游戏,完成这些事情,会比c++用更少的代码。而且更容易,更酷。 在本课程中,我们将由浅入深的讲解这些效果的实现,这能让你迅速提高开发技能,在职场中处于不败之地。课程共十三章,大大小小贯穿了近10个案例,只要你具备基础的HTML和JavaScript基础即可学习。

    884 人正在学习 去看看 童金浩

       最近,一直在自学深度学习。一边学习理论,一遍学习编程。在做CNN的时候,手头的笔记本电脑就吃不消了,运行的速度明显跟不上。本来想买一台带好点的显卡,可是调研了一下,带NVIDIA 1080的差不多要1万左右,更不用说更高的配置。

       偶然发现百度云里面有一款用于服务深度学习者的产品:百度深度学习。

       浅试了一下,个人感觉有以下几个优点,值得用来进行深度学习的学习:

       1. 上手容易。有帮助文档,可以帮助新手入门。虽然不是很丰富,但是上手很容易。

       2. 价格还算可以接受。因为我只是新手,计算的任务仅限于测试一些案例和调试一些参数。而该产品是使用按量计费的,最便宜的配置5.16元/时(Nvidia K40),非常符合我的需求,用完即可释放。

       3. 系统镜像已经预置了Tensorflow,keras等主流框架,非常方便。而且如果有缺少的包,也可自行安装。

       当然,也有不好的地方:

       1. 每次用完释放,无法保存镜像,每次都要重新下载数据。

       2. 用的是python2.7的版本。我笔记本上一直用的事Python3.5的版本。

       以下,简单描述一下使用过程(假设已经有百度云账号而且账号里面的余额不少于100元):

       1. 进入百度深度学习平台(https://cloud.baidu.com/product/bdl.html)

       2. 点击“立即使用”

       3. 点击“创建集群”

       4. 输入集群名称(随便取)、输入管理员密码、选择集群镜像、选择配置

       5. 点击“下一步”,点击“去支付”,随即你就拥有了一个带有Nvidia K40显卡的计算机。

       6. 进入管理控制台,点击集群名称,在基本信息里面可以看到公网IP,可以通过该IP访问该计算机。(该产品还自带了Jupyter notebook,不过目前没有太多的帮助文档,试用了一下,目前好像不太好用),以下是集群信息:

               

       7. 打开“Putty”(或者其他类似功能的工具),输入上述公网IP,输入用户名root,密码(创建集群时设置的密码),即可登陆集群。

       8. 集群中内置了3个domo,可以试一下,运行速度比笔记本快了很多。

      

       接下来就是上传自己的代码、数据、运行,并下载运行结果。集群是利用百度另一款产品,BOS实现数据的上传和下载。这里需要另外购买BOS,对于学习来说,BOS很便宜,是按照储存的量来计费的。以下是1GB的费用,只要0.74801元/月

     

        按照我的理解,集群需要通过BOS作为中转来实现和本地的数据交换。也就是说,本地计算机需要上传数据到BOS,然后集群从BOS上下载数据;算完之后,需要将集群上的数据上传到BOS,然后本地电脑再从BOS上下载,稍微有点麻烦,希望以后能够实现直接的上传和下载。不过,因为BOS和集群属于同一个内网,所以速度很快,可以达到20M/s。

       以下,介绍BOS的创建:

       1. 进入对象存储:https://cloud.baidu.com/product/bos.html

       2. 点击“立即使用”

       3. 点击“新建Bucket”,输入“Bucket名称”,(该名称是唯一的,可通过该名称储存,下载数据),区域和集群一致,存储类型选择“标准”,读写权限选择“公共读写”(我这里主要是用来学习,读数据的安全不是很重视,为了方便,选择“公共读写”)

       4. 点击“确定”,即可拥有一个类似硬盘的云盘

       5. 点击你创建的“Bucket名称”,即可进行文件的上传

       6. 这里假设你上传了文件cifar10_vgg16.zip文件,点击获取地址,即可获得该文件的地址file_address(指文件地址)

       7. 在Putty中输入wget file_address,即可从BOS中下载该文件到深度学习平台 

       以上介绍了文件的上传,即从本地上传到BOS,集群再从BOS中下载。反过来的过程,即从集群上传文件到BOS,需要使用BOS CLI,

       1. 从以下地址下载BOS CLI安装包https://cloud.baidu.com/doc/Downloadcenter/CLI.html

       2. 通过上述步骤将该安装包从本地上传到BOS,然后从BOS下载到集群

       3. 在Putty中解压安装包、安装

    $ unzip bce-cli-0.10.8.zip
    $ cd bce-cli-0.10.8
    $ python setup.py install
       4. 安装完之后,就可以把集群中的文件上传到BOS,这里假设你要上传mnist.py

    bce bos cp mnist.py bos:/mybucket/mnist.py
       (这里mybucket要换成你刚才创建的Bucket名称)

       这样,就可以实现代码、数据在集群和本地电脑上的上传和下载,就可以愉快地进行深度学习了。

       以下,通过vgg16神经网络分类cifar10数据集对比一下,我破烂的笔记本电脑(ThinkPad E430c)和带一个Nvidia K40集群的速度:


ThinkPad E430C 8.8examples/sec
Nvidia K40 460examples/sec
       通过以上表格,K40可以达到笔记本电脑的52倍!
       用完之后,要记得点击“释放”,这样集群就自动删除了,然后百度会根据的用的时间进行计费。

       不好的事,集群释放之后,你计算的结果,上传的数据就跟着消失了(BOS中的数据不会消失)。等下一次你要算的时候,就要从头开始,不过每次创建的时间也不会太长,估计在3分钟左右,也可以接受。




        


       

2018-07-04 20:08:23 gxc_8311 阅读数 1463
  • WebGL 可视化3D绘图框架:Three.js 零基础上手实战

    相对于Flash,Flex,Silverlight等富客户端技术,WebGL之ThreeJS:通过OpenGL ES 2.0,WebGL可以为HTML5 Canvas提供硬件3D加速渲染,这样Web开发人员就可以借助系统显卡来在浏览器里更流畅地展示3D场景和模型了,还能创建复杂的导航和数据视觉化。这是未来的网游趋势,如果你想做可视化动画三维企业应用,又不想用复杂的C++程序,那么 Three.js 将会是你最好的选择。  本课程主要的功效就是让你学习完本教程后,能够写出在浏览器上流畅运行的3D程序,包括但不限于:大数据可视化,360度全景展示,3D游戏,完成这些事情,会比c++用更少的代码。而且更容易,更酷。 在本课程中,我们将由浅入深的讲解这些效果的实现,这能让你迅速提高开发技能,在职场中处于不败之地。课程共十三章,大大小小贯穿了近10个案例,只要你具备基础的HTML和JavaScript基础即可学习。

    884 人正在学习 去看看 童金浩

最近深度学习十分火爆,作为一个程序员当然要多学习一下深度学习这种酷炫的新技能啦。现在Google的Tensorflow已经把深度学习需要的一些常用计算封装成了函数库,已经成为了事实上的深度计算标准。本来想在自己的电脑上跑一下Tensorflow的mnist手写数字识别demo,折腾了半天装好了Tensorflow之后想着终于可以高高兴兴的跑一下mnist_deep.py了。

但是跑起来之后发现......真是太TM的慢了!!


每迭代一次要花4-5秒的时间,老子的电脑可是带独立显卡GT 750M的MacBook Pro啊!这速度等它训练完收敛我估计我可以读完一本书了......

所以我开始在网上找有没有GPU加速的云主机可以便宜点儿租来跑一下这些深度计算,找了半天发现网上有很多可以跑深度学习的虚拟主机,但每一个我上去都要重新装一下环境。而且只要开机就收我每个小时十几二十块的费用,我这装个环境至少也得十几分钟……这几块钱就白送给人家了......

直到我发现了这个......

极客云

http://www.jikecloud.net/

打开之后就会看到网站对云主机的介绍,感兴趣的可以点击“如何使用”来查看帮助文档。


如果是新用户注册,可以点击“现在注册”进入注册页面。

嗯嗯......这个验证码真TM的炫动......

注册之后就来到了“我的云主机”页面,点创建实例跳转到创建页面。

在“创建实例”页面可以选择你需要的机型来创建虚拟主机,现在无论是注册还是登陆都会送很多的代金券。实际使用价格还是挺低的,经济实惠。

点击“创建”按钮并等待片刻后,会回到“我的云主机”页面,此时可以看到创建的云主机已经显示在列表界面里面了。

在列表界面有Jupyter Notebook的链接。点这个链接就可以进入Jupyter Notebook了,使用起来很方便。

我们跑一下mnist手写数字的训练Demo,点击文件的链接可以显示文件的内容。

在文件内容页面复制好代码以后,点屏幕左上角的那个图标回到Jupyter首页。

回到首页后点右边的New下拉菜单,选择新建一个Python 3的Notebook。

创建好Notebook之后,在图示处粘贴刚刚复制的代码。

复制好代码之后,就可以点击Run运行啦。

可以看到点击Run之后,在页面下方就出现了程序的log,这说明我们的程序已经欢快的运行起来啦~

上面那种方式其实是给大家演示了一下在Jupyter Notebook里面写程序并且运行程序的方法。如果你已经上传好了几个python文件的话,可以在主页点完的New下拉菜单新建一个Python 3的Notebook之后,运行 %run mnist_deep.py 来执行python文件。

看,它这就欢快的跑起来啦~

总结:

新版的极客云深度学习实例,既装好了所有的深度学习框架,又新加入了Jupyter Notebook方便使用。实现了零设置执行深度学习的程序,想了解更多细节可以去访问极客云的网站:http://www.jikecloud.net/


2018-01-24 21:25:24 christianashannon 阅读数 2429
  • WebGL 可视化3D绘图框架:Three.js 零基础上手实战

    相对于Flash,Flex,Silverlight等富客户端技术,WebGL之ThreeJS:通过OpenGL ES 2.0,WebGL可以为HTML5 Canvas提供硬件3D加速渲染,这样Web开发人员就可以借助系统显卡来在浏览器里更流畅地展示3D场景和模型了,还能创建复杂的导航和数据视觉化。这是未来的网游趋势,如果你想做可视化动画三维企业应用,又不想用复杂的C++程序,那么 Three.js 将会是你最好的选择。  本课程主要的功效就是让你学习完本教程后,能够写出在浏览器上流畅运行的3D程序,包括但不限于:大数据可视化,360度全景展示,3D游戏,完成这些事情,会比c++用更少的代码。而且更容易,更酷。 在本课程中,我们将由浅入深的讲解这些效果的实现,这能让你迅速提高开发技能,在职场中处于不败之地。课程共十三章,大大小小贯穿了近10个案例,只要你具备基础的HTML和JavaScript基础即可学习。

    884 人正在学习 去看看 童金浩

参考 在AWS上配置深度学习主机

AWS 文档:aws文档

因为本地开发环境受限(没有高端显卡),于是深度学习运算只能使用各大厂的云主机;经过对比,发现亚马逊的aws在深度学习虚拟主机的搭建上性价比最高,于是决定使用aws。

根据推荐,要解决基础应用的要求,可以使用aws上的p2.xlarge主机实例,p2.xlarge 是一种非常适合深度学习的云服务器,它配备了 12G 显存的 Tesla K80 显卡,4核 CPU,60G 内存,以及 500M 的网速。

注册账户及填写工单

这一部分内容可参考原文,即需要一张visa/Master Card/运通/JCB 信用卡,值得注意的是注册过程中会扣1美元的预收费用,以验证信用卡的有效性,这1美元会在数天之后退回信用卡。
另外在注册过程中除了常见的邮件验证外,还会有电话验证,只需要在电话中输入验证码即可。

aws 实例设置

AMI 选择

AMI 即运行环境,可以自己创建,也可以选择已经搭建好的;由于要使用p2.xlarge主机,所以首先要注意哪些地区有该主机实例提供,目前美国弗吉尼亚和俄勒冈两个地区确认有该主机实例提供,地区选择位于登录界面右上角:
这里写图片描述
注册完成,成功登录后,进入aws控制台,可以看到:
这里写图片描述

点击服务列表的EC2,进入EC2控制台:

这里写图片描述

在控制台左侧的限制一栏里,可以看到该账户目前的权限,如果需要特定服务,点击“请求提高限制”,然后提交工单即可。

点击启动实例 按钮,开始选择AMI:

在这里选择合适项目的AMI,一般选择预装好了tensorflow和conda环境,并且安装了Nvida 驱动的AMI,可以在搜索框进行搜索,比如:

这里写图片描述
一般AMI都带有简短描述,选择合适自己项目的即可,如果有自建的AMI,也可选择自建的AMI,在这里,我选择了图中第二个AMI.

在选择实例类型里选择合适的实例,比如p2.xlarge:
这里写图片描述
在配置实例中可以选择竞价模型,建议选择竞价模型,可以手动设置最高价格,当价格大于当前可用价格,实例就会被创建;在子网选项里可以选择具体的实例子网;

这里写图片描述
这里写图片描述

然后依次下一步至配置安全组

这里写图片描述
这里写图片描述
在安全组配置中,可以设置流入接口和流出接口,这里最简单的就是设置成全部端口,但是可能存在安全问题(保存好密钥文件即可)
这里写图片描述
也可以这样按需求设置:
这里写图片描述
建议还是设置为所有流量;

进入审核页面,核对之前各部分信息无误后,点击启动,会要求使用密钥,可以选择新建(新建好后需下载保存)或已有密钥;
这里写图片描述
创建成功,有:
这里写图片描述
这里写图片描述

原参考文章是基于本地Linux系统的连接方法,在windos10以下版本的windos系统里,没有自带的ssh服务,因此只能选择putty连接,相关方法可以在aws文档中找到: 使用 PuTTY 从 Windows 连接到 Linux 实例 ,而对于windos10系统,系统已经集成了ssh工具,可以在设置中添加启用,启用后可以和Linux一样,直接使用ssh连接;
这里写图片描述
在保存有key(密钥)的文件夹中,用bash终端输入:

ssh -i "a.pem" ubuntu@xxxxx.compute-1.amazonaws.com

其中的 key 为你自己的key,xxxx 地址也要改为你自己买的服务器的 ip地址。如果它提示你是否要确定连接,点击确定:
如果不是在存有密钥的文件夹启用ssh,比如在桌面根目录,则改为:

ssh -i address/a.pem ubuntu@xxxxx.compute-1.amazonaws.com

address为本地存放key的相对地址;

连接后,在终端有:
这里写图片描述
这时已经连上了虚拟主机;
在bash命令行实验,显示python 版本:

python --version

这里写图片描述

启动jupyter notebook,开启一个支持远程连接的 jupyter notebook:

jupyter notebook --ip=0.0.0.0

会在终端中显示jupyter的浏览器地址:

 http://0.0.0.0:8888/?token=xxxxxxxx

然后在浏览器中输入 服务器 IP:8888 即可以进入jupyter notebook ,如果之前设置了jupyter 密码,则需要输入密码。比如此时虚拟主机分配的IP为52.152.152.10,则在浏览器中输入:

 http://52.152.152.10:8888/?token=xxxxxxxx

这样就可以进入jupyter了:
这里写图片描述

文档上传与下载

aws的虚拟主机采用scp进行文档上传与下载,对于windows系统,可以使用winscp这款软件:
这里写图片描述

下载安装后,打开,有:
这里写图片描述

即在主机名填入aws主机DNS域名,用户名为ubuntu(不同AMI用户名可能不同),再点击高级ssh验证,填入.ppk后缀的密钥,点击连接,即可连接;
需要注意:
aws生成的密钥文件为a.pem,需要使用putty将其转变为a.ppk形式的文件,转化过程可参阅aws文档: 使用 PuTTY 从 Windows 连接到 Linux 实例
首次用winscp链接远程主机会弹出安全性警告,点击“是/确定”即可;

连接成功:
这里写图片描述
左侧为本地文件夹,右侧为远程虚拟主机文件夹,拖拽文件即可完成上传下载操作。
至此,aws主机基本操作要求均已完全满足,可以使用它工作了。

PS: 创建私有的AMI

当使用竞价实例时,一旦停止实例,AMI中所有文件和记录都会被销毁,如果想要保存这个开发环境,下次再继续使用,可以将这个AMI环境保存下来:
这里写图片描述

点击“创建映像” 即可创建一个AMI映像,保存过程约3-5分钟左右,保存成功后,可以在左侧任务列表中的映像–AMI中找到,下一次开启远程虚拟主机时,可以直接选择此AMI。

这里写图片描述
aws提供了为期一年30G的免费存储空间,超过30G或者超过一年均会收费,因此,当项目完成时,请把不必要的AMI全部删除。

2019-02-27 10:43:49 qq_35503402 阅读数 296
  • WebGL 可视化3D绘图框架:Three.js 零基础上手实战

    相对于Flash,Flex,Silverlight等富客户端技术,WebGL之ThreeJS:通过OpenGL ES 2.0,WebGL可以为HTML5 Canvas提供硬件3D加速渲染,这样Web开发人员就可以借助系统显卡来在浏览器里更流畅地展示3D场景和模型了,还能创建复杂的导航和数据视觉化。这是未来的网游趋势,如果你想做可视化动画三维企业应用,又不想用复杂的C++程序,那么 Three.js 将会是你最好的选择。  本课程主要的功效就是让你学习完本教程后,能够写出在浏览器上流畅运行的3D程序,包括但不限于:大数据可视化,360度全景展示,3D游戏,完成这些事情,会比c++用更少的代码。而且更容易,更酷。 在本课程中,我们将由浅入深的讲解这些效果的实现,这能让你迅速提高开发技能,在职场中处于不败之地。课程共十三章,大大小小贯穿了近10个案例,只要你具备基础的HTML和JavaScript基础即可学习。

    884 人正在学习 去看看 童金浩

学生一枚,尝试一下用阿里云的GPU服务器跑深度学习。

基本过程参照这篇博客

https://blog.csdn.net/Lo_Bamboo/article/details/78601328

记录一下其中遇到的问题

1.创建完实例查看一下配置

查看显卡信息,驱动和cuda版本:nvidia-smi

2.下载Anaconda可以在本机下载后ftp传上去,虽然是清华的源,我下的时候还是卡了的,时间就是金钱啊。

3.创建自定义镜像是需要时间的,不要着急释放实例,确定镜像状态保存完后再释放,不然从头再来,别问我怎么知道的。。。

4.远程访问按照博客中所说的配置还是连不上,折腾半天发现网址应该是http://ip:端口,不是https,服务器端开启jupyter notebook时有提示网址的,没注意。

5.看你的服务器是否支持停机不收费,我的停机不释放的话是一小时0.01元,如果短期内还要使用就省的释放再创建了。

6.conda换源设置参考https://blog.csdn.net/dream_allday/article/details/80344511

 

2018-04-25 00:00:00 eo63y6pKI42Ilxr 阅读数 1107
  • WebGL 可视化3D绘图框架:Three.js 零基础上手实战

    相对于Flash,Flex,Silverlight等富客户端技术,WebGL之ThreeJS:通过OpenGL ES 2.0,WebGL可以为HTML5 Canvas提供硬件3D加速渲染,这样Web开发人员就可以借助系统显卡来在浏览器里更流畅地展示3D场景和模型了,还能创建复杂的导航和数据视觉化。这是未来的网游趋势,如果你想做可视化动画三维企业应用,又不想用复杂的C++程序,那么 Three.js 将会是你最好的选择。  本课程主要的功效就是让你学习完本教程后,能够写出在浏览器上流畅运行的3D程序,包括但不限于:大数据可视化,360度全景展示,3D游戏,完成这些事情,会比c++用更少的代码。而且更容易,更酷。 在本课程中,我们将由浅入深的讲解这些效果的实现,这能让你迅速提高开发技能,在职场中处于不败之地。课程共十三章,大大小小贯穿了近10个案例,只要你具备基础的HTML和JavaScript基础即可学习。

    884 人正在学习 去看看 童金浩

云栖君导读:本文根据实测数据,初步探讨了在弹性GPU云服务器上深度学习的性能模型,可帮助科学选择GPU实例的规格。


一、背景


得益于GPU强大的计算能力,深度学习近年来在图像处理、语音识别、自然语言处理等领域取得了重大突GPU服务器几乎成了深度学习加速的标配。


阿里云GPU云服务器在公有云上提供的弹性GPU服务,可以帮助用户快速用上GPU加速服务,并大大简化部署和运维的复杂度。如何提供一个合适的实例规格,从而以最高的性价比提供给深度学习客户,是我们需要考虑的一个问题,本文试图从CPU、内存、磁盘这三个角度对单机GPU云服务器的深度学习训练和预测的性能模型做了初步的分析,希望能对实例规格的选择提供一个科学的设计模型。


下面是我们使用主流的几个开源深度学习框架在NVIDIA GPU上做的一些深度学习的测试。涉及NVCaffe、MXNet主流深度学习框架,测试了多个经典CNN网络在图像分类领域的训练和推理以及RNN网络在自然语言处理领域的训练。


二、训练测试


我们使用NVCaffe、MXNet主流深度学习框架测试了图像分类领域和自然语言处理领域的训练模型。


2.1 图像分类


我们使用NVCaffe、MXNet测试了图像分类领域的CNN网络的单GPU模型训练。

NVCaffe和MXNet测试使用ImageNet ILSVRC2012数据集,训练图片1281167张,包含1000个分类,每个分类包含1000张左右的图片。

2.1.1 CPU+Memory


2.1.1.1 NVCaffe


NVCaffe是NVIDIA基于BVLC-Caffe针对NVIDIA GPU尤其是多GPU加速的开源深度学习框架。LMDB格式的ImageNet训练集大小为240GB ,验证集大小为9.4GB。


我们使用NVcaffe对AlexNet、GoogLeNet、ResNet50、Vgg16四种经典卷积神经网络做了图像分类任务的模型训练测试。分别对比了不同vCPU和Memory配置下的训练性能。性能数据单位是Images/Second(每秒处理的图像张数)。图中标注为10000指的是迭代次数10000次,其它都是测试迭代次数为1000次。


640?wx_fmt=png640?wx_fmt=png640?wx_fmt=png640?wx_fmt=png


2.1.1.2 MXNet


MXNet的数据集使用RecordIO格式,ImageNet训练集 93GB ,验证集 3.7GB。


我们使用网络Inception-v3(GoogLeNet的升级版)做了图像分类的训练测试。分别对比了不同vCPU和Memory配置下的训练性能。数据单位是Samples/Second(每秒处理的图像张数)。


640?wx_fmt=png


2.1.2 磁盘IO

我们在阿里云GN5(P100)实例上使用NVCaffe测试了GoogLeNet网络模型在NVMe SSD本地盘、SSD云盘和高效云盘上的训练性能,测试结果如下(性能数据单位是Images/Second):


640?wx_fmt=png


2.2 自然语言处理


我们使用MXNet测试了RNN网络的LSTM模型的训练,使用PennTreeBank自然语言数据集。PennTreeBank数据集的文本语料库包含近100万个单词,单词表被限定在10000个单词。分别对比了不同vCPU和Memory配置下的训练性能:


640?wx_fmt=png


三、推理测试


3.1 图像分类


我们使用NVCaffe测试了图像分类领域的CNN网络的模型推理。


测试使用ImageNet ILSVRC2012数据集,验证测试图片 50000张。


3.1.1 CPU+Memory


我们使用NVcaffe对AlexNet、GoogLeNet、ResNet50、VGG16四种经典卷积神经网络做了图像分类的推理测试。分别对比了不同vCPU和Memory配置下的训练性能。数据单位是Images/Second(每秒处理的图像张数)。


640?wx_fmt=png


3.1.2 磁盘IO


我们使用NVCaffe测试了GoogLeNet网络在NVMe SSD本地盘、SSD云盘和高效云盘上的图像分类推理性能,测试结果如下(数据单位是Images/Second):


640?wx_fmt=png


四、数据预处理测试


在训练模型之前,往往要对训练数据集做数据预处理,统一数据格式,并做一定的归一化处理。


我们使用NVCaffe对ImageNet ILSVRC2012数据集做了数据预处理的测试,分别对比了NVMe SSD本地盘、SSD云盘和高效云盘的数据预处理时间,数据单位是秒,数据如下:


640?wx_fmt=png


五、数据分析


5.1 训练


5.1.1 图像分类
  

从NVCaffe和MXNet的测试结果来看,图像分类场景单纯的训练阶段对CPU要求不高,单GPU 只需要4vCPU就可以。而内存需求则取决于深度学习框架、神经网络类型和训练数据集的大小:测试中发现NVCaffe随着迭代次数的增多,内存是不断增大的,但是内存需求增大到一定程度,对性能就不会有什么提升了,其中NVCaffe AlexNet网络的训练,相比其它网络对于内存的消耗要大得多。相比之下MXNet的内存占用则要小的多(这也是MXNet的一大优势),93G预处理过的训练数据集训练过程中内存占用不到5G。
对于磁盘IO性能,测试显示训练阶段NVMe SSD本地盘、SSD云盘性能基本接近,高效云盘上的性能略差1%。因此训练阶段对IO性能的要求不高。


5.1.2 自然语言处理
  

从MXNet的测试结果来看,对于PennTreeBank这样规模的数据集,2vCPU 1GB Mem就能满足训练需求。由于自然语言处理的原始数据不像图像分类一样是大量高清图片,自然语言处理的原始数据以文本文件为主,因此自然语言处理对内存和显存的要求都不高,从我们的测试来看,4vCPU 30GB 1GPU规格基本满足训练阶段需求。


5.2 推理


5.2.1 图像分类
  

从NVCaffe的图像分类推理测试来看,除AlexNet 2vCPU刚刚够用外,其它网络2vCPU对性能没有影响,而9.4GB的验证数据集推理过程中内存占用大概是7GB左右,因此对大部分模型来看,2vCPU 30GB 1GPU规格基本满足图像分类推理的性能需求。
  

对于磁盘IO性能,推理性能NVMe SSD本地盘、SSD云盘很接近,但高效云盘差15%。因此推理阶段至少应该使用SSD云盘保证性能。

5.2.2 自然语言处理
  

对于自然语言处理,参考训练性能需求,我们应该可以推测2vCPU 30GB 1GPU规格应该也能满足需求。


5.3 数据预处理
  

从NVCaffe对ImageNet ILSVRC2012数据集做数据预处理的测试来看,数据预处理阶段是IO密集型,NVMe SSD本地盘比SSD云盘快25%,而SSD云盘比高效云盘快10%。


六、总结
  

深度学习框架众多,神经网络类型也是种类繁多,我们选取了主流的框架和神经网络类型,尝试对单机GPU云服务器的深度学习性能模型做了初步的分析,结论是:


  1. 深度学习训练阶段是GPU运算密集型,对于CPU占用不大,而内存的需求取决于深度学习框架、神经网络类型和训练数据集的大小;对磁盘IO性能不敏感,云盘基本能够满足需求。

  2. 深度学习推理阶段对于CPU的占用更小,但是对于磁盘IO性能相对较敏感,因为推理阶段对于延迟有一定的要求,更高的磁盘IO性能对于降低数据读取的延时进而降低整体延迟有很大的帮助。

  3. 深度学习数据预处理阶段是IO密集型阶段,更高的磁盘IO性能能够大大缩短数据预处理的时间。


end


阿里巴巴千亿交易背后的0故障发布

阿里巴巴6大行业报告免费分享啦!

七本书籍带你打下机器学习和数据科学的数学基础

Logtail 从入门到精通:开启日志采集之旅

更多精彩

640?wx_fmt=jpeg

没有更多推荐了,返回首页