高性能计算(HPC)的前景、如何学习HPC

本文转自:http://www.sohu.com/a/195733141_697750 。如有侵权,可以联系本人删帖。

最近在看风辰先生编写的《OpenCL异构并行计算》,在网上找到了搜狐科技对商汤科技HPC部负责人风辰先生的专访,所以转过来,分享给大家。

在这篇专访中,风辰先生给出了HPC的前景以及如何学习HPC的一些建议,我个人觉得很受用。

搜狐科技:专访 | 商汤HPC负责人刘文志(风辰):未来战略的两大方向及招人的4个标准

前不久,商汤刚刚完成了4.1亿美金的B轮融资,创下了人工智能领域最大融资金额的记录。

据业界人士透露,之所以能完成这次巨大数额融资,一方面是因为商汤的算法在整个行业处于绝对领先的地位,另一方面,商汤的HPC部门十分强悍,近几年取得了不少突破性进展。

正是由于这样的突破,让投资方相信,商汤在未来完全有能力支撑其在商业化道路中的各项业务,稳步前进。

HPC,英文全称为High Performance Computing ——高性能计算,这是近一两年来随着深度学习的崛起,才逐渐进入人们视野的一个非常小众的计算领域。由于深度学习对算力的需求非常旺盛,一般的计算已经完全达不到要求,只有高性能计算才能对其提供持久而稳定的保障。

尽管商汤的HPC部门在业内很有口碑,但鲜少对外发声,在外界眼中,这个部门颇为神秘。

从网上已有的信息中,我们能获知的信息有,商汤的HPC部门为各业务提供从训练平台到部署平台的整体基础设施,并负责全面提升商汤各个产品体系的计算速度。

2017年9月28日,林达华教授亲自在NVIDIA GTC China上展示了商汤Parrots训练平台,而据业内爆料,商汤的部署平台PPL性能已足够秒杀谷歌对应产品。

为了搞清楚商汤HPC到底目前是什么情况,也为了能对业内传言进行证实,AI科技大本营对其负责人刘文志(风辰)进行了独家专访。希望透过这次交谈,了解更多内部信息。

以下为采访实录,AI科技大本营在不改变原意的基础上略做删节和修改。

AI科技大本营:商汤HPC部门,更注重软件还是硬件呢?

风辰:商汤比较注重软件和硬件的结合。

作为HPC这一块,硬件就是芯片。对商汤来说,我们是一家创业公司,不适合做芯片这类的工作,但就我们的业务来说,我们其实是需要考虑怎么把芯片的能力发挥出来的。为此,我们专门有一个HPC团队做基于芯片上的性能优化。

AI科技大本营:优化后,性能会有多大的提升呢?

风辰:如果跟这个领域最领先的公司,比如facebook、谷歌、英特尔、高通等相比,我们可以在他们的基础上提高两到三倍。至于其他一些普通的公司,我们做完优化的性能估计能达到他们的十倍,甚至十倍以上。

比如说谷歌的TensorFlow也支持手机,FaceBook的Caffe 2,我们早在一年前就已经做得比他们快很多了。不过,我们很少对外讲。另外这个东西确实也没法说,除非你把代码扔出去,不然很难让人真正看到你比别人到底快了多少。

当然,这么比较也对他们可能有点不公平。为什么这么讲?拿谷歌来说,他们自己肯定会基于自家的开源框架TensorFlow做业务上的优化,但这个框架并不会为别人的业务做优化。同样,商汤的业务也只会为商汤的业务做优化。因此,我们拿优化好的框架,与他们的开源框架比,可能并不是很公平的一件事。

AI科技大本营:既然如此,商汤会开源吗?

风辰:我们现在还没有能力开源。因为开源之后,需要的人力物力会成倍地增长。 比如,有人提了BUG,我们是修还是不修?修的话我们需要人,不修的话,别人觉得你不负责任。所以现阶段,我们选择不开源,未来等商汤做到一定规模,会考虑开源的事情。

AI科技大本营:关于软件优化这一块,主要是偏底层,还是偏具体应用呢?

风辰:两方面我们都会做。

一方面,对商汤来说,由于很多业务都是基于深度学习的。既然基于深度学习,它就有很多共同的地方,这一块我们其实更多的是基于平台,做软硬件的结合优化,这是一个偏底层的优化,不同的业务可以通用。

另一方面,基于不同的业务,又要求我们进行偏应用上的特殊处理。

总的来说,短期内,会侧重底层平台的优化。因为这个做一次,可以同时对很多业务起到助力的作用。长远来说,我们也会涉入各个业务上层的优化,和各个产品线能力协作,把产品性能做到极致.

AI科技大本营:商汤在HPC上,大的战略战略是什么?下一步会集中攻关的具体是哪个点?可否透露一下最新取得的进展?

风辰:战略上有两个方面:一个是如何将现有芯片的能力发挥到最大。另一个,跟芯片厂商一起制作芯片,从根上强化其对于深度学习的处理能力。

目前我们PPL在ARM CPU上的性能在商汤的应用上已经远超已知的大厂开源方案; 在Qualcomm GPU上的性能也超过了硬件厂商,并且已经使用在了国内手机巨头的产品中。

至于最新的进展,我只能透露一点,我们正在fpga上做深度学习的解决方案,相关产品初步预计会在明年面世。

AI科技大本营:平时会亲自来做MPI或各种编译器吗?

风辰:MPI以及其他的一些工具,大多数都用在分布式或集成的环境中。虽然有一些人也会自己去做一些有关通信的组件,但意义和价值并不大,因为MPI本身已经做得足够好了。

尽管针对业务上有特殊要求时,自己做一些特殊的编译器是有优势的。但在大多数场合下,自己做并不见得有优势。

针对这个问题,需要考虑两点:

做这个编译器对这个业务能产生多大的效应?

是否能将编译器做得足够通用?如果不是足够通用的话,那我直接写个程序就可以解决问题了。如果足够通用,那么编译器是否能处理好灵活性。

总的来说,针对这一点,主要还是看具体业务,业务不同,选择也不同。

就目前整个业界来看,直接用MPI更为普遍,很少有公司会去自己再把轮子重新造一遍,太麻烦了。再说,也很难有人达到这个层次,即便能写出来程序,就能保证一定不出问题,保证对业务有真正意义上的帮助吗?可能未必。

AI科技大本营:确实如您所说,在工具的使用上,工业界更为追求的是:效用最大、通用、及灵活性。其实工业界跟做学术的差别还挺大的。学界求新,工业求稳。即便是学界发布了最新研究,但对工业界来说,综合效率、性能、可拓展性、灵活度等,最新的算法并不一定比老的算法更为好用。您在日常工作中,老算法比新算法更为适用的情况多吗?

风辰:这是经常会遇到的情况。搞研究和做工业,两套思维方式确实不一样。研究通常更关注突破,关注在现有的情况下,能做出来的最好的效果。而工业界,通常更关心在现实应用场景中,最差的结果,至少也是平均结果。

所以说,两者评价标准的不同,也就导致对最好最新的算法的认知是不同的。学术上最好的算法也许在实际应用中,其能达到的平均结果,或者最坏的结果,并不比之前的算法达到的结果更好。

AI科技大本营:我们知道,你最为擅长的是异构并行计算,对于如何将异构并行计算用以处理具体的工业需求,您的经验非常丰富,而且就这个问题,您已经写了四本书:《并行算法设计与性能优化》、《并行编程方法与优化实践》、《科学计算与企业经应用的并行优化》、《OpenCL 异构并行计算》,这几本书分别关注的是什么方面,您最满意的是哪本呢?

风辰:最满意的应该算是第一本《并行算法设计与性能优化》。

这本书算是其他几本书的基础,这本书讲道,其他基本偏术。把道掌握了,关于术的东西,学起来是很快的。

这本书是能够真正提升一个人对该领域的理解能力的,后面三本则更多是解决某一具体领域的实际问题。

比如第二本《并行编程方法与优化实践》是从编程语言的角度,介绍有哪些并行的编程语言和工具,每个语言具体应该怎么来用;第三本《科学计算与企业经应用的并行优化》是从应用领域的角度来展开的具体实战经验;和陈轶、长江合作的第四本《OpenCL 异构并行计算》是针对异构计算的开放运算语言OpenCL所展开的理论介绍和实战训练。

对很多人来说,实战可能更受欢迎,因为它能速成。

举个例子,你能达到的最大高度是100分,而目前的能力是60分,那么,后三本书能将你解决问题的能力从60分快速提升到70分,80分。但是,这样的学习,只是让你更接近目前的能力天花板,而不是拔高你的天花板。

如果想让自己突破这100分的天花板,将高度提升至200分,300分,让自己拥有更大的往上走的空间,就必须沉下心来学习“道”层面的思想内核。

总的来说,今天大多数中国的工程师更喜欢实战。

AI科技大本营:您所说的有关“道”的这类书,目前在市面上相对比较少见吗?

风辰:确实,术的东西已经有很多人去写了,但道的层面,很少有人写。

当然有些教授会写写“道”这个层面的内容,但是他们更偏向于计算机理论方面的“道”。这对于做研究很有意义,但对于“如何把一个程序的性能做到极致”,帮助却不大。因为学院派更关注知识的整体架构,知识体系等,但稍微有点脱离工业所能真正用到的实用性思想。

AI科技大本营:您平时比较喜欢看什么类型的书呢?

风辰:我现在看的书大多数更偏硬件体系结构,主要看里面的算法和设计。比较老一点,经典一点的理论研究类的书。这些沉淀下来的,沿用至今,被大家广泛接受的研究,才是真正被历史证明有价值的技术精髓。

我会关注其做研究的背后的指导思想和研究方法,并且一边看一边想,怎么将这些思想转化为工业实践。

举个简单的例子。对于快速排序这个问题,其实已经有许许多多的算法和实践,用于在不同情况不同配置下对其做优化。但这些优化都会带来不同程度的挑战,怎么把这种优化与硬件、算法结合起来,做出一个在工业上能快速实现的算法,这就需要追根溯源去寻找答案。

对此,我会看有关快速排序的理论基础、算法细节,会思考当这个算法在具体的硬件上跑起来时,这个硬间需要满足哪些特征,处理器的设计需要遵循哪些基本的规则,什么样的规则才能让它跑得更快。

希望增强思考能力的同学,有兴趣可以看一下《计算机程序设计艺术》,不过这本书太强悍,能浏览一下也是好的;硬件方面推荐一本书《Parallel Computer Design》,这本书介绍了现在主流计算机硬件设计所考虑的因素;还有国内陈国良院士关于并行算法设计的一套书。

关于异构并行计算

AI科技大本营:如何深入浅出地理解异构并行计算呢?

风辰:我来举一个形象化的例子吧。

人是可以多线程同时运行的,比如一边用手和嘴协同来吃饭还能一边看电视;比如走路的时候突然踩到石头快要摔倒,身体会不经过意识做出保持平衡的姿态;这是因为我们有大脑来进行有意识的计算,还有小脑、脊椎等来进行无意识的计算。

人类会把任务进行分类,不同的任务由不同的地方来控制,这样人类才能适应复杂的环境。

相比人类,计算机编程一直都是串行的,绝大多数程序只存在一个进程或者线程。因此,过去计算机能否快速处理问题,能否处理复杂问题,靠的是芯片本身的性能。

不过,在过去的几年,CPU的频率已经不太有大的提升了。你可以看到,CPU制程从65纳米,到44纳米,到14纳米,12纳米,10纳米,7纳米,如今单核的计算能力基本已接近停滞了。

而另一方面,应用对于计算性能的需求却一直在增长,怎么适应这个需求呢?所以这就要用到两种方法:并行计算和异构计算。

并行计算是指原来将原来的单核改成四核、八核来计算;异构计算则是混搭,将任务进行划分,适合用大规模并行计算的任务交给并行计算,适合单线程完成的任务用单线程,也就是说,按需分配硬件的计算资源。正如人的大脑、小脑、脊椎各司其职。

比如,在安防领域,神经网络的计算部分是在GPU上进行,而逻辑处理则是在CPU上进行。

从本质来说,异构计算与多核并行都是为了将计算能力进行最大化,我们统称异构并行计算。

关于HPC人才空缺

AI科技大本营:相比原来的单线程计算,做异构并行计算对程序员有哪些更高的要求呢?

风辰:要求确实更高了。异构并行非常难。

程序员的思维模式需要从根本上做转变。原来是基于单线程的思维模式,现在要将算法设计成多线程。怎么样能把任务很好地分配到各个处理器上,怎么去利用好各个处理器上的硬件资源,这都是很难的。

AI科技大本营:这一块的人才培养跟得上吗?

风辰:异构这个概念直到近来才得到大家的重视,学校还没有来得及培养这类人才。

虽然有些高校会开相关的选修课,但开课老师一直是待在学校,本身并没有太多实战经验,也没有经历过来自工业界的摔打,所以,总的来说,培养效果不是很明显。

而随着这几年深度学习的崛起,工业界对于人才的需求越来越旺盛,学校的培养不仅跟不上,而且这个鸿沟目前的状态是越来越大。几乎所有的公司都在抱怨,这个领域的人才不够用。商汤在HPC这个领域还挺有名气的,我们都很难找到满足要求的人才,其他公司更不用说了。稍微优秀点的人才,四处难觅,都抢着要。

如果说要解决人才这个问题,最好的方法,就是先培养一批非常好的老师,然后想办法让尽可能多的学生能触及并获取到这部分教师资源。

AI科技大本营:目前在国内的HPC领域,有您比较欣赏的人吗?

风辰:基本没有。我没有发现国内有多少人真正可以在这个领域做到非常高的水平,这表现在多个方面:远见、决心、执行能力。

AI科技大本营:跟国外相比,中国在HPC领域差距大吗?

风辰:在硬件上,我们已经世界领先了。因为中国有钱,可以买最好的硬件,但软件方面,不是拿钱就可以堆出来的,特别是人才,这是有培养周期的。

商汤如何招人

AI科技大本营:对于人才这一块,您在招聘中比较倾向于招应届生,还是有几年工作经验的呢?

风辰:基本上只能应届生,因为有工作经验,并且干得很优秀的人才,实在太少太少了。对于应届毕业生,我们一般比较看好来自事上海交大、中国科学院大学、清华、北航、北邮这些在中国计算机专业排名前十的大学。

AI科技大本营:这些应届生毕业进入HPC领域,大概能拿到多高的薪酬?

风辰:这个不好说,不过普遍比其他的工程师要高。一般来说,硕士学历,或者非常拔尖的本科生,一般能拿到平均30万左右的年薪。博士更多一些。

AI科技大本营您招人的标准是?

风辰:商汤在用人标准方面,整体应该是业界最高的。放到HPC领域,我会看这么几个方面:

  1. 对这个行业的热爱程度

  2. 解决通用实际问题的能力

  3. 对计算机体系结构的整体把握能力

  4. 数据处理能力

此外,我会非常看重这个人是不是具备很好的解决问题思维。因为这将决定一个人的成长速度,以及未来有潜力达到怎样的高度。

AI科技大本营:如何考察这种思维能力呢?

风辰:最简单的,你抛一个问题给他,看他会以怎样的模式去思考,怎么去解决一个并不熟悉的问题,如何写代码。

AI科技大本营:目前为止,有在面试中遇到过让您眼前一亮的学生吗?

风辰:目前基本上没有,不过今年面试的学生有一些已经接近了,相信很快就有了。

这其实是整个培养体系不完善造成的。现在连我本人,也是不断遇到问题,思考问题,然后自己去构建知识体系。学校的教授,与实际情况离得比较远,其实并没有这个能力将这个培养体系构建起来。

HPC人才的职业成长

AI科技大本营:对于毕业生来说,大概需要多长时间能成长为一个优秀的HPC人才呢?

风辰:一般来说,本科毕业大致需要5-6年,硕士毕业在3年左右,博士则是1-2年。不过,人才成长的速度会越来越快。

AI科技大本营:如果入职商汤HPC部门,您会从哪些方面去帮助人才成长?

风辰有以下几个方面吧。

  1. 进一步帮助他完善计算机体系结构的理论基础,比如计算机是怎么做计算的,一个计算从把指令放出去,到最后执行完成,写回历程,会经历哪些阶段,每个阶段是怎么处理的;

  2. 培养他如何去设计一个好的并行算法;

  3. 交给他常见的软件工程师所必需掌握的各项技能;

  4. 训练他如何编程,如何写出高质量的程序;

  5. 培养解决各类实际问题的能力,无论是异构并行算法上出现的问题,还是硬件层面出现的问题。

AI科技大本营:现在最头疼的事情是?

风辰:找人找人找人!找对的人!

AI科技大本营:这是整个行业都头疼的事情。(笑)

风辰:所以才有抢人大战。(笑)

附:风辰简介:

  • 硕士毕业于中国科学院研究生院,现为 SenseTime异构并行计算部门负责人,负责代码性能优化、芯片化、自动驾驶业务。

  • 曾于 2011 年至 2014 年间于英伟达担任并行计算工程师。后就职百度深度学习研究院高级研发工程师,负责异构计算组日常工作。两项美国专利申请已公示、多项国内专利公示。

  • 已出版《并行算法设计与性能优化》、《并行编程方法与优化实践》、《科学计算与企业经应用的并行优化》、《OpenCL 异构并行计算》等四本个人著作,其中《并行算法设计与性能优化》已印刷近万本。

你可能感兴趣的:(高性能计算(HPC),HPC学习,HPC的前景)