Scaling Tractable Probabilistic Circuits: A Systems Perspective

Anji Liu, Kareem Ahmed, Guy Van den Broeck
6/2/2024
cs.LG

Official code: Tractables/pyjuice (103 stars, Apache-2.0, last commit 2026-04-27).

Abstract

Probabilistic Circuits (PCs) are a general framework for tractable deep generative models, which support exact and efficient probabilistic inference on their learned distributions. Recent modeling and training advancements have enabled their application to complex real-world tasks. However, the time and memory inefficiency of existing PC implementations hinders further scaling up. This paper proposes PyJuice, a general GPU implementation design for PCs that improves prior art in several regards. Specifically, PyJuice is 1-2 orders of magnitude faster than existing systems (including very recent ones) at training large-scale PCs. Moreover, PyJuice consumes 2-5x less GPU memory, which enables us to train larger models. At the core of our system is a compilation process that converts a PC into a compact representation amenable to efficient block-based parallelization, which significantly reduces IO and makes it possible to leverage Tensor Cores available in modern GPUs. Empirically, PyJuice can be used to improve state-of-the-art PCs trained on image (e.g., ImageNet32) and language (e.g., WikiText, CommonGen) datasets. We further establish a new set of baselines on natural image and language datasets by benchmarking existing PC structures but with much larger sizes and more training epochs, with the hope of incentivizing future research. Code is available at https://github.com/Tractables/pyjuice.

View on arXivView PDF

Code Implementations(1)

Tractables/pyjuiceOfficial100%
Apache-2.0

Scalable training and inference for Probabilistic Circuits

10313PythonMar 1, 20235 months agoApache-2.0

Similar Papers

Cite this paper

@article{liu2024scaling,
  title  = {Scaling Tractable Probabilistic Circuits: A Systems Perspective},
  author = {Anji Liu and Kareem Ahmed and Guy Van den Broeck},
  year   = {2024},
  eprint = {2406.00766},
  archivePrefix = {arXiv},
  url    = {http://arxiv.org/abs/2406.00766v2},
  journal = {ICML 2024 2024}
}

Add a badge to your README

Shows whether official code is linked for this paper.

Code of Paper badge
[![Code of Paper](https://codeofpaper.com/badge/2406.00766.svg)](https://codeofpaper.com/paper/2406.00766)

Discussion