atlas

Research map / Architectures and efficiency / RNNs and normalization

Scaling Tractable Probabilistic Circuits: A Systems Perspective

ICML 2024 · Architectures and efficiency › RNNs and normalization · approach: Scalable approximation and equivariant compute · 1 citations (OpenAlex)

Read the paperCheck your idea against 108,967 papers

AI-extracted summary. Written by AI from the paper's full text. Numbers and claims can be wrong or missing context, so check the paper before you cite or build on it.

Proposes PyJuice, a GPU system for probabilistic circuits that compiles PCs into block-sparse layers for Tensor Core parallelization and uses PC flows for backprop, yielding large speedups and memory savings and new image/language PC baselines.

Problem

Existing probabilistic circuit (PC) implementations are slow and memory-hungry, limiting training of large PCs on large datasets.

Approach

Compile a PC into block-sparse sum layers grouped by child count, so that sum-node computations become block matrix multiplications (using Tensor Cores) with reduced memory reloads; compute parameter gradients via PC flows instead of differentiating the log-space forward pass, and recompute product node outputs in backward to save memory.

Key results

Measured effects reported in the paper

What was changedWhereMeasuredEffect
Use PyJuice instead of EiNet for PD trainingPD · PD, 1.38M nodesruntime per training epoch: 1534.7 ± 0.5 -> 57.1 ± 0.2Helped
Use PyJuice instead of Juice.jl for RAT-SPN trainingRAT-SPN · RAT-SPN, 930K nodesruntime per training epoch: 375.1 ± 3.4 -> 13.8 ± 0.0Helped
Use PyJuice instead of Juice.jl for HCLT trainingHCLT · HCLT, 1.42M nodesruntime per training epoch: 143.2 ± 5.1 -> 24.9 ± 0.1Helped
Use PyJuice instead of Dynamax for HMM trainingHMM · HMM, 388K nodesruntime per training epoch: 4039.8 ± 38.3 -> 39.9 ± 0.1Helped
Fine-tune the 4096-state HMM for more epochs with PyJuiceHMM language model · CommonGenperplexity: 9.78 -> 8.81Helped
Increase HMM hidden states from 4096 to 8192PyJuice HMM language model · CommonGenperplexity: 8.81 -> 8.65Helped
Fine-tune the entire assembled PC instead of only the top-level modelSparse image model · ImageNet32bits-per-dimension: 4.06 -> 4.04Helped
Use the larger HCLT benchmark relative to the previous HCLT resultHCLT · ImageNet32bits-per-dimension: 4.82 -> 4.33Helped
Increase block size for block-based parallelization (ablation)PyJuice sum-layer kernels · PD sum layerruntime: nullHelped
Increase block size for block-based parallelization (ablation)PyJuice sum-layer kernels · PD sum layerL1-to-L2 IO: 25-50x fewer IOHelped
Increase the fraction of dropped edge blocks (ablation)PyJuice block-sparse sum layer · Block-sparse PC layerruntime: nullHelped
Prune edges from HCLTs (ablation)Sparse HCLT · Sparse HCLTs with 10M and 40M edgesruntime per epoch: nullHelped

Surprising findings

Limitations

Experimental setup

Datasets: ImageNet ImageNet32 CelebA-HQ CommonGen WikiText-103

Benchmarks: ImageNet32 ImageNet CelebA-HQ CommonGen WikiText-103

Metrics: runtime per epoch (s) GPU memory bits-per-dimension perplexity

Baselines: SPFlow EiNet Juice.jl Dynamax

Builds on: EiNets Juice.jl latent variable distillation PC flows

Closest papers by meaning

Writing a paper in this area? scime draft is a free LaTeX editor with AI included, real-time co-authors and a check of your references and venue rules before you submit. It also imports OpenAI Prism projects.

Open scime draft

Get the next scime Dispatch and a monthly field update

Free. We send a confirmation link first; every email has a one-click unsubscribe. Privacy