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가 필요한 연구자와 엔지니어에게 적합합니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트