《AI+Science系列(一):飞桨加速CFD(计算流体力学)原理与实践》
https://baijiahao.baidu.com/s?id=1728002499252273827&wfr=spider&for=pc
前言
AI+Science专栏由百度飞桨科学计算团队出品,给大家带来在AI+科学计算领域中的一系列技术分享,欢迎大家关注和积极讨论,也希望志同道合的小伙伴加入飞桨社区,互相学习,一起探索前沿未知。
作为系列分享的第一篇,本文内容涵盖行业背景与痛点、AI+科学计算领域的前沿算法、基于飞桨的AI+科学计算产品方案、涉及的飞桨框架关键技术以及PINNs方法求解计算流体力学方腔流的案例等。
行业背景与痛点
当前AI技术在CV、NLP等领域已有了较为广泛的应用,替代传统方法完成缺陷检测、人脸检测、物体分割、阅读理解、文本生成等任务,在产业界也形成了规模化的落地。但是放眼到更加广阔的工业设计、制造等领域,仍有诸多科学和工程问题亟待解决。比如对于高层建筑结构、大跨桥梁、海上石油平台、航空飞机等,流体和结构的复杂相互作用会引起动力荷载,进而导致抖振、涡振、驰振、颤振等流致振动,影响结构安全与服役年限。数值模拟是研究工程结构流致振动的有效方法之一,但是传统数值方法需要大量的计算资源,在计算速度上有很大的局限性等等。
AI+科学计算领域
前沿算法与典型应用案例
上述的问题指向了AI+科学计算的发展: 利用深度学习技术突破维数高、时间长、跨尺度的挑战,改变科学研究范式,帮助传统行业转型。提到AI方法,大家直观的印象是大数据、神经网络模型搭建与训练。在CV,NLP等领域中也确实如此,AI方法以数据驱动,训练出神经网络以模拟图像分类、语音识别等实际问题中隐含的复杂逻辑,整体是一个“黑盒”问题。但在解决科学计算相关问题上,使用的AI方法有所变化,除了使用纯数据驱动方法解决问题外,有时候还需要加入一些物理信息约束,因此,需要更多的领域相关知识。
具体来看,在科学计算领域,往往需要针对海洋气象、能源材料、航空航天、生物制药等具体场景中的物理问题进行模拟。由于大多数物理规律可以表达为偏微分方程的形式,所以偏微分方程组的求解成为了解决科学计算领域问题的关键。神经网络具备“万能逼近”的能力,即只要网络有足够多的神经元,就可以充分地逼近任意一个连续函数。所以使用AI方法解决科学计算问题的一个思路是训练神经网络以模拟某个偏微分方程组的解函数。使用AI 方法解决科学计算问题,相对传统方法有一些潜在的优势:
(1)高维问题处理优势传统方法一般是基于有限差分、有限元、有限体积等方法,求得偏微分方程组的近似解。这些方法面临着“维度灾难”,即计算量随着维度增加快速增长。在AI方法的神经网络中,维度增加带来的计算量增加是线性的。
(2)硬件加速优势传统方法由于存在串行运算,往往难以使用GPU等硬件进行加速。AI方法中的训练和推理过程都比较容易发挥GPU等硬件优势。
(3)泛化优势AI方法解决问题分为训练和推理两个过程,一次训练,多次推理。借助神经网络的泛化能力,在某些物理参数条件下训练出的网络,在其他物理参数下也可以获得很好的模拟效果。
AI+科学计算领域中最著名的方法是PINNs(Physics-informed neural networks)方法,该方法提出一种新的复合型的损失函数,由偏微分方程组部分,边界条件部分,初始条件部分三部分组成。
由于加入了物理信息约束,该方法在没有任何输入数据的情况下,只指定边界条件和初始条件,就可以训练出神经网络拟合目标PDE的解。也有一些学者在原始PINNs方法的基础上进行改进,加入一些数据,形成偏微分方程部分、边界条件部分、初始条件部分、数据部分4部分组成的损失函数,进一步提高神经网络的模拟精度,在3D不可压的流体问题上取得了不错的结果。如下图所示,分别对三种不同case使用PINNs算法基于二维二元观察速度进行了3D流场重建,并计算了三种case中不同方向速度及压力的L2范数相对误差。可以发现PINNs方法可以精准捕捉漩涡脱落的不稳定性。
总体而言,AI为科学计算问题的解决提供了新的研究范式,无论是AI完全取代传统方法,还是AI与传统方法融合的相关工作都在快速发展,未来会更大程度地影响整个科学计算领域,成为新一代革命性的方向。
基于飞桨的
AI+科学计算产品方案
飞桨科学计算套件提供泛化的微分、积分方程等接口以及两种求解器PINNs(物理信息神经网络)和FNO(傅立叶神经算子),支撑上层应用各种微分、积分方程的求解。并且我们正在开展生态共建,联合打造多个跨领域的仿真模块,并针对各个模块开发典型应用案例。飞桨科学计算套件目前已提供达西流(Darcy Flow)、顶盖方腔流(Lid-driven Cavity Flow)等计算流体力学领域的经典算例。
支撑科学计算的
框架关键技术
飞桨科学计算开发套件整体依托于飞桨核心框架,为了支持科学计算类任务,飞桨核心框架新增了函数式自动微分接口和部分算子高阶自动微分的功能。
自动微分机制是广泛应用于深度学习框架之中微分技术。区别于符号微分和数值微分,自动微分依托深度学习框架中的计算图,在每个计算图节点内进行符号微分,并把节点间的微分结果用数值存储,进而实现比数值微分更精确,比符号微分更高效的微分机制。
《AI与PDE(一):PINNs模型的设计理念和我碰到的一些问题》
https://zhuanlan.zhihu.com/p/411843646
相关阅读材料
PINNs的源码(TF1.0)
https://link.zhihu.com/?target=https%3A//github.com/maziarraissi/PINNs
PINNs作者的blog(建议阅读)
https://link.zhihu.com/?target=https%3A//maziarraissi.github.io/PINNs/
PINNs的Pytorch代码
https://link.zhihu.com/?target=https%3A//github.com/jayroxis/PINNs
DeepXDE的论文(该论文涉及到很多对PINNs模型的理论分析,建议阅读)
https://link.zhihu.com/?target=https%3A//arxiv.org/abs/1907.04502
《飞桨DeepXDE用例验证及评估》
https://zhuanlan.zhihu.com/p/617625201