Skip to main content
QUICK REVIEW

[논문 리뷰] C3: Lightweight Incrementalized MCMC for Probabilistic Programs using Continuations and Callsite Caching

Daniel Ritchie, Andreas Stuhlmüller|arXiv (Cornell University)|2015. 09. 07.
Bayesian Modeling and Causal Inference참고 문헌 9인용 수 8
한 줄 요약

C3는 계속형 스타일(CPS)과 호출사이트 캐싱을 조합하여 메트로폴리스-해스팅스 추론을 가속화하는 경량의 소스 투 소스 변환을 제안한다. 이는 제안의 부분 재실행을 가능하게 하여 제안 실행 시간을 20–100배 감소시키며, 일부 모델에선 일정 시간 업데이트를 달성한다. 복잡한 절차적 모델링 작업에서는 거의 10배의 속도 향상을 이룬다.

ABSTRACT

Lightweight, source-to-source transformation approaches to implementing MCMC for probabilistic programming languages are popular for their simplicity, support of existing deterministic code, and ability to execute on existing fast runtimes. However, they are also slow, requiring a complete re-execution of the program on every Metropolis Hastings proposal. We present a new extension to the lightweight approach, C3, which enables efficient, incrementalized re-execution of MH proposals. C3 is based on two core ideas: transforming probabilistic programs into continuation passing style (CPS), and caching the results of function calls. We show that on several common models, C3 reduces proposal runtime by 20-100x, in some cases reducing runtime complexity from linear in model size to constant. We also demonstrate nearly an order of magnitude speedup on a complex inverse procedural modeling application.

연구 동기 및 목표

  • 모든 메트로폴리스-해스팅스 제안에서 전체 프로그램을 다시 실행하는 기존 경량 MCMC 프레임워크의 비효율성을 해결한다.
  • 빠른 결정론적 런타임이나 기존 라이브러리와의 호환성을 희생시키지 않고도 증분적 제안 재실행을 가능하게 한다.
  • 랜덤 선택 값 수정 이후에 효율적이고 부분적인 프로그램 재실행을 지원하는 소스 투 소스 변환을 개발한다.
  • 일반적인 확률 모델과 복잡한 실세계 응용 분야인 역 절차적 모델링과 같은 과제에서 상당한 성능 향상을 달성한다.
  • 기존 결정론적 언어 툴체인과 원활하게 통합되는 실용적이고 오픈소스의 WebPPL 확장 기능을 제공한다.

제안 방법

  • 모든 호출 체인의 어느 지점에서든 재실행이 가능하도록 확률 프로그램을 계속형 스타일(CPS)로 변환한다.
  • 입력과 출력이 제안 간에 그대로 유지될 경우 순수 함수 호출을 다시 실행하지 않도록 호출사이트 캐싱을 구현한다.
  • 랜덤 선택 값은 경량 메트로폴리스-해스팅스 방식과 마찬가지로 데이터베이스에 저장하지만, CPS와 캐싱을 통해 영향을 받는 하위 트레이스로만 재실행 범위를 제한한다.
  • 변경된 랜덤 선택에 의존하는 프로그램 트레이스의 부분만 재실행하도록 하며, 마르코프 블랭킷 구조를 암묵적으로 활용한다.
  • 전체 프로그램 변환 오버헤드를 피하기 위해 랜덤 선택 지점에서만 CPS 변환과 캐싱을 선택적으로 적용한다.
  • C3를 WebPPL 확률 프로그래밍 언어 내부의 소스 투 소스 컴파일러 단계로 통합한다.

실험 결과

연구 질문

  • RQ1맞춤형 인터프리터가 필요 없이도, 소스 투 소스 변환을 통해 증분적 MCMC 재실행을 달성할 수 있는가?
  • RQ2계속형 스타일과 호출사이트 캐싱의 조합이 얼마나 효과적으로 확률 프로그램의 제안 재실행 시간을 줄일 수 있는가?
  • RQ3기존 방법이 선형 시간 재실행을 요구했던 모델에서 C3는 일정 시간 업데이트를 달성할 수 있는가?
  • RQ4역 절차적 모델링과 같은 복잡한 실세계 응용 분야에서 C3는 기준 방법 대비 얼마나 잘 성능을 발휘하는가?
  • RQ5기존 결정론적 언어 런타임과 라이브러리와의 호환성을 유지하면서도 C3의 성능 향상 효과를 달성할 수 있는가?

주요 결과

  • C3는 HMM, 토픽 모델, 가우시안 혼합 모델, 계층적 선형 회귀와 같은 일반 모델에서 제안 실행 시간을 20–100배 감소시킨다.
  • 일부 모델에서는 C3가 제안 업데이트의 점근적 복잡도를 모델 크기의 선형에서 일정 시간으로 줄인다.
  • 컴퓨터 그래픽스 분야의 복잡한 역 절차적 모델링 응용 분야에서 C3는 거의 10배의 속도 향상을 달성한다.
  • CPS와 호출사이트 캐싱의 조합은 영향을 받지 않은 함수 호출을 건너뛰고 관련 계속형에서만 되감는 방식으로 재실행을 조기에 종료할 수 있도록 한다.
  • 호출사이트 캐싱만으로도 중복 함수 호출을 방지하여 재실행 오버헤드를 줄일 수 있고, CPS는 중간 지점에서의 타겟된 재시작을 가능하게 한다.
  • C3는 오픈소스로 WebPPL에 확장 구현되었으며, V8와 같은 기존 고성능 런타임과의 실용적 통합을 보여준다.

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

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

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

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