编者按:本文来自微信公众号脑极体(unity007),36氪经授权发布。
在中学课本里,我们都学到过“超级计算机”这个概念,在印象里它通常和神州五号、航空母舰等等高科技设备出现在同一个章节,属于国家科研能力的体现,更是在国际科技战备的赛点。
现在这么多年过去了,一回神中国超级计算机的代表作已经从天河进化成了神威·太湖之光,并且通过对地震、海浪等等自然现象的精确模拟两次获得了戈登贝尔奖。
据称,戈登贝尔奖是超算领域的最高奖项,在奖项评选标准中更多会考虑到超算项目的实际应用性。过去三十年中,这一奖项一直被美国和日本垄断,直到最近两年才被中国蝉联。
说实在的,大多数人的印象中,中国超算经过这么多年的发展,还实现了“零的突破”,可在IT领域中,我们似乎更多的受益于互联网、移动终端的发展。
超级计算机既然都那么厉害了,那为什么我们在生活中还见不到它的身影呢?
地震?海浪?超算到底能干嘛
拥有这种疑问的人不是少数,超级计算机这几年开始频繁的受到一种质疑:强大的算力究竟有什么用?耗费这么多科研经费和资源,是不是只是为了刷排名而没有实用价值?
其实人们会产生这种疑问是很正常的,超级计算机从研发到生产以至于后期的运维,成本都非常之高。研发时凝聚的高精尖科研力量自不必提,产品上光是CPU/GPU就有几千个,占地面积要达到上千平方米。使用起来更是电老虎,以天河二号为例,满负荷运行的情况下,一天的电费就需要30万。而大量的计算还会让超级计算机发热,如何降温还成了个大问题。
所以,这么昂贵的超级计算机都用来做什么了呢?
以去年神威·太湖入围戈登贝尔的几个项目为例,他们分别是“千万核可扩展全球大气动力学全隐式模拟”、“高分辨率海浪数值模拟”和“钛合金微结构演化相场模拟”。
em……没错,除去军事应用外,超级计算机通常会被应用于天文、气象、基础物理、化学等等方面的研究。乍一听起来,的确离人们的现实生活太远了。毕竟现在整个世界都还没用出现什么突破以往物理定律的新发现,虽然能发射火箭,可普通人还不能进行一次太空旅行,至于天气预报倒是比以前准确了不少,可也没出现过超算成功预测并避开自然灾害的情况。
用超级计算机玩网游,是一种怎样的体验?
计算这件事,在大数据遍地的今天并不少见,既然超级计算机的计算能力那么强,为什么不把交通大数据、金融大数据这些东西都放到上面去算呢?
首先,我们要对超算能力这件事有一个正确的认识。由于超级计算机集成了大量CPU,它所擅长的也是CPU最擅长的工作——浮点运算。由于计算机使用的是二进制,所以在处理1.01这种带小数点的小数时,只能用科学计数法来表示。这样就避免了小数运算时的有穷性,可以对无穷大和无穷小的数值进行运算。
超级计算机最擅长的就是依靠并联的CPU们对浮点数计算进行并行运算。可以承受其他计算机无法承受的计算峰值。一个CPU算一道题需要5个小时,用五个CPU把这道题拆解开来分别计算,就只需要一个小时。一些在普通计算机上要跑一个礼拜的项目,拿到超级计算机上可能两分钟就完成了。
所以现在我们知道了,超算的最大作用,是为某一种特定形式的计算节约时间。而在日常生活中,也许我们面对的问题并不是浮点数计算,比如区块链应用的就是单一hash的运算;又或者像电商、游戏大厂,它们面临的不是高计算量,而是快速频繁的数据并发吞吐。
而把计算任务部署到超算上,又面临着不少的成本,除去使用费用不说,由于超算只提供编译平台,使用者还要自己去熟悉系统。而且目前的超级计算机虽然大多为学术机构所有,但是一想到要把自己用户的数据拿到别人的机子上计算,总觉得有点怪怪的……
所以,超算并不是不能用来处理我们日常、商业中遇到的计算问题,而是很多本来不是超算最擅长的,综合使用成本而言,没有必要使用超算。
用超算训练AI,会不会是超算民用的第一步?
不过一个好消息是,随着深度学习的普及和发展,超算的计算能力或许可以被更多人应用起来。
众所周知,深度学习的神经网络层数更深,每个神经元之间互相连接,形成了一个非常复杂的结构。而每个神经元中又都需要Sigmoid函数这类复杂的数学计算,加上图像识别、语音识别这类工作本身数据训练集就很大,最后就集结成了一种非常可怕的计算量。
这几年深度学习的发展,离不开计算能力的发展。英伟达之所以能靠卖GPU超过同行,最大的原因就是深度学习对计算能力的依赖。
那么,超级计算机能不能应用在深度学习上呢?答案是肯定的。
在今年年初的德扑人机大赛中,打赢了人类牌手的Libratus就是一个在超级计算机上训练的AI。Libratus甚至没有搭建神经网络,光学习了游戏规则,利用强化学习自我博弈就超越了人类水平。
在国内,百度旗下的深度学习开源平台PaddlePaddle也支持超算应用,甚至还入选了今年的ASC超算大赛总决赛。计算性能的超越让一些以往不可能的事情成为可能,比如上面那个德扑的案例,不应用神经网络、单纯靠强化学习的自我博弈在没有超算的情况下可能要花费无法想象的时间,而有了超算后,这件事情就成为了可能。
同理,一些大量数据、长时间的深度学习/深度强化学习模型训练都可以在超计算机上完成。不过,这个领域中的超级计算机的竞争对手也不少。
首先就是芯片厂商们,英伟达、IBM、高通等等厂商都在争先恐后的研发着适用于深度学习的芯片。早在3年前,IBM推出的TrueNorth就已经集成了54亿个硅晶体管,计算能力已经接近当年的超级计算机,功耗却只有65毫瓦。英伟达也曾推出过集成8个GPU的“超算系统”,计算能力也可以满足大部分人的需求。
其次就是云服务供应商,也就是上述芯片厂商的客户们。他们不光花重金搭建起来能力超群的分布式计算系统,还贴心的和TensorFlow、caffe等等深度学习框架合作,让算法可以无缝部署在系统上。阿里云在今年推出的异构计算产品最高可提供每秒75万亿次的算力,虽然比起超级计算机还差的远,但性价比却不低。
最后,还有一大批以研究算法为主的技术供应商。他们虽然不能提供算力,却可以通过种种方式压缩算法模型,让算法模型在更低算力的硬件中也能运行。比如西雅图的一个创业团队,就在一直尝试用二值化神经网络调整模型精度,试图在能耗和成果中找到一个平衡。
加上在深度学习上,高成本、软件环境复杂、数据隐私担忧等等问题仍然有待解决。综合看来超级计算机仍然不是最好的解决方案。
让人哭笑不得的是,很多人认为深度学习带来的高强度计算要求会推进超级计算机的商业化、民用应用,结果反而是带动了其他算力供应商的发展,给超级计算机造就了更多的竞争对手。
即使我们暂时还不能在生活场景中享受到超算带来的益处,但超算在天文、物理、军工上带来的贡献仍然是巨大的,如果没有超算,在研发火箭、卫星时几乎无法进行模拟计算。而超算带来的快速、高精度的模拟,为这些高精尖技术的研发节约了无法估计金钱和时间成本。或许,等我们能在火星上观光的那天,就会切实体会到超算带来的福利吧。