2020-05-17 21:09:13
作者 | 未来论坛
编辑 | 蒋宝尚
AI技术,特别是机器学习和强化学习方法,基于实验或者计算产生的数据对所求解的问题进行可计算建模,从而得到复杂问题的有效解决方式,这对当今科学计算领域的研究范式已经产生了巨大影响。
与此同时,以深度学习为代表的AI在内部机理、数学理论、基础算法等方面尚不清楚、不完善,AI方法的稳健性、精确度等尚缺乏严格的数学论证,这正对其进一步发展造成严重阻碍。然而,结合机理的思维方式将有可能对面向数据的AI技术,提供新的洞见与研究途径。
2020年5月9日,在未来论坛青创联盟YOSIA Webinar中,开展了AI+科学计算的主题讨论,共有五位嘉宾发表演讲,从AI for Scientific Computing和Scientific Computing for AI两个不同的视角进行前沿讨论。
其中来自北京大学的杨超教授做了题目为“浅论超级计算、人工智能与科学计算的融合发展”的报告。在报告中杨老师介绍到:科学计算和超级计算之间相互促进、共同发展的闭环已经形成了几十年了,人工智能近年巨大的成功为科学计算带来了新思路、新方法、新工具,而科学计算的严谨体系则有助于提升现有人工智能技术的可解释性。
另外,杨老师还以求解偏微分方程举例说明了神经网络这一工具为科学计算带来的帮助,并阐述了超级计算、科学计算、人工智能从模型、算法、软件、硬件多方位融合发展的观点。
编者:感谢杨超教授对本文的审核与校对。
从主流的科研范式来看,认识世界发现世界的三种最主要的科研手段是实验、理论和计算,最近十来年随着数据科学的兴起,基于数据的科学发现被认为是第四种重要的科研范式。而围绕计算和数据有三个非常独立但又相互关联很大的方向,超级计算、科学计算和人工智能。
从计算科学诞生之初,超级计算和科学计算的关系已经建立起来。它们之间的关系可以概括为:超级计算是支撑科学计算发展的重要工具,为了支撑科学计算的发展,科学计算作为需求牵引、拉动超级计算机性能不断提升。
早在电子计算机诞生之前,超级计算的思想萌芽就已产生,其中一个代表性的工作是英国数学家理查德森1922年提出来“预报工厂”的概念,这个概念被称为“理查德森之梦”。
为什么说是一个梦?因为1922年当时没有电子计算机,他提出的“预报工厂”主要用于预报天气。众所周知,天气预报是科学计算领域最有代表性一类应用。预报工厂包括64000台Human Computers,每台“计算机”由一个人完成相关计算。预报工厂中还有专人用信号灯指挥不同的“计算机”进行数据交换。
“预报工厂”的计算目标是大气,把计算区域分成64000个部分,每个人负责一块,大家分别计算,并有人去协调指挥,这其实体现了早期人们畅想超级计算的一种朴素思想。
随着世界第一台电子计算机ENIAC的问世,理查德森之梦终于得以实现,ENIAC重达几十吨,占地面积非常大,并且耗电惊人。据说每当ENIAC开机的时候,整个费城的灯都暗了。1950年,冯诺伊曼和他的助手改造了ENIAC的可编程性,并在这个基础上编写了世界上第一个天气预报程序,成功完成了24小时预报,实现了理查德森之梦,也成为了科学计算的蓬勃发展的一个重要开端。
如今,历经几十年的发展,超算已经在科学计算的方方面面,例如航空、航天、气候、能源、材料、安全、天文等领域中发挥了不可取代的支撑作用。2013年美国能源部曾经统计过一些典型的科学计算应用中的计算需求,这些计算需求即便放在今天来看仍然是很大。
在科学计算巨大需求的牵引之下,超级计算机的计算性能按照“十年千倍”的速度迅猛攀升。我们都知道摩尔定律,摩尔定律的是说个人计算机的性能提升速度是每18到24个月性能翻一番,而超级计算机可以达到每年性能翻一番,“十年千倍”的发展速度。
现在超算发展的一个重要趋势是:异构众核,即同一个系统有不同类型的计算核心,而且每个芯片上要集成大量的计算核心。为什么会沿着异构众核趋势发展?
其实这与计算需求关系不大,更多的是超级计算发展本身的技术条件限制造成的。现在所有的超级计算机都是基于冯诺伊曼体系结构,冯诺伊曼体系结构的“算”-“存“分离特性会导致现有工艺下,为了满足计算需求,能够选择的设计方案十分有限。这样的系统现在越来越多,同一个系统有很多计算核心,而且计算核心还不一样,从设计算法和研究软件角度来说面临很大挑战。
例如求解偏微分方程的经典并行算法——区域分解算法,该算法一般假定每个子区域应该是大致相同,而且满足一些数学上的条件,例如子区域应具有凸性和的单连通性等。在异构系统上,这些前提假定已经难以成立,需要从思想上突破传统算法的约束。
对此,我们提出了一套异构区域分解算法,在传统的区域分解思想基础上,对每个子区域进行第二次切分,切分时排除掉之前理论上的假定,包括凸区域、单联通区域之类的约束,目标就是要与现有的异构系统硬件配置相适配。
虽然理论上很难分析这种异构区域分解算法的收敛性,但是在实际应用中,这种算法达到很好的应用效果。HPCG是基于偏微分方程求解的高性能计算机的排名标准,我们把这个算法应用于HPCG优化里,取得了很好的效果,收敛性非常好,帮助天河2号拿到2016年的HPCG世界排名第一。
如前所述,科学计算和超级计算之间相互促进、共同发展的闭环已经形成了几十年了。最近十来年随着大数据兴起,人工智能技术得到复兴并呈爆发式发展。此时,人工智能作为一个“新”角色进来之后又起什么作用呢?
至少两个方面的作用,首先从超算角度来看,超算原本主要用来支撑科学计算,现在有了人工智能这种新需求,超算必然也要为人工智能提供强大算力支撑。反过来由于人工智能的本身特性又会改变超算的发展趋势。
第二,人工智能和科学计算的关系。人工智能有一些好的数学工具和思想方法可以作为新思路、新方法、新工具提供给科学计算,科学计算又有多年发展的基础和较为完善的理论框架,可能帮助我们实现可解释性的人工智能。
AlphaGo和AlphaGo Zero作为人工智能最近几年非常著名的突破,先后打败了人类的围棋冠军。像AlphaGo Zero这种大型的AI应用,如果想一天之内完成它的训练,我们所需要的计算能力已经超过1E ops,事实上过去6年训练神经网络的算力需求已经增长了30万倍,这远远超出超级计算机“十年千倍”的计算性能提升速度。所以现在有观点认为计算能力是人工智能发展的非常重要的基础,甚至有人认为算力常胜。
与此同时,人工智能的发展深刻改变了超算发展趋势,尤其是在2017年前后,随着大规模AI应用的涌现,新型超级计算机设计也逐渐开始考虑人工智能这类应用,最有代表性的机器就是美国的Summit,计算性能世界排名第一的系统,这台机器科学计算的双精度浮点计算性能是148Pflops/s,但是它还通过配备特殊的Tensor Core计算单元,可以实现3.4 Eops/s的AI计算性能。与此同时国际上谷歌、IBM、寒武纪、华为等大厂也都先研发了各种AI处理器。最近,谷歌Jeff Dean等人发展了采用AI设计芯片的新技术,大幅度提升芯片数据效率。毫不夸张地说,AI已经对硬件设计产生方方面面的深刻影响。
在超级计算机系统设计方面,举个例子,牛津大学2018年出版了一个白皮书《解码中国的AI梦》,其中有一个观点:“中国建设超级计算机方面的成功表明,它有可能赶上AI硬件领域世界领先的企业……如果其他国家专门开发针对AI新型超级计算机,中国在制造传统超级计算机方面的卓越表现可能并不重要“。顺着这个思路我们去思考,也许有一天,可能很快我们会看到专门用于AI计算的大型超级计算机。
现在让我们回到偏微分方程求解。借助神经网络这类数学工具,我们是不是可以解一些之前难以求解的问题呢?
在这里,我列出了三个比较有特色的方程,它们都有强烈的非线性,并且计算区域具有不规则和高维的特点。比如第一个方程的计算区域虽然是二维,但是区域边界非常复杂。中间是三维的例子,其计算区域是一个扭曲的torus形成,采用经典方法很难准确的刻划。第三个是100维的超立方体,它高维的性质决定了经典的方法很难去求解。
通过神经网络的方法可以很好地求解这类问题,我们提出了一套新方法——PFNN,这一方法的最大特点是只需要求解无约束优化问题,不需要引入任何惩罚项。
传统的神经网络求解方法或多或少会引入惩罚项,但是通过采用一些手段去重新构造解空间,可以设法避免这个事情。把一个约束优化问题变成完全没有约束的优化问题,数值计算结果表明,PFNN方法可以很好的改善问题的求解精度和计算效率。
下面考虑如何实现并行求解。一个很自然的思路是直接做分布式训练,但这样的处理没有很好的利用问题本身的性质。偏微分方程的求解,在经典的科学计算领域,有一个非常好的并行算法——区域分解。
我们将区域分解的思想用在神经网络求解偏微分方程中。比如可把一个方形的区域一分为四之后,增加一点重叠度,就可以把单个神经网络训练问题分成子区域网络的训练。通过实测发现,这样的手段不但能够提供很好的并行加速,同时问题的计算精度也同时得到改善,实现了计算精度和计算速度的双重收益。
从未来的发展趋势来看,人工智能、超级计算、科学计算会怎样发展?三个方向共同目的是通过某种手段连接真实世界和数字世界。真实世界就是人类在不断设法了解、改造的客观世界。数字世界是我们能够操作、能够任意实验的基于计算机的数字化虚拟世界。从真实世界到数字世界,至少存在四个角度,人工智能可以与科学计算和超级计算结合,发挥作用。
第一,模型角度。经典的科学计算方面,很多问题是建模方面很困难,或者模型很准确但是不可计算或者很难计算,或者是模型可以计算但不够准确。这时候基于人工智能的手段也许可以构造更好的模型,比如现在湍流模型,分子力场模型,天气预报领域的物理过程参数化等都有成功案例。
第二,算法角度。刚才举的PFNN的例子就是算法角度,人工智能的发展有很多的很好的数学工具,思考问题的视角。借鉴里面好的数学工具,比如神经网络,可以应用在一些科学计算领域的经典问题,比如线性方程求解、微分方程组求解、最优化问题求解等。
第三,软件角度。光有算法和模型是不够的,还需要在计算机上实现,写成软件,实现出来。这个过程涉及到大量的编程工作,而且很容易出错。这时候如果借助机器学习等手段,可以在编译优化,自适应调优,自动代码生成等方面把人们从繁重的体力劳动中释放出来。
最后就是硬件角度。AI事实上已经深刻改变了超算硬件的发展,而且未来还会有更多改变,比如计算单元的设计、芯片的设计、处理器的设计、超算系统的设计等。