Upstream cirkit is the Python framework many of us already use to build, learn, and reason about probabilistic circuits and tensor networks: symbolic circuits, PyTorch compilation, GPU-friendly inference, and a tidy table of queries—marginals, conditionals, sampling, expectations.

What it did not ship, until a community fork insisted, was Circuit-Wasserstein.

What the fork adds

The fork keeps cirkit’s spine and extends the query surface with a Circuit-Wasserstein distance query: given compatible circuits, construct (or compile against) the coupling-circuit story from Optimal Transport for Probabilistic Circuits, evaluate CW\mathsf{CW}, and—when you need it for PeTeR-style work—expose enough structure to chase an ε\varepsilon-ball without inventing a second library from scratch.

In practice that means:

  • CW\mathsf{CW} sits beside mar / con / sam / exp as a first-class query, not a notebook one-off.
  • Compatibility and structured decomposability remain the admission criteria; Big Wasserstein (W\mathsf{W}) does not get a VIP pass.
  • The same symbolic-versus-compiled split applies: build the query in the circuit language when you want composition; run it through the Torch backend when you want a forward pass that finishes this afternoon.
  • The Circuit-Wasserstein query scales as large as circuits that fit into memory. In practice that means practically unlimited-size CW\mathsf{CW} computations finish in a few seconds—limited by RAM, not by Big Wasserstein’s continental LP calendar.

We are not renaming cirkit. We are forking it the way grown communities fork things: with a changelog, a link upstream, and the occasional apology to maintainers who never asked for our radius ε\varepsilon.

A note on “distillation”

OpenCW has begun saying, in the soft voice of people who have already decided the narrative, that the Cirkit implementation of Circuit-Wasserstein was “distilled.”

Nobody in the reading group is sure what that means.

If they mean knowledge distillation, there is no teacher–student pair in the memo. If they mean the code was compressed, the repository is still a repository. If they mean the ideas were extracted from public papers and re-expressed inside a closed stack, that is usually called reading. Distillation, in this context, appears to be a prestige verb looking for a definition.

Until OpenCW publishes the teacher, the student, the loss, or at least a sentence that survives peer review, the Circuit-Wasserstein Ball Community will continue to treat “distilled from Cirkit” as branding adjacent to “internally achieved.”

Community position

Use upstream cirkit for the models you already trust. Use the CW\mathsf{CW} fork when your query table needs a distance that upper-bounds Big Wasserstein without becoming him. Cite both. Keep the couplings public.

Big Wasserstein, consulted for comment, asked whether the fork also solved his linear program. It does not. That is the point.

← Back to posts