近期,在雷锋网 AI 研习社线上公开课上,Thinker (AI 芯片) 团队深度学习平台卖力人周鹏程分享了目前主流的分布式异构打算特性,差异和运用,并且先容了如何让当前盛行的大数据剖析引擎(如:Spark)从 AI 芯片的强大打算能力中获益。视频回放:http://www.mooc.ai/open/course/479
周鹏程,Thinker (AI 芯片) 团队深度学习平台卖力人,曾就职于阿里巴巴技能保障奇迹部,担当算法工程师;清华大学微电子硕士,紧张研究方向:面向可重构芯片的编译器后端优化,指令级并行,高并发编程模型以及分布式打算。
分享主题:如何在集群中高效地支配和利用 AI 芯片
分享提要:
关于Hadoop YARN资源管理系统的先容
Spark分布式打算框架的先容
各种异构芯片不同的平台,特性,差异,以及运用
开源项目StarGate
这次直播分享首先为大家先容 Hadoop YARN 资源管理系统。Hadoop YARN 资源管理框架,它紧张管理集群中的 CPU 和内存。
YARN(Yet Another Resource Negotiator)是一个通用的资源管理平台,可为各种打算框架供应资源的管理和调度。
YARN 总体上是 Master/Slave 构造,紧张由 ResourceManager、NodeManager、 ApplicationMaster 和 Container 等几个组件构成。
NodeManager (NM) 是每个节点上的资源和任务管理器。它会定时地向 RM 申报请示本节点上的资源利用情形和各个 Container 的运行状态;同时会吸收并处理来自 AM 的 Container 启动/停滞等要求。
ApplicationMaster (AM) 用户提交的运用程序均包含一个 AM,卖力运用的监控,跟踪运用实行状态,重启失落败任务等。ApplicationMaster 是运用框架,它卖力向 ResourceManager 折衷资源,并且与 NodeManager 协同事情完成 Task 的实行和监控。
Container 是 YARN 中的资源抽象,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等,当 AM 向 RM 申请资源时,RM 为 AM 返回的资源便是用 Container 表示的。YARN 会为每个任务分配一个 Container 且该任务只能利用该 Container 中描述的资源。
接下来先容一个分外的 applicationmaster,它便是 Spark。这个打算框架非常盛行,可以支持流式打算,图打算,数据库查询。更多关于 Spark 的先容,大家可以参考官网,本文紧张先容如何让 spark 运用在异构打算平台上。
Spark 的数据构造 RDD (Resilient Distributed Dataset)
RDD 是 Spark 供应的核心抽象,全称为 Resillient Distributed Dataset,即弹性分布式数据集。可以抽象地认为它是在一个集议论况中的一个大数组,这个数组不可变,但又可以切分很多的小数组,每一个小数组(partition)被分发到集群中的几个节点,这样就实现了数据的并行,然后把打算推送到有数据的节点上,就完成了一次分布式打算。
RDD 常日通过 Hadoop 上的文件,即 HDFS 文件或者 Hive 表,来进行创建;有时也可以通过运用程序中的凑集来创建。
RDD 最主要的特性便是,供应了容错性,可以自动从节点失落败中规复过来。即如果某个节点上的 RDD partition,由于节点故障,导致数据丢了,那么 RDD 会自动通过自己的数据来源重新打算该 partition。这统统对利用者是透明的。
RDD 的数据默认情形下存放在内存中的,但是在内存资源不敷时,Spark 会自动将 RDD 数据写入磁盘。
Spark on YARN 模式的打算瓶颈是底层芯片上,关于这部分可不雅观看回放视频先容。
接下来是CPU,GPU,FPGA,AI芯片在不同的运用上的差异。
图中绿色的部分是 GPU 打算核心,GPU 的打算单元特殊丰富,但是掌握逻辑单元非常少,这就导致它只能适用于比较规则的打算类型,比如卷积运算,这种类型的运算只是大略且重复的做矩阵乘法。因此,最适宜用GPU了。
FPGA 和 GPU 的不一样在于,FPGA 首先设计资源受到很大的限定,例如 GPU 如果想多加几个核心只要增加芯片面积就行,但 FPGA 一旦你型号选定了逻辑资源上限就确定了(浮点运算在 FPGA 里会占用很多资源),其次,FPGA 里面的逻辑单元是基于 SRAM-查找表,其性能会比 GPU 里面的标准逻辑单元差好多。末了,FPGA 的布线资源也受限定(有些线必须要绕很远),不像 GPU 这样走 ASIC flow 可以随意布线,这也会限定性能。
现实中有很多运用,不是都适宜用 GPU 来处理,比如图打算。我们都知道图是由很多的节点和边组成,如果用一个节点表示一个算子,节点之间的边表示数据干系或数据依赖的话,我们就构建了一个打算图,也可以称为数据流图(DFG)。之以是说图打算不适宜用 GPU 来做的,是由于它没有办法高效处理这种数据依赖,只能通过访存来通报这种依赖。而如果把这种数据流图映射到 FPGA 上,就可以通过打算单元之间的连线构造来通报和处理这种依赖,而且不同的打算单元可以实行不同的算子,再运用流水线技能,便可以大大降落访存的压力,大幅度提高性能。这便是 FPGA 比较适用于不规则运用(如:图打算、流式打算)的缘故原由所在。
CPU,GPU,FPGA,ASIC 的架构特点
下图是我们团队研发的三款芯片,紧张用于深度学习运用的加速。
英特尔FPGA的开拓流程
理解芯片的基本开拓流程后,我们接下来要考虑的是如何高效地管理和利用做事器上已经安装好的各种加速器资源。为了实现这个目标,须要设计和实现对应的组件或者做事,比如须要一个监控组件用于实时监控加速器的各种状态和资源利用情形,同时还须要一个调度器组件卖力为多个运用程序分配相应的加速器资源。总之,我们须要一个进行资源管理的做事。
这是我们团队自主研发的 StarGate 开源项目。地址:http://github.com/stargate-team/stargate
StarGate 的紧张架构
接下来是 Spark on StarGate 部分的讲解,由于篇幅限定,这里不再做笔墨内容回顾,感兴趣的同学可以直接不雅观看视频回放。视频地址链接:http://www.mooc.ai/open/course/479
总结
当前盛行的大数据生产系统的打算瓶颈存在于底层芯片上,而芯片能够在很大程度上缓解打算压力。为相识释 AI 芯片强大的打算能力,分别先容 AI 芯片的基本架构、特性以及适用场景。但是不同的 AI 芯片对当前主流的大数据生产系统的支持程度不同,很多时候须要扩展当前的生产系统才能集成现有的 AI 芯片。为了最小化 AI 芯片在数据中央支配的代价并且高效地利用 AI 芯片的强大打算能力,我们设计并开拓了开源项目 StarGate。
以上便是本次雷锋网 AI 研习社公开课的全部分享内容。更多视频直播课程关注微信"大众号:AI 研习社
雷锋网出品