技术开发 频道

新手扫盲必读:深度学习平台发展及应用

  【IT168 技术】2006年,Hinton等人第一次提出了“深度学习”的概念,发展至今,深度学习已经是当今科技圈最火最潮的词。但是,很多人知其然而不知其所以然,华为大数据算法专家涂丹丹在创客168的第七期活动中结合她的工作经历,和我们分享她对深度学习的独到见解。

新手扫盲必读:深度学习平台发展及应用
华为大数据算法专家 涂丹丹

  深度学习发展至今已经在一些方面取得了比较亮眼的成绩,尤其是在年初的时候AlphaGo击败了韩国围棋选手李世石,深度学习更是引起了人们的广泛关注。但是,深度学习现在也面临着很多挑战。首先就是海量数据,深度学习的模型比较复杂,所以模型训练常常需要TB级甚至是PB级的数据。其次是海量的参数,Facebook发明的一个网络参数能够达到百亿维。最后是海量数据带来的海量计算,在比较复杂的模型中能够达到Billion浮点计算规模,模型收敛需要万轮以上迭代训练。

  商用深度学习平台

  1.DistBelief

  DistBelief是2011年谷歌推出的一个人工深度学习平台,也是业界第一个分布式学习的平台。提到DisBelief我们会自然的联想到学习猫,学习猫的底层计算是基于DistBelief平台,当时用他们用了两千个节点(1,6000个CPU)1周内完成10亿参数的DNN算法训练,能够分析出当前图片是不是猫。

  DisBelief是基于 CPU集群实现的数据并行和模型并行框架,模型并行主要是在节点内通过多线程实现加速的,节点间通过消息传递实现分布式数据并行加速。另外,DisBelief开源了两个深度学习模型训练的算法,分别是SGD和BFGS。目前主要应用在视觉识别和语音识别两个领域。

  2.COTS

  COTS采用HPC架构,基于多GPU实现数据并行和模型并行对CNN算法的加速,多GPU服务器间采用Infiniband连接和MPI通信,用16台GPU服务器在3天内完成110亿参数的CNN算法训练,用3台NVIDIA GTX680 GPU服务器在17h内完成对10亿参数图像训练。目前主要应用于人脸识别。

  3.Adam

  Adam是微软发布的一款分布式深度学习平台,主要针对DistBelief做了一些改进,在ImageNet data set数据库上ADAM的错误率为4.96%,超越了人类平均错误率5.1%。抓取1400万张图片训练一个由20亿个连接组成的神经网络,比Google DistBelief少用了30倍的设备。识别物体时比Google DistBelief系统准确率高2倍,速度快50倍。

  Adam基于Multi-Spert架构,将集群分为数据服务类服务器、训练模型类服务器和参数服务器三部分。数据服务类服务器主要是存储和备份数据以及向计算节点提供数据。训练模型类服务器主要是训练模型,更新参数。单机上模型多线程训练,多线程共享一个模型参数,共享的模型参数局部更新不加锁以加快参数更新。参数服务器支持PS直接更新和全连接层更新。

  在服务器数据并行方面,Adam提供了很多的优化的方法,例如对模型的垂直切分节省通讯开销,对卷积层和全连接层采用不同的模型参数更新方案,减少参数更新通信开销。

  开源深度学习平台

  1.开源MXNet学习平台

  MXNet是基于PS的架构的深度学习平台,与之前平台不同的是它支持符号编程和命令式编程的混合编程模式,支持数据流图的动态依赖调度,底层的数据结构基于NDarray。

  MXNet有一个很重要的组件Dependency,主要用来绘制数据流图用的,支持符号逻辑,对并行计算和内存也做了相关的优化。另外提供了KVstore实现多设备以及多机间的数据交互,提供分布式的key-value存储来进行数据交换。移植性较好,模型训练完成之后可以移植到手机端使用。

  我们应用MXNet支持华为终端的图库分类,例如平安城市的一些物体识别、物体的跟踪等等。MXNet平台本身是非常好的,架构比较灵活,接口定义非常清晰,各个模块之间是耦合的,能够灵活的组合。唯一不足的是只支持数据并行、不支持模型并行,目前我们内部针对模型和数据的混合并行在做很多工作。

  2.Tensorflow

  Tensorflow是谷歌在2015年年底开源的一个平台。之所以命名为Tensorflow,是因为它把所有的计算和状态更新都抽象成了dataflow graph,dataflow graph中结点和结点之间流动的数据以Tensor形式组织。

  Tensorflow白皮书显示它支持数据并行和模型并行,也支持同步和异步的参数更新,但是从开源代码来看,它主要支持数据并行,数据并行和模型并行都是基于数据流图。client端用户去发起,通过session创建计算流图,master会把计算流图做切分和调度,切割好的图是在各个GPU和CPU上执行,数据之间的通讯采用的是谷歌GRPC的通讯通道,支持RDMA和TCP的通信。

  目前华为主要应用它来做翻译,华为在全球有很多机构,我们的同事也是遍布全球各个地方,很多材料总部都是用中文写的,所以我们经常要翻译成各种语言给大家用,现在主要是用Tensorflow来支撑。另外我们在上面也添加了一些语音识别的应用和算法供华为终端来用。

  目前Tensorflow系统还不成熟,内存和调度还不完善,CNN算法时间和内存消耗都需要优化。

  3.Petuum

  Petuum平台出现的比较早,主要应用在广告推荐领域。随着Petuum的发展,去年整个Petuum分成了两个部分,一个是数据并行的平台Bosen,主要支撑很多CNN算法的训练,对上提供数据并行的API。另外一个平台Strads,支持模型并行,通过Scheduler对模型做动态的切分。

  Bosen中的server和worker都是逻辑节点,通过表对参数做存储,NameNode节点使用NameNode thread管理所有thread,Server和worker之间参数传递采用MPI通讯。

  Strads组件支持依赖参数的动态切分,Scheduler动态对模型参数向量进行切分。

  深度学习应用

  深度学习平台和算法目前主要在两个领域有突出贡献,一个是云,一个是图像视频的领域。其他领域虽然没有取得突出性贡献但是也取得了一些进展,比如情感分析,主题分类,知识问答,语言翻译等等场景。

  如何确定一个场景是采用传统的机器学习方法还是深度学习方法呢?华为实验室主任李航老师提出了自己的见解,他认为一些线性的或者是简单的非线性的问题,可以通过机器学习求解,对于那种复杂的非线性的问题适合用深度学习的算法去求解的。

  在ICML2015研讨会上,深度学习三大巨头预测了利用RNNs能够更好的理解句子或文档,RNN是解决顺序决策的良药,未来深度学习在自然云处理、信息决策和“非认知”型任务方面会有很大的发展前途。

  深度学习用于预测出租车目的地

  2015年的ECML PKDD Kaggle出租车竞赛中MILA大学Yoshua Bengio的学生用MLP算法获得冠军。

  深度学习在推荐上的应用

  深度学习在推荐上的应用比较突出,spotify也一直用它来做音乐的推荐。RNN模型对序列数据的刻画是比较好的,可以基于RNN模型预测下个时段播出的歌曲。另外歌曲推荐中经常会出现冷启动的问题,新发布的歌曲往往还没有很多人听过,这时我们采用了WMF+CNN的方法来实现新歌的推荐。

  文本间的情绪识别

  Standford NLP Group是一个专门研究这一领域的团队,他们用深度学习方法来做文本的情绪或者情感的分析,他们传统的方法主要是用“词袋”模型,将词袋的词标成正面和负面的方式做的,这个方法的局限是看不到矩阵里词序间的关系的。但是采用RNN的方法能够把词序间的关系刻画出来,之后再做情感分析的准确率会提高很多。

  拥挤现场洞察

  拥挤现场洞察的场景不仅是我们很关心,公安部门也很关心。大家都知道之前上海的踩踏事件,如果公安能通过图像的信息,把人群聚集的场地、人数统计出来,就能够提前做预警。

  传统的方法常常采用回归方法,模型具有场景的适用性。基于深度学习的方法,可以跨场景分析,在不同的光线条件、人群分布、透视角度的情况下解决实际问题,而且需要的数据量也比较少。

  IT168创客沙龙(创客168)是盛拓传媒集团旗下的创业孵化器,关注创业者如何在高层次技术的支持下开启创业之路,与创客们一起迈过Start-up所面对的技术“这道坎”。尤其希望扶植IT从业者、工程师、产品经理、技术开发者参与的创业项目。秉承“创业成就未来 技术奠定基石”的理念,为有想法的你提供贴心、走心的创业服务。

 新手扫盲必读:深度学习平台发展及应用

  创客168第八期活动邀请了阿里巴巴,饿了么等知名企业的大数据专家,围绕大数据与推荐算法和大家进行深度分享,感兴趣的小伙伴请猛戳上图。

0
相关文章