pyro-ppl/numpyro

Probabilistic programming with NumPy powered by JAX for autograd and JIT compilation to GPU/TPU/CPU.

해결하는 문제

NumPyro는 모델에 대한 베이지안 추론을 수행하도록 설계된 확률적 프로그래밍 라이브러리입니다. JAX를 활용하여 자동 미분 및 Just-In-Time (JIT) 컴파일을 수행함으로써 확률적 프로그래밍의 느린 추론 속도 문제를 해결하며, 모델이 CPU, GPU 및 TPU에서 효율적으로 실행될 수 있도록 합니다.

작동 원리

NumPyro는 Pyro 확률적 프로그래밍 언어에 대해 NumPy와 유사한 백엔드를 제공합니다. JAX를 사용하여 추론 알고리즘의 전체 통합 단계를 XLA 최적화 커널로 컴파일하여 Python 오버헤드를 줄입니다. 이 라이브러리에는 포괄적인 분포 클래스, 제약 조건 및 쌍사 변환(bijective transforms)이 포함되어 있으며, 사용자 정의 추론 알고리즘을 구현하기 위한 효과 핸들러를 지원합니다.

대상 사용자

복잡한 확률 모델링 및 베이지안 추론을 수행해야 하는 연구자 및 개발자, 특히 Pyro 또는 PyTorch 분포 API에 익숙한 분들을 대상으로 합니다.

주요 특징

  • JAX 기반 성능: JIT 컴파일 및 autograd를 사용하여 하드웨어 가속기에서 MCMC 및 변분 추론을 가속화합니다.
  • 핵심 MCMC 알고리즘: No-U-Turn Sampler (NUTS), Hamiltonian Monte Carlo (HMC), 이산 변수를 위한 MixedHMC, 대규모 데이터 세트를 위한 HMCECS를 구현합니다.
  • 변분 추론: 이산 잠재 변수를 포함한 모델을 위한 유연한 가이드를 갖춘 자동 미분 변분 추론 (ADVI)을 지원합니다.
  • 유연한 분포: 광범위한 분포 클래스를 제공하며 TensorFlow Probability (TFP)의 분포를 지원합니다.
  • Python에서 C++급 속도: Iterative NUTS를 통해 NUTS 트리 구축 단계에서의 Python 오버헤드를 제거합니다.

관련

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