A-A+

召集全国地域分布式ROS云端化+DL深度学习控制摄像头拍摄月球相片

2016年06月30日 Other, ROS 暂无评论 阅读 2,171 次

 

召集全国地域分布式ROS(robot operating system)云端化+DL深度学习控制摄像头拍摄月球相片,合成生成伽利略环形山高清3D图,分享调试实现过程。

u=3077140765,2271032367&fm=21&gp=0

QQ讨论群:ExBot ROS专区 426334501

发起人:资深机器人创客、空间量子计算机发明人 何老师

(备选的其它玩法:1以ROS机器人加摄像头和激光,射向月球面的角反射器-“上世纪60-70年代的太空争霸中,美国土星5运载火箭登上太空,并在那里留下了许多仪器。其中有一个使用折角反射器原理的仪器至今还在运行哦!”目的是为了精确测量月球与地球间的距离,两秒钟后能收到月球回来的激光的,就说明-ROS控制的摄像头和激光发射器ARM手臂调试直了,这个游戏可以大家在不同的地方联调-记得ROS是分布式运行的;2众多的小伙伴,以摄像头辅助视觉的激光瞄准月球或太空的特定的点,点燃哪里放置的火柴或火炬-阿基米德玩镜子抗敌的传说-将来有太空人来侵略地球,我们就这样烧它)。

 

涉及机器人 天文学 机器学习 协同,还可以让小伙伴一起玩耍o(^o^)o

 

云计算啊雾计算,,使用云端系统,省时省费,如同GHOST装系统一样,软件包如下:

KAIXHIN深度学习DOCKER-IMG包

- [Brainstorm](https://github.com/IDSIA/brainstorm)

- [Caffe](https://github.com/BVLC/caffe)

- [DIGITS](https://github.com/NVIDIA/DIGITS)

- [FGLab/FGMachine](https://kaixhin.github.io/FGLab)

- [Keras](https://github.com/fchollet/keras)

- [Lasagne](https://github.com/Lasagne/Lasagne)

- [MXNet](https://github.com/dmlc/mxnet)

- [neon](https://github.com/NervanaSystems/neon)

- [Pylearn2](https://github.com/lisa-lab/pylearn2)

- [Theano](https://github.com/Theano/Theano)

- [Torch](https://github.com/torch/distro)

 

我们计划宣传运作到AlphaGo样,帮助更多的人了解ROS和深度学习。

 

 

要什么设备?什么软件?什么时候?

有ROS机器带运动控制,有摄像头或接普通40倍光学天文望远镜的qq摄像头,有pc机可以运行DL虚拟机。

欢迎加ROS专区群或跟帖讨论!项目启动后,我们会在exbot.net开个栏目分享。

大家可以先运行谷歌星空,微软星空,熟悉下自己的经纬度。

谷歌星空 Google Sky Map 是谷歌推出的一款星空观测应用软件。它如同一个微型的天文望远镜,带您仰望星空,探寻宇宙的奥妙。谷歌星空可查看各种天体,包括星体、星座、星系、行星和月球,允许用户自由设定显示哪些天体。

微软世界望远镜 WorldWide Telescope是微软太空望远镜软件。用户可以观看夜空,也可以将任何地域的数据放大。

与谷歌推出的谷歌天空(Google Sky)相比,微软世界望远镜(微软太空望远镜)性能更好。最主要的是其用户界面,围绕天空的缩放,实现了无缝操作。在WorldWide Telescope项目中,微软将使用目前绝大部分的照片技术.

微软世界望远镜是一个使电脑能够具有虚拟望远镜功能的Web 2.0的可视化软件系统。这种设想是以望远镜原理和相关电脑软件的结合研发而成的,通过这种方式,“世界望远镜”可以无缝隙、不间断地探索宇宙空间。它的使用方式很简单,用户首先要登录worldwidetelescope.org网站,下载与微软视窗操作系统兼容的免费应用软件。通过这个软件,用户可以选择不同的望远镜,使用不同的波长展开太空观测,只要将鼠标移至网络上的星座图标,望远镜便会将这一星体附近所有物体“装载”,在电脑屏幕下方显现出来。全球望远镜包含了来自哈勃太空望远镜(Hubble Space Telescope)、ChandraX射线天文观测站(Chandra X-Ray Observatory Center)以及斯皮策太空望远镜(Spitzer Space Telescope)等天文望远镜的图像,有12万亿字节大小,相当于26亿页的文字。使用全球望远镜的体验就像是在看电影一样,用户能自由观看几千光年之外的银河景象,遥远星系和太空颗粒,如果你的生命足够长的话,甚至可能目睹一颗恒星从形成到演变为超新星的生命历程。英国伦敦大学学院物理学和天文学系的弗朗西斯科·迪亚戈博士表示,称该项目是一个“有想象力、强大而独特的工具,为人们利用身边的电脑探索广袤而神奇的宇宙打开了一扇新的窗口”。

补充材料:平方公里射电阵

 

 

平方公里射电阵(Square Kilometre Array,缩写为SKA)是一个巨型射电望远镜阵列,由数千个较小的碟形天线构成,将负责解答一系列科学疑问,其中包括行星如何形成,引力波如何拉伸宇宙的结构以及首批形成的星系如何演化。平方公里射电阵计划始于1993年,项目预计于2024年前后完工,但真正投入使用还要等到2030年底。2012年10月,澳大利亚平方公里阵列射电望远镜(ASKAP)前期项目建设完成并于5日在西澳大利亚州默奇森地区正式启用。

平方公里射电阵计划始于1993年。在国际无线电科联在日本京都举行的大会上,10个国家的天文学家联合提议建造这个巨型射电望远镜阵列。

蝶形天线

平方公里这个名字就是为了突出其所覆盖面积之大。SKA并不是一个直径达到1公里的射电碟形天线,而是由数千个较小的碟形天线构成。国际SKA项目负责人理查德·斯基利齐表示:“碟形天线将采用椭圆形设计,直径大约在15米左右,由于造价必须低廉加之所需数量多达3000,它们的构造较为简单。” [2]

迄今为止,来自20个国家的参与者已经投入15亿欧元(约合20亿美元)。这一项目预计于2024年前后完工,但真正投入使用还要等到2030年底。

建造原因

之所以建造一个如此巨大的阵列的原因在于:无线电波的波长远远超过可见光。一架光学望远镜的观测波长可达到10毫米,将其“放大”到射电天文学研究需要的厘米波长遭遇挑战。e-Merlin望远镜阵列——坐落于英国曼彻斯的乔德莱尔·班克射电天文台——负责人西蒙·加林顿指出:“为了获得与先进光学望远镜同样的观测细节,你需要镜面直径100公里的望远镜。很显然,你不可能建造一架口径100公里的望远镜,但你可以建造一个望远镜网络,通过将它们连接在一起达到同样的效果。”[2]

SKA的灵敏度将达到目前地球上任何射电望远镜阵列的50倍,解析度则将是后者的100倍。

选址之争

SKA阵列建造地点的争夺异常激烈,初期选址有澳大利亚、南非、中国、阿根廷四个国家参加了角逐。2006年9月,中国和阿根廷的方案分别由于地理条件以及电离层不稳定而遭到否决。

澳大利亚和南非因良好的无线电环境成为最后的候选者。澳大利亚的候选台址位于其西部,距离米卡萨拉(Meekatharra)大约100公里,南非候选站址位于北开普省的卡鲁盆地,距离卡那封(Carnarvon)大约95公里,部分天线将位于博茨瓦纳、纳米比亚、莫桑比克、马达加斯加、毛里求斯、肯尼亚、加纳等周边国家。SKA项目南非负责人伯尼·法纳罗夫表示:“最为重要的是找到一个受无线电传输干扰极小的地区。如果建造地附近存在任何强广播信号,那就像是在太阳升起时观察天空中的星星一样。你不希望被手机信号覆盖,也不希望周围有很多人和汽车存在。我们在进行最初的测试中发现,就算是坐到一个塑料椅上这样微不足道的事情也会产生干扰。”

在完成的阵列中,大约有50%的碟形天线位于中部5公里范围内,25%位于向外200公里范围内,最后的25%则位于最外部3000公里范围内。根据南非的提议,碟形天线将建在纳米比亚、博茨瓦纳、莫桑比克、马达加斯加、赞比亚、毛里求斯、肯尼亚和加纳。根据澳大利亚的提议,这个阵列将最远延伸至新西兰。竞标负责人布莱恩·博伊勒表示:“澳大利亚建议的核心地点默奇森射电天文台座落于地球上一个人口最为稀少的地区。选择澳大利亚和新西兰可以让望远镜阵列覆盖5500公里的区域。”[2]

光缆长度

SKA阵列的天线包括传统曲面碟形天线,能够将无线电波聚集,其他天线则为平板式天线。这个阵列将以一个相控天线阵的形式投入工作,由于采用先进的电子设备,将时间间隔以及到达阵列不同区域的相同无线电信号等因素考虑在内,SKA阵列无需移动便可立即定向。

SKA项目筹备阶段英国负责人、乔德莱尔·班克天文台的克里斯·申顿表示,这允许望远镜一次观测不同方向。“我们可以按照自己的需要观测很多方向的无线电波,这是一种优势,可以同时进行多项实验。例如,可以对一个无线电波进行研究,同时对另一个进行非常详细的观测。”[2]

这些天文设备每次不只能观察一片天空

然而,构建这样一个网络绝非易事。信号同步精度必须达到十亿分之一秒,所需光缆数量也是一个惊人数字,连接在一起的长度可绕地球两周。完成连接工作之后,电脑还要对每一对碟形天线进行比较。每架望远镜一秒钟可产生大约20GB数据,足以在短短几分钟内装满存储量最大的电脑硬盘。斯基利齐说:“我们需要拥有巨大的数据处理能力,根据我们的估计,只有世界上最强大的超级计算机才能胜任这项工作。”

项目责任

SKA阵列将负责解答一系列科学疑问,其中包括行星如何形成,引力波如何拉伸宇宙的结构以及首批形成的星系如何演化。牛津大学的史蒂夫·劳林斯希望SKA阵列能够揭开暗能量的谜团。他说:“平方公里阵列就像是一台时间机器。如果能够看的更远,你所观察到的宇宙就更为年轻,进而了解宇宙膨胀过程。暗能量似乎加速宇宙膨胀,我们将发现这种能量并有可能揭开其真面目。” SKA项目科学家、美国宇航局喷气推进实验室的约瑟夫·拉齐奥希望SKA阵列能够上演一个更令人兴奋的发现,即发现地球以外世界的无线电信号。他说:“SKA阵列将拥有足够的灵敏度,能够发现人为产生的无线电信号[3]  ,进而找到一些距离我们最近的恒星系统内的类地行星。也许在50年内,我们便可发现另一个在科技方面与我们相当接近的文明。”SKA阵列一定会上演一系列预料

平方公里射电阵的低频孔径阵列

内和预料外的重大发现。“SKA阵列将成为一个真正意义上具有变革性的科学仪器。我们将得出一系列出人意料的发现。”[2]

由于有了耗资13亿英镑(20.55亿美元)的平方公里射电阵(SKA),有关宇宙的一些未解之谜,最终将会找到答案。它将收集大量有关宇宙的信息,为了处理这些数据,我们需要一台功能相当于10亿台个人电脑的超级电脑。

项目意义

平方公里射电阵将由直径是1900英里(3057.75公里)的数千个表面积是1平方公里的蝶形天线组成,它将为人类提供大量有关宇宙的数据,一位天文学家曾称,它会彻底改变我们对宇宙的看法。英国协会科学和发现中心的伊恩-格里芬博士说:“平方公里射电阵计划将为天文学家提供一个新工具,彻底改变我们对宇宙的了解。由于面积庞大,这个望远镜将会显示出星系令人难以置信的细节,通过研究激动人心的神秘天体,例如黑洞,有助于检测爱因斯坦的相对论,让天文学家了解更多早期宇宙史。”

该科学机构还认为,如果我们的太阳系以外确实存在生命,平方公里射电阵将为发现它们提供最佳机会。要想达到这个目的,还需要突破性技术。平方公里射电阵的直径15米的蝶形天线将是有史以来建设的最为灵敏的天文设备,它能发现太空中的天体发出的电磁辐射,并能发现距离地球50光年的一颗行星上的机

天线和孔径阵列在观察天空时的排列秩序

场雷达信号。这些蝶形天线将由低频和中频孔径阵列提供帮助,后者会为我们提供一个大型视场,每次用它不只能观察一片天空。这台望远镜获得的数据将会多得惊人,数据传输速度为每秒几贝脱比特(petabits),或者大约是当前全球网络流量的100倍,每天能装满1500万个64GB的iPod。为了分析这些数据,需要制造一台每秒运行一百万万亿次的超级电脑,它比当前最强大的电脑的运行速度快1000倍。修建平方公里射电阵需要大量智囊团,目前20个国家的67个组织参与了它的设计和制造工作。

前期项目

2012年10月5日,澳大利亚联邦科学与工业研究组织表示,澳大利亚平方公里阵列射电望远镜(ASKAP)项目建设完成并于当天在西澳大利亚州默奇森地区正式启用。

ASKAP的36台独立碟状天线每个直径12米,它们将以前所未有的精度和速度捕捉宇宙射电波。项目所在地默奇森地区距离西澳大利亚州首府珀斯650公里,人烟稀少,被认为是世界上最佳的无线电静默区之一。

这一项目是世界最大射电望远镜“平方公里阵列”(SKA)的前期项目,整个SKA项目将包含数千个碟状探测装置,分布在澳大利亚、新西兰和南非等地。它将帮助科学家探索宇宙更为深层次的问题,如暗物质、暗能量、恒星和星系的起源等。

澳大利亚联邦科学与工业研究组织首席执行官梅甘·克拉克说,目前的射电望远镜绘制半人马座A星系的图像需要1200小时,而有了SKA望远镜,则只需要10分钟,“我们进入了绘制宇宙地图的新时代”。[4]

中国经济网北京2月13日讯 (实习记者 李梓珩)据澳大利亚《时代报》2月13日报道:澳大利亚科技部长克里斯-埃文斯(Chris Evans)正在积极寻求国际支持,以促使澳大利亚成为史上最大的平方公里射电阵项目(Square Kilometre Array,缩写为SKA)的建设地。平方公里射电阵是一个巨型射电望远镜阵列,它比任何现存望远镜的精度都要高,将为人类提供大量有关宇宙的数据,为人类解答一系列科学疑问。
该项目造价超过20亿美元,目前其竞争对手是南非。迄今,澳大利亚政府已投资逾3亿美元用于射电基础设施建设,以助澳大利亚胜过南非而成为项目最终选址。若项目最终落户澳大利亚,将对其带来极大的天文科学和经济效益。
最终结果有望于本周末之前得出,但或许要等到四月上旬才会正式公布[5]

最新进展

中国参与研发的世界最大射电望远镜阵项目向建设迈出关键一步

国际在线消息(记者 陈雨):记者2015年3月10日从中国科学院获悉,中国参与研究、研发的国际大科学工程——平方公里镜阵射电望远镜(Square Kilometre Array, SKA)项目取得重要进展:“平方公里镜阵”第一阶段(SKA1)建设方案已最终确定,并得到董事会通过。这标志着世界最大的射电望远镜阵进入了建设准备阶段的后期,并向建设阶段迈出了关键一步。

宇宙中充斥着各种各样的电磁波,有的微弱,有的强大。作为比目前的任何既有设备都要先进的“平方公里镜阵”,旨在捕捉这些电磁信号,收集从宇宙大爆炸到星系出现之前的“黑暗时期”信息;研究星系、恒星的产生和发展,以及充斥宇宙大部分的暗能量和暗物质的性质;帮助解释生命起源、探查外星生命存在,将为人类探索宇宙奥秘带来新的革命。

据了解,“平方公里镜阵”第一阶段建造费用共计6.5亿欧元,它由两套世界领先的望远镜设备构成,位于南非的约200面抛物面天线组成的蝶形天线阵,以及位于澳大利亚的由超过10万个偶极天线(类似于家用电视天线)组成的低频孔径阵列。

SKA科学主任Robert Braun说,“这两套互补望远镜将使我们得以开展一系列激动人心的科学研究,例如,通过观测脉冲星和黑洞来探测爱因斯坦所预言的引力波、检验万有引力理论、及搜寻地外生命的蛛丝马迹。”

“‘平方公里镜阵’下一步工作是与各成员国一道,在2018年‘平方公里镜阵’开始建造之前,将其目前的架构发展为一个国际性组织”,SKA董事会主席John Womersley教授表示,“平方公里镜阵射电望远镜的设计令人难以置信,它控制在预算之内,其建设即将启动,将驱动大数据时代的技术发展,将产生诺贝尔奖级的科学成果。简言之,它将成为史上少有的几个对整个社会产生不可估量影响的科学项目。”

诚如这位科学家所说,“平方公里镜阵”将于2018年开始建造,并将于2020年开始产出最早的科学成果。目前,国际SKA组织有11个正式成员国组成,分别是:澳大利亚、加拿大、中国、德国、印度、意大利、新西兰、南非、瑞典、荷兰、英国。其中,南非与澳大利亚还是台址国。[6]

参考资料

 

 

 

 

 

 

在AWS上使用GPU实现分布式神经网络

发表于2014-02-12 18:04| 6271次阅读| 来源Netflix Blog| 5 条评论| 作者Alex chen

云计算深度学习神经网络Netflix

摘要:Netflix是最近一家披露开发新技术从事人工智能领域研究的大型公司,虽然公司一再澄清从事分布式神经网络领域的研究只是用来更好的改善产品,但是对于一家拥有海量数据的流媒体视频巨头来说,不止于此。

【编者按】Netflix公司拥有海量的视频、图片数据,公司不断创新技术提升用户使用体验,最新消息显示Netflix承认正在开发新的技术开展人工智能领域的应用,该公司广泛采用高级人工智能技术,尤其以深度学习技术被大家所熟知。着眼深度学习可以让Netflix的电影推荐更准确,但是深度学习领域还有很多技术难题未被解决,Netflix技术博客网站的Alex chen等人结合自身实践,分享了在AWS上实现分布式人工智能网络的经验。

以下为译文:

在以前的博客中提到,Netflix一直不断创新,努力通过寻找更好的方法为我们的会员找到最好的电影和电视节目。当一个新的算法技术例如深度学习在其他领域(如图像识别、神经成像、语言模型和语音识别)展现非常好的前景时,我们没有惊喜,而是试图找出如何应用这些技术来改善我们的产品。在这篇文章中,我们将和大家分享在Netflix实验这些方法过程中建立基础设施的一些经验。希望对从事类似算法的人有所帮助,尤其是那些也使用AWS基础设施的人们。然而,我们不会详细说明我们如何使用人工神经元网络的变量实现个性化,因为它现在还在研究阶段。

许多研究人员指出,大部分流行的深度学习算法技术已经为大家熟知和了解。最近这一领域的革新已经能让这些技术能够实际应用,包括设计和实现的架构,可以在合理的资源和时间的情况下执行这些技术。第一个大规模深度学习成功实例是连续几天使用1000台机器的16000个CPU内核训练一个神经网络。尽管这具有里程碑意义,但是所需的基础设施、成本、计算时间仍然是不实际的。

Andrew Ng和他的团队解决了这个问题。他们使用强大而廉价的GPU代替大型集群的CPU,使用此体系结构仅用3台机器在几天内就训练出比原来大6.5倍的模型。在另一项研究中,Schwenk等人表明,在GPU上训练这些模型可以大大提高性能,即使和高端的多核CPU相比。

考虑到我们在云计算领域的技术和领导能力,我们利用GPU和AWS的优势,实现大规模神经网络训练系统。我们想要使用合理数量的机器,利用神经网络方法实现强大的机器学习解决方案。我们还需要避免在一个专用的数据中心里使用特殊的机器,按需计算的能力可以在AWS上获得。

分布式机器学习的层次

你们中的一些人可能会认为上面描述的场景不是传统意义上的分布式机器学习。例如,在上面所提到Ng等人,他们将学习算法本身分配在不同的机器上。虽然这种方法在某些情况下可能有意义,但是我们发现它们并不是很规范,特别是当一个数据集可以存储在单一实例上。要理解为什么,我们首先需要解释可分布式模型的不同层次。

在标准情况下,我们会有一个特定的模型与多个实例。这些实例在你的问题空间可能对应于不同的分区。典型的情况是不同国家或地区要有不同的模型训练,因为分布特征甚至主题空间各个国家和地区都是不同的。这代表第一个初始级别,在这里我们可以决定分配学习过程。我们可以,例如,Netflix在41个国家运营,我们可以在每个国家都进行独立的机器训练,因为每个地区的训练可以完全独立。

然而,正如上面所解释的,培训单一实例实际上意味着训练和测试数个模型,每个对应一个不同的hyperparameters组合。这是第二个层次,过程可以被分配。这个级别是特别有趣的,如果有许多参数优化和一个好的策略优化它们,如贝叶斯优化与高斯过程。运行之间唯一的的通信是hyperparameter设置和测试评价指标。

最后,该算法训练本身可以是分布式的。这也是有趣的,但它是有代价的。例如,培训ANN是一个比较集中通信的过程。考虑到你可能会有成千上万的核心在一个GPU实例上,如果你能充分利用GPU,避免进入昂贵的跨机器通信场景,这将是很方便的。因为在一台机器上使用内存通信通常远远快于通过网络。

下面下面的伪代码演示了这三个层次:

 

在本文里,我们将阐述在我们的用例中如何解决级别1和2分布。请注意,我们不需要解决3层分布的原因之一是因为我们的模型有数百万的参数。

优化CUDA Kernel

我们处理分布问题之前,必须确保基于GPU的并行训练是有效的。我们首先在自己开发的机器上进行概念验证,然后再来处理如何扩展机器问题。我们开始使用Nvidia Quadro 600 GPU的联想S20工作站。这个GPU 有98内核,并且为我们的实验提供了一个有用的基准,特别是考虑到我们打算在AWS上使用一个更强大的机器。我们第一次尝试训练神经网络模型花了7个小时。

然后我们在EC2的cg1.4xlarge实例中运行相同的代码来训练该模型,它有一个更强大的448内核的Tesla M2050 。然而,训练时间从7小时上升到20小时以上。分析表明,大部分时间是花在Nvidia性能原始库函数调用,例如nppsMulC_32f_I、nppsExp_32f_I。cg1实例比联想S20重复调用npps函数多花费了十几倍的系统时间。

当我们试图找出问题的根源,我们使用定制的cuda kernel重新实现npps函数,例如将nppsMulC_32f_I函数替换为:

用这种方法取代所有npps函数这样的神经网络代码使cg1实例上的总培训时间从20多小时减少到47分钟。训练100万样本用去96秒GPU的时间。使用相同的方法在联想S20总训练时间也从7小时减少到2小时。

PCI 配置空间和虚拟环境

当我们处理这个问题时,我们也曾与AWS团队找到一个好的解决方案,不需要内核补丁。在这样做的时候,我们发现,相关性能下降与NVreg_CheckPCIConfigSpace内核参数有关。从RedHat得知,将这个参数设置为0,将会让访问PCI配置空间非常缓慢。在虚拟环境中,如AWS,这些访问导致hypervisor陷阱,导致更慢的访问。

NVreg_CheckPCIConfigSpace是一个参数,可以设置:

我们使用基准测试这个参数变化的影响,反复调用MulC(128 x1000次)。下面是我们cg1.4xlarge实例运行时间(秒):

如你所见,禁用访问PCI空间在最初的函数调用时有惊人的效果,减少95%运行时间。效果是显著的,甚至在我们优化内核函数时,运行时间也节省近25%。然而,重要的是,即使PCI访问是禁用的,我们的定制函数性能比默认的也提升60%。

我们还应该指出,还有其他方法,我们到目前为止还没有找到,但对其它也是有用的。首先,我们可以将我们的代码优化,通过应用一个内核融合技巧,合并一些计算步骤到一个内核将会减少内存访问。最后,我们可以考虑使用Theano,GPU匹配Python编译器,也应该可以在这些情况下提高性能。

G2 实例

虽然我们最初的工作是使用cg1.4xlarge EC2实例,但是我们对新的EC2 GPU g2.2xlarge实例类型同样感兴趣,它具有1536内核 GRID K520 GPU (GK104 chip)。目前我们的应用程序也被GPU内存带宽限制,GRID K520内存带宽是198 GB /秒,相比Tesla M2050的148 GB /秒已经有所改善。当然,使用GPU与更快的内存将会更快(例如TITAN的内存带宽达到288 GB / sec)。

我们用默认的函数和自己的函数在g2.2xlarge实例上重复相同的比较(有或没有PCI空间访问)。

最初令人惊讶的事实是,当启用PCI访问时,我们测出g2实例比cg1性能更差。然而,禁用它,相比cg1实例改进的性能在45%-65%之间。我们KernelMulC定制函数功能要好70%以上,基准时间在1秒内。因此,切换到G2,正确的配置将会使我们的实验更快。

分布式贝叶斯hyperparameter优化

一旦我们优化了单节点训练和测试操作,我们就准备解决hyperparameter优化的问题。如果你不熟悉这个概念,这里可以简单解释为:大多数机器学习算法的参数优化,这通常被称为hyperparameters,以便和学习算法产生的模型参数区分。例如,在神经网络中,我们可以考虑优化隐藏单位、学习速率等。为了优化这些,你需要训练和测试不同的hyperparameters 组合和为你的最终模型选择最佳的。当面对一个复杂的模型,其中每训练一个都有时间消耗,以及有很多hyperparameters调整,执行这些详尽的网格搜索代价非常大。幸运的是,通过考虑参数调整你可以做的比这更好。

解决这种问题的一种方法是使用贝叶斯优化,算法的性能将被高斯过程建模为一个示例。高斯过程对回归分析非常有效,但是他们扩展到大的问题时还是有困难的,当数据有限时。他们运行的很好,就像我们遇到在执行hyperparameter优化一样。我们使用package spearmint  执行贝叶斯优化,为神经网络训练算法找到最好的hyperparameters。我们通过选择一套hyperparameters使spearmint和我们的训练算法关联,然后使用我们GPU优化代码训练神经网络。然后测试这个模型,测试度量结果用于更新hyperparameter。

我们从GPU得到高性能,但我们每台机器只有1 - 2 GPU,所以我们想利用AWS的分布式计算能力为所有的配置来执行hyperparameter调优,如每个国际地区用不同的模型。为此,我们使用分布式任务队列Celery 将任务发送到GPU。每个worker process听从任务队列,并且在一个GPU上运行。这将让我们每天可以为所有的国际地区调优,训练,和升级模型。

尽管Spearmint + Celery系统一直在运行,但是我们目前正在评估使用HTCondor或StarCluster更完整和复杂的解决方案。HTCondor可以用来管理任何Directed Acyclic Graph (DAG)工作流。它处理输入/输出文件传输和资源管理。为了使用Condor,我们需要每个计算节点用给定的ClassAd(例如SLOT1_HAS_GPU = TRUE;STARD_ATTRS = HAS_GPU)注册为管理人员。然后用户可以通过配置“需求= HAS_GPU”提交作业,这样的工作只运行在AWS实例上,并且要有一个可用的GPU。使用Condor的主要优势是,它还管理不同模型的训练所需的分布式数据。Condor也允许我们以管理员身份进行Spearmint Bayesian优化运行,而不必在每个worker运行。

另一个替代方法是使用StarCluster,它是由麻省理工大学为AWS EC2开发的一个开源集群计算框架。StarCluster以一种容错性方式运行在Oracle Grid Engine  上(以前是 Sun Grid Engine),完全由Spearmint支持。最后,我们还在研究,将Spearmint 和 Jobman 整合以便更好地管理hyperparameter搜索工作流。下图是使用Spearmint plus Celery、 Condor或是StarCluster的一般设置:

结语

使用GPU实现前沿解决方案,比如训练大规模神经网络需要艰苦的努力。如果你需要在自己定制的基础设施上实现它、成本和复杂性将不可思议的。利用AWS有明显的好处,在实例的定制和使用资源时会有一定的支持。我们希望通过分享我们的经验来让别人更方便开发类似应用程序。

标签:

给我留言

Copyright © ExBot易科机器人实验室 保留所有权利.   Theme   Robin modified by poyoten

用户登录

分享到: