Arimo利用Alluxio的内存能力提升深度学习模型的结果效率(Time-to-Result)

深度学习算法通常被一些具体应用所采用,其中比较显著的应用领域包括计算机视觉、机器翻译、文本挖掘、欺诈检测等。深度学习的方法在大模型加大数据的场景下效果显著。与此同时,被设计用来处理大数据的分布式计算平台(如Spark)也日益应用广泛。因此,通过在Spark平台上开发深度学习计算框架,深度学习的应用领域可以变得更加广泛,企业完全可以在已有的Spark基础设施上使用深度学习。

1.利用Alluxio协处理器进行基于Spark的分布式深度学习

在2015 Strata + Hadoop World NYC上,我们发布了有史以来第一个可扩展的、基于Spark和Alluxio的分布式深度学习框架,我们把它称为Alluxio协处理器(Co-Processor on Alluxio(“Co-Proccessor”))。它包含了前馈神经网络,卷积神经网络(CNN)以及循环神经网络(RNN)的实现。协处理器为Alluxio增加了一定的计算功能。具体来说,其运行一个本地进程监控衍生的目录并且收集它们。该设计思路是不仅将Alluxio用作Spark的workers之间的常用存储层,还将其用作一个模型更新者以支持大模型的训练。通过Alluxio的分布式内存执行模型,该协处理器框架为单机无法处理的巨大模型提供了一种可扩展的处理方式。


图1. Alluxio架构上的协处理器

进程A(计算梯度):Spark的workers计算梯度,处理数据的并行划分
进程B(更新参数):Alluxio执行(梯度)下降操作,更新主模型

每个Spark的worker都只处理一批训练数据中的一部分,计算梯度,并发送回协处理器上的参数服务器。参数服务器不仅仅收集梯度信息,同时会作为一个协处理器执行(梯度)下降操作,然后更新存储在Alluxio上的模型(进程B)。值得注意的是,进程A和B基本上是异步发生的。
这样的设计让我们避免了:

  • 将聚合梯度发送回Spark的workers
  • 将更新过的模型发送给wokers,因为Spark workers现在能够直接访问Alluxio上的更新过的模型了。

    这种方案的结果是,通过减少Spark workers和参数服务器的通信开销,能够将模型训练过程显著地加速60%。

2.持续开发

火热的开源深度学习框架如Tensorflow自身具有一套分布式模型训练体系架构,通常使用一个GPU集群来对训练数据的不同部分同时计算梯度。然而,这些训练框架对大规模数据集做ETL的能力还非常有限。
一个方法是使用Spark预处理数据为Tensorflow服务器所用。然而,这样做的缺点是会导致很低的生产率。
问题1:训练数据生成过程中的瓶颈
在Arimo,我们每天都跟大规模时间序列数据打交道。大规模数据和复杂的学习问题通常涉及密集的、耗时的ETL处理,而时间序列数据又尤其富于挑战性。这种类型数据的建模要求:(1)随着时间生成大量的子序列和它们关联的标签 (2)将子序列重塑为多维张量。
现有的做法是运行一个长时间的Spark批处理作业将原始数据完全转化为合适的、可进行深度学习训练的形式。一个长时间的批处理作业对我们的流水线式的生产并不是最优的,因为我们需要等到所有数据划分在被发送去训练之前都处理完毕。一个更加理想的模式是立即将已经完整的数据分区流传输到训练阶段。
问题2:训练数据迁移过程中的瓶颈
为了将训练数据在Spark和Tensorflow之间移动,我们通常需要将整个处理后的数据集合持久化到HDFS或者其他分布式文件系统中。这就不可避免地在写数据和读数据中制造了两次磁盘IO瓶颈。以时间序列建模来说,这个问题在训练数据达原始数据的数十倍之大时是极其严重的。
问题3:训练数据过程中的巨大浪费
一个有趣且重要的现象是,我们实际上不需要一次性拿到100%的训练数据才能训练出更好的模型。这意味着首先生成整个训练数据然后再进行批处理的方法极为浪费。这个想法促使我们放弃批处理方法,转而采用一种更加高效的流式方法。

3.解决方案:采用协处理器并发生成小批次训练数据流并从Spark向Tensorflow进行传递

通过避免磁盘IO和利用以内存为中心的共享文件系统Alluxio的优势,我们可以将数据从Spark向Tensorflow服务器之间更快地移动。让我们看下图:

1.利用协同处理,子序列和标签的准备在数据帧创建后可以马上开始进行。所以当我们执行其它无关操作的时候,这部分训练数据就已经悄悄地被准备好并按序排好,等待后续模型训练的使用。
2.Alluxio的内存级速度存储缓解了我们将训练数据持久化到HDFS的需要,从而减少了磁盘IO。
这个方法性能高、优雅且非常有效。浪费得到了最小化,甚至通过协处理器可以得到消除。我们在后台悄悄地生成批数据,然后训练模型不断消耗已经排序好的批次数据,直到模型效果令人满意为止。在数据生成和导入(feed)阶段之间,数据总是排好序并且被缓冲的。计算密集型的数据准备阶段只有当模型训练停止的时候才会停止。
流线型和无浪费,这种基于Alluxio的方法就是我们所认为的大规模数据准备和模型训练的“丰田标准”。

4.总结

深度学习模型在当模型很大和在大规模数据集上训练时表现良好。为了加速模型的训练过程,我们已经实现了在Spark和Tensorflow之间作为常用存储层的Alluxio。
我们利用协处理器的内存级存储速度和协处理能力来避免磁盘IO瓶颈,并且为训练数据预处理和整体模型更新实现了并发。初始结果表明,这种方法能够将模型训练过程加速最多60%。
我们期待着将Alluxio用于其它的用例以及产品集成。

时间: 2024-08-31 02:39:00

Arimo利用Alluxio的内存能力提升深度学习模型的结果效率(Time-to-Result)的相关文章

以电影影评为例,利用Neo4j对电影评论进行深度学习的情感分析

[编者按]随着互联网的发展,用户从以前的"读"网页转变为"写"网页,互联网上产生了大量的用户参与的,对于诸如人物.事件.产品等有价值的评论信息,而随着网络上评论信息爆炸式的增长,以人工的方法很难应付海量评论信息的收集和处理,情感分析技术随之产生,本文以电影影评为例,利用Neo4j对电影评论进行深度学习的情感分析. 一个电影评论网站允许用户提交关于他们针对某部电影是喜欢还是不喜欢相关信息的评论.充分挖掘这些评论继而生成有价值的元数据(针对相关内容的)将给我们提供一个难

数据不够怎么训练深度学习模型?不妨试试迁移学习

深度学习大牛吴恩达曾经说过:做AI研究就像造宇宙飞船,除了充足的燃料之外,强劲的引擎也是必不可少的.假如燃料不足,则飞船就无法进入预定轨道.而引擎不够强劲,飞船甚至不能升空.类比于AI,深度学习模型就好像引擎,海量的训练数据就好像燃料,这两者对于AI而言同样缺一不可. 随着深度学习技术在机器翻译.策略游戏和自动驾驶等领域的广泛应用和流行,阻碍该技术进一步推广的一个普遍性难题也日渐凸显:训练模型所必须的海量数据难以获取. 以下是一些当前比较流行的机器学习模型和其所需的数据量,可以看到,随着模型复杂

数据不够怎么训练深度学习模型?不妨试试迁移学习

深度学习大牛吴恩达曾经说过:做AI研究就像造宇宙飞船,除了充足的燃料之外,强劲的引擎也是必不可少的.假如燃料不足,则飞船就无法进入预定轨道.而引擎不够强劲,飞船甚至不能升空.类比于AI,深度学习模型就好像引擎,海量的训练数据就好像燃料,这两者对于AI而言同样缺一不可. 随着深度学习技术在机器翻译.策略游戏和自动驾驶等领域的广泛应用和流行,阻碍该技术进一步推广的一个普遍性难题也日渐凸显:训练模型所必须的海量数据难以获取. 以下是一些当前比较流行的机器学习模型和其所需的数据量,可以看到,随着模型复杂

忽悠神经网络指南:教你如何把深度学习模型骗得七荤八素

知己知彼,无论你是想成为黑客(最好不要!)或防范未来黑客的入侵,都有必要来了解一下如何骗过由海量数据训练出来的深度学习模型. 只要有程序员还在编程,黑客们就会不遗余力地找寻利用这些程序的方法.恶意黑客更是会利用程序中最为微小的漏洞来侵入系统,窃取数据,对系统造成严重破坏. 但由深度学习算法驱动的系统应该是能够避免人为干扰的,对吧? 一个黑客怎么能够突破被TB(兆兆字节)级数据训练的神经网络呢? 然而事实证明,即使是最先进的深层神经网络也是很容易被欺骗的.只需要使用一些小技巧,你就可以迫使模型预测

独家 | 教你在R中使用Keras和TensorFlow构建深度学习模型

引言: 在R和Python之间如何进行选择一直是一个热议的话题.机器学习世界也被不同语言偏好所划分.但是随着深度学习的盛行,天平逐渐向Python倾斜,因为截至目前为止Python具有大量R所没有的深度学习的资源库和框架. 我个人从R转到Python是因为我想更加深入机器学习的领域,而仅仅使用R的话,这(在之前)是几乎不可能实现的事情.不过也仅此而已! 随着Keras在R中的实现,语言选择的斗争又重新回到舞台中央.Python几乎已经慢慢变成深度学习建模的默认语言,但是随着在R中以TensorF

数据有限时怎样调优深度学习模型

迁移学习 所谓迁移学习,就是将一个问题上训练好的模型通过简单的调整,使其适用一个新的问题,可以认为是一种模型调优的"取巧"方法.可以类比人的举一反三能力. 迁移学习的特点 1. 需求数据量少 假设有两个领域,一个领域已经有很多的数据,能成功地建一个模型,有一个领域数据不多,但是和前面那个领域是关联的,就可以把那个模型给迁移过来.比如,我们想做一个化妆品推荐模型,但数据量较少,可以先用一个成型的较为稳定的饰品推荐模型进行调优.跨领域的在学术界也有尝试哦,比如网络搜索可以迁移到推荐,图象识

CVPR2017精彩论文解读:直接处理三维点云的深度学习模型

雷锋网(公众号:雷锋网) AI 科技评论按:虽然CVPR 2017已经落下帷幕,但对精彩论文的解读还在继续.下文是Momenta高级研究员陈亮对此次大会收录的 PointNet:Deep Learning on Point Sets for 3D Classification and Segmentation  一文进行的解读. 随着激光雷达,RGBD相机等3D传感器在机器人,无人驾驶领域的广泛应用.针对三维点云数据的研究也逐渐从低层次几何特征提取( PFH, FPFH,VFH等)向高层次语义理

深度学习性能提升的诀窍

你是如何提升深度学习模型的效果? 这是我经常被问到的一个问题.有时候也会换一种问法:我该如何提高模型的准确率呢? --或者反过来问:如果我的网络模型效果不好,我该怎么办?通常我的回答是"具体原因我不清楚,但我有一些想法可以试试".然后我会列举一些我认为能够提升性能的方法.为了避免重复罗列这些内容,我打算在本文中把它们都写出来. 这些想法不仅可以用于深度学习,事实上可以用在任何机器学习的算法上.那么如何提升深度学习的性能? 提升算法性能的想法 这个列表并不完整,却是很好的出发点.我的目的

深度 | 做到这些值4亿美元:看 Nervana 如何利用深度学习实现数据革命

2016 年 8 月,英特尔为了加强其人工智能领域的能力,以 4 亿美元的天价收购了机器学习初创公司 Nervana .该初创公司成立仅仅两年,却被公认为是机器学习技术开发的领导者.近日,Nervana 的联合创始人兼首席执行官 Naveen Rao 博士在 StrataHadoop 上和大家深入探讨了深度学习的话题,通过其PPT,我们也能了解Nervana价值所在. Naveen 探索了许多方面,包括深度学习相对于其他机器学习技术的好处.该领域的最新进展.深入学习工作流程.开发和部署深度学习解