CFD+ML チュートリアル

機械学習の翼設計への応用

このチュートリアルでは、機械学習技術を使用して設計最適化ワークフローを実行する方法を紹介します。具体的には、PCA(主成分分析)法を用いて、2次元翼のCFDシミュレーションのセットを高速化します。次に、このデータセットを使用して、ガウス過程回帰によるサロゲートモデルを開発します。最後に、このサロゲートモデルを使用して、さまざまな制約と目標の下でこの翼の高速最適化を行います。我々は、このプロセス全体を2つのステージに分割しました。

第一段階は、下の緑色のボックスで示されるように、翼の形状データの前処理と次元削減を行います。元の翼形データはUIUC翼形座標データベースから取得し、前処理された翼形データベースはここで提供されるので、ユーザはこのプロジェクトを再現するために直接使用することができます。

赤枠で示した第2ステージは、サロゲートモデルを構築するための高忠実度のトレーニングサンプルを生成する。訓練サンプルはPCAに基づく低次モデル(ROM)により加速されます。十分なトレーニングサンプルが得られると、サロゲートモデルが構築され、最適化に使用されます。

図1:データ生成、学習、最適化処理の全体フロー図。

遷音速翼の最適化に関するビデオチュートリアル

遷音速翼型最適化ワークフローチュートリアル

ここでは,Rescale プラットフォームで機械学習 (主成分分析,PCA)により遷音速翼の最適化を加速する方法を紹介します.数値流体力学(CFD)解析ソフトウェアには、圧縮性乱流の定常ソルバーであるOpenFOAM rhoSimpleFoamソルバーを使用しました。遷音速翼の最適化では,設計点を Ma=0.7 とした.乱流モデルはk-omega Shear Stress Transport (SST)を使用しています。次元削減のためにscikit-learnからPCAライブラリをインポートし、サロゲートモデルとしてガウス過程回帰法(Krigingとしても知られています)を使用しています。最適化関連のツールはMDO Lab (Gaetan Kenway et al, 2010; Peter Lyu et al, 2014; Ping He et al, 2018; Neil Wu et al,2020) から、メッシュ自動生成パッケージ pyHyp と最適化ツール pyOptSparse が使用されています。

図2:ジョブのワークフロー

この仕事は、まず低次元空間にサロゲートモデルを構築するためのトレーニングサンプル(1300サンプル)を生成し、サロゲートモデルをトレーニングし、最適化にサロゲートモデルを適用して最適な設計を見つけるというものです。

データ生成のステップでは,2 段階のアプローチで処理を高速化する.最初のステージでは,高忠実度の CFD シミュレーショ ンを 100 回実行し,フリーストリームの状態から完 全に収束させます.そして,この 100 回の実行結 果を利用して,流れ場を予測する低次元モデルを 作成し,残りの 1200 サンプルのシミュレーションを 初期化します.このステップの第 2 段階では,この 1200 件の高精度シミュレー ションを,自由液面ではなく,この予測された流れ場 から開始することによって実施しました.これにより,より少ない反復回数で CFD シミュレーションを収束させることができ た.その結果,後述するように,学習データ の精度を犠牲にすることなく,壁面時間を大幅に短縮 し,全体的な計算効率を向上させることができた. この1300個の学習サンプルを生成した後、第二段階として実際のサロゲートモデルを構築し、検証を行う。最後に、ジョブの第3段階として、サロゲートモデルを使用して、最適化ループで必要となる結果を迅速に(例えば、ほぼリアルタイムで)予測します。

インポートジョブセットアップボタンをクリックして直接ジョブにアクセスし起動するか、下のジョブ結果取得ボタンをクリックして結果を見ることができます。

入力ファイル

このジョブの入力ファイルは、圧縮ファイルTransonicAirfoilOptimization.zipです。

ソフトウェア

赤色で表示されているテキストボックス欄に「MDAO Framework」と入力し、アイコンをクリックして「MDAO Framework」を選択します。

図4:ソフトウェアの選択

Command」フィールドを次のように編集します。

pip install -U scikit-learn

pip install scikit-optimize

./Allrun

ここでは、Scikit-learnから機械学習ライブラリをインストールします。Rescaleプラットフォームは、シミュレーションを開始する前に、Allrunスクリプトと圧縮アーカイブTransonicAirfoilOptimization.zipに含まれる他のファイルを自動的に展開します。

ハードウェア

図5:ハードウェアの選択

編集するハードウェアの設定は、Core TypeとNumber of Coresの2つです。今回は、Core TypeをEmerald、Number of Coresを8とする。 Rescaleには、On-DemandとOn-Demand ProというCore Typeのオプションがある。今回は、コスト削減のためにOn-Demandを選択し、そうでない場合はOn-Demand Proを選択します。これらのオプションの詳細については、こちらをご覧ください。

Walltimeを変更することで、Jobの最大継続時間を設定することができます。ここでは3時間としています。 ジョブ時間の制限については、こちらで詳しく説明しています。

保存]、[次へ]の順にクリックし(このジョブでは、オプションの後処理工程は省略されます)、[次へ]を再度クリックします。これで、この図のような概要が表示されるはずです。

図6:設定の確認

設定を確認し、[送信]ボタンをクリックするとジョブが開始されます。

ステータス

ジョブ実行後のステータス画面は以下の通りです。1300個のトレーニングサンプルの生成が終了するまでに約2時間かかります。

図7:ジョブ実行後のステータス画面

ステータスのページでは、出力ファイルの内容をライブビューでリアルタイムに確認することができます。これは、ジョブの進行状況を監視するのに非常に有効です。この場合、特に注目すべき出力ファイルはprocess_output.logです。

また、生成されたすべてのデータセットにWebページ上のJupyterノートブックでアクセスし、ノートブックを作成することでデータの後処理や解析を実行することができます。

注:ロードしたソフトウェアからすべてのライブラリをjupyter notebookにインポートするには、ターミナルで以下のコマンドを実行し、Python-uenvという新しいカーネルを作成し、notebookで使用できるようにします。

python -m ipykernel install --name ipython --display-name 'Python-uenv' --user

図8:Jupyter notebook環境

Results

ジョブが完了すると、Resultsページが表示されます。このプロセスでは、OpenFOAMの出力ファイルを含む1300個のサンプルフォルダが生成されます。 設計変数、揚力係数、抗力係数は、サロゲートモデル学習用にtrain_sample.datというファイルに保存されます。ここでは、ジョブ実行後のクラスタ停止時間が長くならないように、これらのフローフィールドファイルを削除することにします。すべてのサンプルの流れ場の結果を保持したい場合、DOE_workflow_baseairfoil_step3.pyの最後の2行目のコメントを解除し、これらのファイルを削除する代わりに、zip圧縮して保存するように変更することが可能です。

それでは、遷音速機体最適化の結果をご覧ください。

下図のDesignSpace.pngにおいて、灰色の部分は、低次元設計空間からラテンハイパーキューブサンプリング(LHS)によりサンプリングされた1300翼の設計空間を示しています。赤線がベース翼であるRAE2822です。

図9:ベースライン翼型とデザインスペース

サロゲートモデルの検証を SurrogateModel.png の図に示しました。下のプロットは、揚力係数(CL)と抗力係数(CD)の予測サンプル(赤い点)とテストサンプル(黒い点)を比較したものです。平均絶対誤差はCLで2.e-4、CDで3e-05であり、構築したサロゲートモデルの精度を検証しています。また、完全に学習されたサロゲートモデルは、CD用のgpr_cd.savとCL用のgpr_cl.savとして保存出力されています。

図10:サロゲートモデルの検証

最適化履歴はファイルhisoty_airfoil.hstに保存されます。目的(CD)と制約条件(最大厚みとCL)の収束履歴を図 Opt_history.png に示します。青い線は全最適化過程で評価された全サンプル、赤い点線は各反復の制約を満たす最適なサンプルを表しています。

図11:最適化履歴
CD (count)1 drag count = 0.0001CL
RAE2822990.47
Optimal by PSO93.70.466
Verify by CFD94.30.465
Table 1: Optimization results comparison

表2は、MDOLabタイルが提供する粒子群最適化(PSO)により求めた最適化結果である。RAE2822は、最大厚みがt=12%である。M∞=0.7では、Cd=0.0099、CL=0.47である。CL=0.47付近を維持し、最大厚み=0.12という制約のもと、CD=93.7という最適形状を見出した。

図12:ベースラインと最適化された翼形状の比較。

結論

このプロジェクトでは、応用機械学習技術を利用して、Rescaleプラットフォーム上でのCFDシミュレーションと最適化処理を8倍高速化しました。まず、大規模な翼型データベースの次元を削減するためにPCAを適用しました。次に、PCAに基づく低次モデルを構築して低忠実度の流れ場予測を行い、トレーニングデータ生成に必要な高忠実度シミュレーションの収束を加速させました。最後に、この完全に生成されたトレーニングデータに基づいて、ガウスプロセスベースのサロゲートモデルを構築し、与えられた制約の下でベースライン翼の抗力を最小化するための高速最適化ループに使用することができました。

各高忠実度ケースの実行には、初期条件から開始した場合は約50秒(8コア/サンプル)、予測された流れ場から開始した場合は約4秒(8コア/サンプル)かかる。学習データを素直に生成した場合、つまり中間サロゲートモデルを使用して中間加速を行わない場合、全データセットの生成に約17時間かかる。しかし、中間加速を使用して、中間予測で高忠実度シミュレーションの大部分を初期化した場合、データ生成はわずか2時間で完了します。サロゲートモデルのトレーニングにかかる時間は、トレーニングデータの生成に比べればごくわずかです。最終的なサロゲートモデルのトレーニングに必要なデータの生成には数時間かかりますが、一度トレーニングすれば、モデルは十分に正確な予測を行い、それぞれ1秒の数分の一の誤差で済みます。その結果、学習データ生成のためのフロントローディングコストは、その後の最適化研究において、異なる制約と目的を持つ複数の最適化を伴う可能性があるため、大幅に償却されることになります。

結論として、高忠実度シミュレーションを支援または代替するサロゲートモデルの使用により、設計と最適化研究が大幅に加速され、研究のたびに高忠実度シミュレーションを繰り返すことなく、制約や目的を動的に変更できることが実証されました。