[论文解读] A Compilation Target for Probabilistic Programming Languages
本文提出 Probabilistic C,一种可移植的、高效的概率编程中间表示,通过使用标准 C 编译器和 POSIX 系统原语(如 fork、进程和共享内存)将其编译为机器代码。它通过利用操作系统的功能,实现了基于顺序蒙特卡洛和粒子 MCMC 的可扩展、并行前向推断,为概率编程工作负载的系统级优化开辟了新路径。
Forward inference techniques such as sequential Monte Carlo and particle Markov chain Monte Carlo for probabilistic programming can be implemented in any programming language by creative use of standardized operating system functionality including processes, forking, mutexes, and shared memory. Exploiting this we have defined, developed, and tested a probabilistic programming language intermediate representation language we call probabilistic C, which itself can be compiled to machine code by standard compilers and linked to operating system libraries yielding an efficient, scalable, portable probabilistic programming compilation target. This opens up a new hardware and systems research path for optimizing probabilistic programming systems.
研究动机与目标
- 设计一种可移植的、高效的概率编程中间表示,可使用标准编译器编译为机器代码。
- 仅使用标准 POSIX 操作系统原语,实现可扩展、并行的前向推断(例如 SMC、粒子 MCMC)。
- 为通过底层硬件和操作系统优化来优化概率编程性能的系统研究建立基础。
- 通过提供低级编译目标,将推断策略与高级语言设计解耦。
- 探索基于进程的并行性与替代并发模型(如线程或用户级抽象,例如 delimited continuations)在概率推断中的性能权衡。
提出的方法
- Probabilistic C 是一个 C 库,通过为 observe(基于数据似然进行条件化)和 predict(输出后验样本)添加宏来扩展标准 C。
- 它使用 POSIX 的 fork 系统调用实现程序执行路径的并行执行,从而支持基于粒子的推断。
- 通过宏包装 main 函数,使其在循环中运行原始程序,模拟 SMC 和粒子 MCMC 推断中的多个粒子执行。
- 推断通过生成多个进程来执行,每个进程执行一条执行路径,似然度通过 observe 计算,结果通过 predict 收集。
- 该系统依赖标准 C 编译器和符合 POSIX 的操作系统库,确保在不同架构间的可移植性。
- 通过结合随机数生成、对数似然观察和后验预测,支持通用概率模型,包括高斯分布和隐马尔可夫模型(HMMs)。
实验结果
研究问题
- RQ1是否可以仅使用标准 POSIX 系统原语(如 fork 和共享内存)高效且可移植地实现概率编程中的前向推断?
- RQ2通过 fork 实现的基于进程的并行性是否可作为可扩展概率推断系统的可行且高效的基础?
- RQ3系统级特性(如页大小、内存管理、进程调度)如何影响概率推断的性能?
- RQ4针对进程多路复用和内存布局的系统优化是否能提升概率编程工作负载的性能?
- RQ5在性能、可移植性和统计正确性方面,使用进程(通过 fork)与线程或用户级抽象(如 delimited continuations)相比有何权衡?
主要发现
- Probabilistic C 能够使用标准 C 编译器和 POSIX 系统库高效、可移植地编译为机器代码。
- 通过使用 fork,实现了原生的并行性,支持基于粒子的推断,可在多核系统上实现可扩展执行。
- 性能受操作系统级特性(如页大小)的影响,较小的页可能因减少随机变量赋值时的复制开销而提高效率。
- 该系统表明,SMC 和粒子 MCMC 等前向推断策略可仅使用标准操作系统原语高效实现,无需语言级别的扩展。
- 在 observe 阻塞点处的进程同步开销是性能瓶颈,提示可采用基于队列的优化同步模型。
- 该方法为未来系统研究提供了可能,例如针对快速跨核心进程多路复用的定制页替换策略。
更好的研究,从现在开始
从论文设计到论文写作,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。