阅读726 返回首页    go 阿里云 go 技术社区[云栖]


Pluto-基于Caffe的GPU多机多卡深度学习算法产品


作者

阿里巴巴-计算平台-机器学习团队

Caffe的关系

  • 完全兼容CaffePluto基于开源库Caffe扩展而来,是Caffe的超集,完全兼容Caffe的配置和数据,使用过Caffe的同学几分钟就能用Pluto跑起多机多卡版程序。
  • Pluto的单机核心代码同开源社区版本保持同步,所以开源社区提供的一些新特性我们能够迅速mergePluto里面

新特性

我们来源于Caffe,但同时根据我们的用户需求我们提供了一些Pluto独有的新特性,帮助用户在模型训练中提高效率。

  • 多机多卡,通过并行计算提高计算和收敛速度。
  • 数据读取提供多lmdb支持。开源版本只能从一个lmdb读取训练数据,Pluto提供支持从多个lmdb按概率(可配置)读取数据,可以更好的支持用户训练数据的增量更新,不会因为训练数据增加而重新制作lmdb文件。
  • hdf5文件prefetch支持。因为hdf5文件读取时需要全部load进内存的特点,当以hdf5文件作为数据存储格式时数据读取时间同计算时间无法进行overlapPluto提供文件级的prefetch支持,通过独立线程在计算时preload下一份hdf5文件,缩短训练时间。
  • Sequential learning支持。Sequence learning对于语音识别和自然语言处理中存在时序关联的数据进行处理建模拥有天然的优势。Pluto中提供的Sequence learning的相关支持,包括常用的RNN/LSTM以及双向的LSTM,可以高效准确的进行自然场景图片描述(如Image Caption)和自然语言处理中的相关建模任务。
  • 多种同步模式支持。用户可以配置多卡间的同步轮数间隔,默认每轮同步一次;也可以配置按时间同步,即每张卡独立的迭代一段时间后同步一次,适用于资源竞争激烈或快慢机明显的环境。
  • Sparse 数据格式支持。支持sparse格式的训练数据。

性能分析

实验环境

  • GPU Device: Tesla K40m with 12GiB display memory, two cards in each box
  • Network: InfiniBand, GPU direct
  • cuDNNv2open

AlexnetImagenet数据集上的实验结果

梯度平均
在每轮计算都做一次梯度平均,可以获得同单机一模一样的收敛结果,即acc57.1%,计算和收敛加速比如下:

465acf1d261512a6363b38761bf672f93c9dd3ff

模型平均 每张卡各自计算若干轮后做一次模型平均,会 影响收敛结果 ,但是可以 提高计算加速比 ,结果如下:

76b616edd0f6280e79abcb88ce31a931a76a6c07

收敛曲线 

pluto_acc
pluto_loss

GooglenetImagenet数据集上的实验结果:

模型平均

9d310bf062eb392e0543d68ae2c9efac9a434b01

收敛曲线

gnet_acc
gnet_loss


如何使用

 

最后更新:2017-08-15 15:32:18

  上一篇:go  世平敏感信息安全检查系统云端版登陆阿里云市场
  下一篇:go  云服务器 ECS 实例自定义数据:自定义 yum 源、NTP 服务和 DNS 服务