论文标题
与CUPPL的概率编程
Probabilistic Programming with CuPPL
论文作者
论文摘要
概率编程语言(PPLS)是机器学习的强大工具,可以简洁地表达高度表达的生成模型。他们将通过该语言实现的复杂推理算法与表现力的建模语言相结合,该语言允许用户实现任何可计算功能作为生成模型。这些语言通常是在现有的高级编程语言之上实现的,并且不使用硬件加速器。确实存在使用加速器的PPL,但要限制语言的表达性。在本文中,我们提出了一种语言和工具链,该语言和工具链为CPU和GPU生成高效的代码。该语言在样式上起作用,工具链是在LLVM顶部构建的。我们的实施使用CPU上的限制延续来执行推理,并在GPU上使用自定义CUDA代码。与CPU上的其他最先进的方法相比,我们在一套PPL工作负载方面获得了显着的速度。此外,我们的编译器还可以生成在CUDA GPU上运行的有效代码。
Probabilistic Programming Languages (PPLs) are a powerful tool in machine learning, allowing highly expressive generative models to be expressed succinctly. They couple complex inference algorithms, implemented by the language, with an expressive modelling language that allows a user to implement any computable function as the generative model. Such languages are usually implemented on top of existing high level programming languages and do not make use of hardware accelerators. PPLs that do make use of accelerators exist, but restrict the expressivity of the language in order to do so. In this paper, we present a language and toolchain that generates highly efficient code for both CPUs and GPUs. The language is functional in style, and the tool chain is built on top of LLVM. Our implementation uses de-limited continuations on CPU to perform inference, and custom CUDA codes on GPU. We obtain significant speed ups across a suite of PPL workloads, compared to other state of the art approaches on CPU. Furthermore, our compiler can also generate efficient code that runs on CUDA GPUs.