Autodesk/XLB
XLB: Accelerated Lattice Boltzmann (XLB) for Physics-based ML
XLB – 微分可能な格子ボルツマンライブラリ (Python)
概要 – XLBは、流体動力学シミュレーションのための格子ボルツマン法(LBM)を実装し、そのすべてのステップを微分可能にするPythonライブラリです。3つのバックエンドを通じて、CPU、シングルGPU、マルチGPU、TPUハードウェア上で実行可能です:
- JAX – JAXのXLAコンパイラを活用し、CPU、GPU、TPUで動作します。
- NVIDIA Warp – 最先端のシングルGPU性能を実現するカスタムCUDAカーネルフレームワークです。
- Neon – AutodeskのマルチGPUプログラミングモデルで、格子細分化(マルチ解像度)とマルチGPUスケーリングを追加します。
カーネルが微分可能であるため、XLBは機械学習パイプライン(例:勾配ベースの設計最適化、物理情報ニューラルネットワーク、随伴変数法を用いた形状最適化など)に組み込むことができます。
クイックスタート (READMEより)
# CPUのみ (特別なハードウェアなし)
pip install xlb
# Warpを使用したシングルGPU (最速のシングルGPUパス)
pip install "xlb[warp]"
# CUDA対応GPU上のJAX
pip install "xlb[cuda]"
# TPU上のJAX
pip install "xlb[tpu]"
# Neonを使用したマルチGPU / マルチ解像度 (LinuxおよびPython 3.11‑3.14が必要)
git clone https://github.com/Autodesk/XLB.git
cd XLB
pip install -r requirements.txt
pip install '.[neon]'
同一環境でWarpとNeonを混在させないでください。
主要機能 (READMEより)
| カテゴリ | 機能 |
|---|---|
| バックエンド | JAX, NVIDIA Warp, Neon (マルチGPU, 格子細分化) |
| LBMモデル | BGK, KBC (高レイノルズ数で安定), Smagorinsky LES |
| 格子セット | D2Q9, D3Q19, D3Q27 (KBCに必要) |
| 境界条件 | 平衡, 完全/半分バウンスバック, Zou/He, 正規化, 外挿流出, 補間バウンスバック, ハイブリッドなど |
| 微分可能性 | すべての衝突およびストリーミングカーネルはJAX互換であり、初期場、形状、材料パラメータに関する勾配計算が可能 |
| スケーラビリティ | シングルGPU (Warp), マルチGPU (Neon), JAX shard‑mapによる分散マルチGPU/TPU |
| 精度 | 混合精度 (ストレージと計算を分離) |
| I/O & 可視化 | PyVistaによるVTK (バイナリ/ASCII), gzip付きHDF5/XDMF, PhantomGazeによるインサイチュGPUレンダリング, Orbaxによるチェックポインティング, 画像スライス, trimeshによるボクセル化 |
| 機械学習統合 | Flax, Haiku, Optax等と連携。微分可能な境界条件を提供 |
| ロードマップ | コア外シミュレーション, ロスレスGPU圧縮, 流体‑熱結合, 随伴形状最適化, ML加速ソルバー, 次数低減モデル |
代表的なユースケース
- 物理ベースML研究 – 流体シミュレータをニューラルネットワークの損失関数に組み込み、シミュレーションを通じて逆伝播させることで、制御ポリシーや逆設計を学習します。
- 勾配ベースの設計最適化 – 形状(翼型、車体、建物レイアウト)を、抗力/揚力の目的関数を形状に対して微分することで最適化します。
- 高性能CFD – 大規模なLBMシミュレーション(数億セル)を、単一GPU (Warp) または多数のGPU (Neon/JAX) で実行します。
- マルチ解像度研究 – Neonの格子細分化を使用して、必要な場所(壁面付近など)に解像度を集中させ、メモリ消費を抑えます。
- 教育 / 研究プロトタイピング – 純粋なPython APIとNumPyライクな構文により、CUDAカーネルを書かずに実験が可能です。
詳細情報
- 例 – リポジトリの
examples/フォルダには、風力タービン、NACA翼型、DrivAer車モデル、建物内の気流、蓋駆動キャビティ、微分可能最適化デモの実行可能なスクリプトが含まれています。 - 論文 – XLB: A differentiable massively parallel lattice Boltzmann library in Python (Computer Physics Communications, 2024) にベンチマーク数値と検証の詳細が記載されています。
- 引用 – XLBを使用した研究を発表する場合は、メインの論文を引用してください。格子細分化を使用する場合は、READMEに記載されているNeon関連の会議論文も併せて引用してください。
ライセンス
Apache 2.0 – 学術および商用利用は無料です。
結論 – XLBは、高性能流体シミュレーションと現代の微分可能プログラミングを橋渡しする、本格的なプロダクショングレードのライブラリです。機械学習主導の設計や最適化タスクのために微分可能な、高速でスケーラブルなCFDを必要とする研究者やエンジニアに最適です。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト