最近,一直在自学深度学习。一边学习理论,一遍学习编程。在做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 |
用完之后,要记得点击“释放”,这样集群就自动删除了,然后百度会根据的用的时间进行计费。
不好的事,集群释放之后,你计算的结果,上传的数据就跟着消失了(BOS中的数据不会消失)。等下一次你要算的时候,就要从头开始,不过每次创建的时间也不会太长,估计在3分钟左右,也可以接受。