Autodesk/XLB

XLB: Accelerated Lattice Boltzmann (XLB) for Physics-based ML

XLB – 미분 가능한 격자 볼츠만 라이브러리 (Python)

소개 – XLB는 유체 역학 시뮬레이션을 위한 격자 볼츠만 방법(LBM)을 구현하고 모든 단계를 미분 가능하게 만드는 Python 라이브러리입니다. 세 가지 백엔드를 통해 CPU, 단일 GPU, 다중 GPU 및 TPU 하드웨어에서 실행할 수 있습니다:

  • JAX – JAX의 XLA 컴파일러를 활용하여 CPU, GPU, TPU에서 작동합니다.
  • NVIDIA Warp – 최첨단 단일 GPU 성능을 위한 맞춤형 CUDA 커널 프레임워크입니다.
  • Neon – 격자 세분화(다중 해상도) 및 다중 GPU 확장을 추가하는 Autodesk의 다중 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 – 단일 GPU (Warp) 또는 다중 GPU (Neon/JAX)에서 대규모 LBM 시뮬레이션(수억 개의 셀)을 실행합니다.
  • 다중 해상도 연구 – 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가 필요한 연구자와 엔지니어에게 적합합니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트