APP下载

LinkedIn开源TonY,让Hadoop原生支援TensorFlow

消息来源:baojiabao.com 作者: 发布时间:2024-05-18

报价宝综合消息LinkedIn开源TonY,让Hadoop原生支援TensorFlow

LinkedIn开源TonY专案,让使用者可在单节点或是大型Hadoop丛集上,基于YARN建置TensorFlow应用的解决方案,TonY其运作方式就像是在Hadoop中的MapReduce,执行Pig和Hive脚本的方式类似,提供TensorFlow任务第一层级的支援。TonY由三个主要元件组成,分别是客户端、ApplicationMaster以及TaskExecutor,主要提供四大特色GPU调度、精度资源请求、TensorBoard支援以及容错。

LinkedIn平台会员接近6亿人,随着深度学习技术的发展,LinkedIn的人工智能工程师,努力在众多像是摘要或是回复等功能中应用人工智能,而其中有许多使用案例,皆使用Google开发的深度学习框架TensorFlow建置。一开始LinkedIn内部TensorFlow用户都只在小型和非托管的裸机上执行应用,但随着发展,他们逐渐意识到必须要让TensorFlow连结并使用Hadoop大资料平台上的运算以及储存资源。LinkedIn的Hadoop丛集拥有数百PB的资料,很适合用于开发深度学习应用。

虽然TensorFlow支援分散式训练,但要编排TensorFlow必非一件简单的事,LinkedIn调查了市面上现存的解决方方案,但终究没能符合需求。有一个Apache Spark运算引擎TensorFlow的开源解决方案,能够在框架上执行一些LinkedIn内部深度学习应用程序,但其缺乏GPU调度和异构容器调度是最后不被采用的致命伤。而另一个TensorFlowOnYARN独立函式库则较接近LinkedIn的需求,但是其容错以及可用性较差,且该专案已经停止维护更新。

基于这些原因,LinkedIn只好开始动手开发自家基于Hadoop YARN的TensorFlow解决方案TonY,以便可以完全控制Hadoop丛集资源,TonY直接在YARN上运作,并以轻量相依执行,因此除了可以在YARN中使用堆叠较低阶的部分,也能使用TensorFlow中堆叠高阶的部分。

LinkedIn提到,TonY运作TensorFlow的方法,类似在Hadoop中MapReduce引擎执行Pig与Hive脚本,或是在Spark中以API执行Scala程式码,TonY透过处理资源沟通或是容器环境设定等任务,支援TensorFlow的工作。TonY主要有3个元件,客户端、ApplicationMaster和TaskExecutor。使用者向客户端提交TensorFlow模型训练程式码、参数以及Python虚拟环境,并由客户端设定ApplicationMaster将其交付给YARN丛集,ApplicationMaster会根据用户的资源要求,与YARN的资源管理器进行资源协商,当ApplicationMaster收到确定的资源分配,便会在分配的节点上创建TaskExecutors,由TaskExecutors启动用户的训练程式码并等待工作完成。

TonY除了可以完成基本在Hadoop上执行分散式TensorFlow的工作外,也实作了用来支援大规模训练的功能。TonY支援GPU调度,能够利用Hadoop的API向丛集请求GPU资源。另外,还支援高精度的资源请求,由于TonY能请求不同的实体作为单独的元件,因此用户可以针对每种实体类型请求不同的资源,也就是说,用户可以良好的控制应用程序使用的资源,同时也有助于丛集管理员避免浪费硬件资源。

TonY现在可以将应用程序追踪的URL重新导向TensorBoard上,让使用者方便透过TensorBoard理解、调校和最佳化TensorFlow应用程序。而TonY重要的特色之一便是容错,可以让深度学习训练更可靠。即便使用大量的机器,TensorFlow训练仍可能需要数小时甚至数天,但长时间运作的TensorFlow任务比短期的任务,更容易受到暂时性错误或抢占的问题影响。TensorFlow拥有容错API,可以将检查点储存成HDFS,还能从先前保存的检查点恢复继续训练。TonY则透过提供弹性分散式基础架构,来从节点故障中恢复,因此当Worker错误、或是ApplicationMaster失去回应等情况,TonY将会重新启动应用程序,并恢复到之前的检查点。

现在LinkedIn在GitHub上开源他们在Hadoop和TensorFlow上的努力,让其他使用者也能方便的建置分散式机器学习应用。

2018-09-14 18:31:00

相关文章