Skip to main content
QUICK REVIEW

[논문 리뷰] Pigeons.jl: Distributed Sampling From Intractable Distributions

Nikola Surjanovic, Miguel Biron-Lattes|arXiv (Cornell University)|2023. 08. 18.
Gaussian Processes and Bayesian Inference인용 수 6
한 줄 요약

Pigeons.jl은 복잡하고 비가역적인 확률분포—다중모달 사후분포나 고차원 분포와 같은—에서 분산형, 재현 가능한 샘플링을 가능하게 하는 Julia 패키지로, 강력한 병렬성 불변성에 기반한 새로운 접근 방식을 사용한다. 동일한 시드를 사용할 경우 단일 스레드, 다중 스레드, 분산형(MPI) 실행 환경에서 동일한 출력을 보장하여 과학적 재현 가능성과 랜덤화된 병렬 MCMC 알고리즘의 디버깅을 단순화한다.

ABSTRACT

We introduce a software package, Pigeons.jl, that provides a way to leverage distributed computation to obtain samples from complicated probability distributions, such as multimodal posteriors arising in Bayesian inference and high-dimensional distributions in statistical mechanics. Pigeons.jl provides simple APIs to perform such computations single-threaded, multi-threaded, and/or distributed over thousands of MPI-communicating machines. In addition, Pigeons.jl guarantees a property that we call strong parallelism invariance: the output for a given seed is identical irrespective of the number of threads and processes, which is crucial for scientific reproducibility and software validation. We describe the key features of Pigeons.jl and the approach taken to implement a distributed and randomized algorithm that satisfies strong parallelism invariance.

연구 동기 및 목표

  • 분산형 및 병렬 MCMC 샘플링에서 스레드 수나 프로세스 수에 따라 출력이 달라지는 문제를 해결하기 위해.
  • 베이지안 추론과 통계역학에서 흔한 복잡한 고차원 또는 다중모달 분포에서의 샘플링을 위한 확장 가능하고 사용자 友好的한 인터페이스를 제공하기 위해.
  • 기존 도구에서 접근이 어려운 경우가 많은 기댓값 ∫f(x)π(x)dx와 정규화 상수 Z의 정확한 추정을 가능하게 하기 위해.
  • 기본적인 연속형 또는 이산형 매개변수 공간을 초월해 조합적 객체(예: 계통발생수 나무)를 포함한 임의의 데이터 유형을 지원하기 위해.
  • 강력한 병렬성 불변성(SPI)을 통해 정확성과 검증 용이성을 확보하여, 다양한 실행 구성에서 결정론적 디버깅과 테스팅을 가능하게 하기 위해.

제안 방법

  • 패키지는 핵심 샘플링 알고리즘으로 분산형 비가역적 병렬 온도 조절을 구현하여 복잡한 목표 분포의 효율적 탐색을 가능하게 한다.
  • 단일 시드에서 독립적이고 재현 가능한 난수 스트림을 생성하기 위해 SplittableRandoms.jl 패키지를 사용하여 스레드 및 프로세스 수에 관계없이 결정론성을 확보한다.
  • Julia의 멀티스레딩 및 MPI 인터페이스를 활용하여 단일 머신, 다중 코어 시스템, 수천 개의 노드를 가진 클러스터에서도 실행 가능하도록 지원한다.
  • 사용자는 비정규화된 밀도 γ(x)를 지정하고, Pigeons.jl은 기댓값 계산이나 정규화 상수 Z 추정을 위한 샘플을 반환한다.
  • 모든 스레드와 프로세스에서 마스터 난수 생성기를 결정론적으로 분할하여 강력한 병렬성 불변성을 강제 적용함으로써 난수 생성 과정에서의 비결정론적 행동을 완전히 제거한다.
  • 낮은 수준의 분산 컴퓨팅 복잡성을 추상화하면서도 실행 구성에 대한 완전한 제어를 유지하는 간단하고 고수준의 API를 제공한다.

실험 결과

연구 질문

  • RQ1동일한 난수 시드를 사용할 경우, 분산형 MCMC 샘플러가 스레드 수나 프로세스 수에 관계없이 동일한 출력을 보장할 수 있는가?
  • RQ2확장성 손실 없이 고성능, 분산형, 랜덤화 알고리즘에서 강력한 병렬성 불변성을 달성할 수 있는 방법은 무엇인가?
  • RQ3과학 소프트웨어의 재현성에 해를 끼치는 병렬 및 분산 난수 생성에서의 비결정론적 요인의 주요 원인은 무엇인가?
  • RQ4일반 목적의 샘플링 패키지가 연속형과 조합적 매개변수 공간을 동시에 효율적으로 처리하면서 정규화 상수 추정도 지원할 수 있는가?
  • RQ5분할 가능한 난수 생성의 통합이 분산형 MCMC 알고리즘의 정확성과 테스트 가능성에 어떻게 기여하는가?

주요 결과

  • Pigeons.jl는 강력한 병렬성 불변성을 보장한다: 동일한 시드를 사용할 경우 스레드 수나 프로세스 수에 관계없이 출력이 동일하므로 디버깅과 검증을 결정론적으로 수행할 수 있다.
  • 패키지는 수천 대의 MPI 통신을 수행하는 머신에서의 분산 실행을 성공적으로 지원하며, 단일 스레드, 다중 스레드, 분산 환경 간에 동일한 결과를 보인다.
  • SplittableRandoms.jl를 사용함으로써 모든 실행 단위에서 독립적이고 재현 가능한 난수 스트림을 확보하여 난수 생성 과정의 비결정론성을 완전히 제거한다.
  • 이 프레임워크는 사후 기댓값과 정규화 상수 Z 모두 정확하게 추정할 수 있게 하여, 기존 도구에서 자주 생략되거나 근사 처리되는 항목들을 해결한다.
  • 실제로 고차원 및 다중모달 사후분포에 대해서도 고성능, 확장 가능하고 재현 가능한 샘플링이 실현 가능하다는 점을 입증한다.
  • 패키지는 Julia 1.8 이상과 호환되며, 다양한 확률 프로그래밍 언어와 통합되어 과학 분야 전반에서 넓은 적용 가능성을 지닌다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.