AI for Science系列(一) :飛槳加速CFD(計算流體力學)原理與實踐

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)方法,該方法提出一種新的複合型的損失函數,由偏微分方程組部分,邊界條件部分,初始條件部分三部分組成。

Lu, L., Meng, X., Mao, Z., & Karniadakis, G. E.(2021). DeepXDE: A deep learning library for solving differential equations.SIAM Review, 63(1), 208–228. https://doi.org/10.1137/19m1274067

由於加入了物理信息約束,該方法在沒有任何輸入數據的情況下,只指定邊界條件和初始條件,就可以訓練出神經網絡擬合目標PDE的解。也有一些學者在原始PINNs方法的基礎上進行改進,加入一些數據,形成偏微分方程部分、邊界條件部分、初始條件部分、數據部分4部分組成的損失函數,進一步提高神經網絡的模擬精度,在3D不可壓的流體問題上取得了不錯的結果。如下圖所示,分別對三種不同case使用PINNs算法基於二維二元觀察速度進行了3D流場重建,並計算了三種case中不同方向速度及壓力的L2範數相對誤差。可以發現PINNs方法可以精準捕捉漩渦脫落的不穩定性。

Cai, S., Mao, Z., Wang, Z., Yin, M., &Karniadakis, G. E. (2022). Physics-informed neural networks (PINNs) for fluidmechanics: a review. Acta Mechanica Sinica. https://doi.org/10.1007/s10409-021-01148-1

總體而言,AI爲科學計算問題的解決提供了新的研究範式,無論是AI完全取代傳統方法,還是AI與傳統方法融合的相關工作都在快速發展,未來會更大程度地影響整個科學計算領域,成爲新一代革命性的方向。

基於飛槳的AI+科學計算產品方案

飛槳科學計算開發套件以開源深度學習框架飛槳爲核心,結合科學計算領域專有知識,搭配高性能的基礎設施異構平臺,提供給科研開發者簡單易用的AI+科學計算產品方案。  

百度飛槳在2021年12月正式發佈飛槳科學計算套件 0.1版本,依託底層核心框架在高階自動微分功能上的技術革新,快速高質量推進飛槳在AI+科學計算領域的能力建設。

飛槳科學計算套件提供泛化的微分、積分方程等接口以及兩種求解器PINNs(物理信息神經網絡)和FNO(傅立葉神經算子),支撐上層應用各種微分、積分方程的求解。並且我們正在開展生態共建,聯合打造多個跨領域的仿真模塊,並針對各個模塊開發典型應用案例。飛槳科學計算套件目前已提供達西流(Darcy Flow)、頂蓋方腔流(Lid-driven Cavity Flow)等計算流體力學領域的經典算例。

支撐科學計算的框架關鍵技術

飛槳科學計算開發套件整體依託於飛槳核心框架,爲了支持科學計算類任務,飛槳核心框架新增了函數式自動微分接口部分算子高階自動微分的功能。

 

自動微分機制是廣泛應用於深度學習框架之中微分技術。區別於符號微分和數值微分,自動微分依託深度學習框架中的計算圖,在每個計算圖節點內進行符號微分,並把節點間的微分結果用數值存儲,進而實現比數值微分更精確,比符號微分更高效的微分機制。

相比傳統AI任務,科學計算任務對框架提出了新的需求:

(1)由於損失函數中存在方程部分,功能上要求支持更高階的微分;

(2)在用戶接口上,需要提供更加貼近數學公式的函數式自動微分接口。

 

爲了支持高階微分,我們一方面在框架中增加高階導數算子,另一方面也在設計基礎算子體系,支持不限階數的自動微分。

在自動微分接口方面,我們提供 jacobian,hessian,jvp,vjp等函數式自動微分接口,讓用戶可以用更加自然的方式完成方程構建。

案例介紹:PINNs方法求解計算流體力學,頂蓋驅動方腔流

Lid-driven Cavity Flow(頂蓋驅動方腔流)是CFD(計算流體力學)領域中一個經典benchmark問題,常用於驗證計算方法,我們選擇了這個問題作爲CFD領域中第一個典型應用案例。頂蓋驅動方腔流中包含一個充滿液體的方形腔體。這個腔體三面封閉,頂部開放,頂部有水平方向的速度用來驅動方腔內的流體流動,其他三個腔壁爲無滑動邊界,速度爲零。在這個問題下,我們需要求解穩態不可壓縮的Navier-Stokes方程。

其中u爲頂蓋速度,ρ爲流體密度,p爲壓力。首先我們在二維區域內選定計算域,構成正方形,並在x、y兩個方向上進行離散選點。對四個壁面的邊界條件定義如下:

我們擬定頂蓋初始速度爲1,雷諾數爲10的情況下,使用PINNs方法對方腔內流場進行模擬。我們求解定常NS方程,設定自變量空間座標(x, y)作爲PINNs網絡的輸入,網絡的輸出爲流場中在x,y兩個方向的速度(u, v)。損失函數定義爲控制方程的損失函數與邊界條件的損失函數乘以各自權重並相加。神經網絡通過梯度下降反向傳播等機制,將損失函數數值收斂到最小,因此將NS方程求解問題轉化爲優化問題。

神經網絡loss定義:

調用PINNs求解器設置訓練參數:

預測流場速度(u, v)並轉化爲vtk文件進行可視化:

結果展示:

在低雷諾數下,流體粘性起到很大作用,在方腔的左右下方兩個邊角還未形成明顯的渦,速度梯度均勻。在PINNs方法下,和傳統方法(OpenFOAM)結果對比水平方向最大均方誤差爲7.38R-04,垂直方向最大均方誤差爲5.99E-04。推理計算量和網格呈線性關係,推理速度大於傳統方法的12~626倍。

飛槳科學計算套件Github:

https://github.com/PaddlePaddle/PaddleScience

相關閱讀

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章