DSperse: Community Edition
DSperse is a proving-system-agnostic intelligent slicer for verifiable AI. It decomposes ONNX neural network models into circuit-compatible segments and orchestrates compilation, inference, proving, and verification across pluggable ZK backends.
Features
- Model Slicing: Split neural network models into individual layers or custom segments
- ONNX Support: Slice and orchestrate ONNX models
- Layered Inference: Run inference on sliced models, chaining the output of each segment
- Zero-Knowledge Proofs: Generate and verify proofs for model execution via JSTprove
- Tiling and Channel Splitting: Automatically decompose large convolutions for circuit-compatible execution
- Proof System Agnostic: Pluggable backend architecture supporting Expander and Remainder proof systems
Documentation
- Overview: High-level overview of the project, its goals, and features
- JSTprove Backend: JSTprove integration and usage
Installation
From PyPI (includes CLI)
pip install dsperse
This installs both the dsperse CLI command and the Python library bindings. No additional dependencies required — everything is compiled into a single native extension.
From source (Rust binary)
cargo install --path crates/dsperse
As a Rust library
[dependencies]
dsperse = { git = "https://github.com/inference-labs-inc/dsperse.git" }
CLI Usage
DSperse provides six subcommands that form a complete pipeline:
| Command | Description |
|---|---|
slice |
Split an ONNX model into segments |
compile |
Compile slices into ZK circuits |
run |
Execute chained inference across slices (--weights to inject consumer ONNX) |
prove |
Generate ZK proofs for a completed run |
verify |
Verify ZK proofs |
full-run |
Execute compile, run, prove, verify in sequence (supports --weights) |
Quickstart
dsperse slice --model-dir models/net
dsperse compile --model-dir models/net --parallel 4
dsperse run --model-dir models/net --input-file models/net/input.json
dsperse prove --model-dir models/net --run-dir models/net/run/run_*
dsperse verify --model-dir models/net --run-dir models/net/run/run_*
Or run the entire pipeline at once:
dsperse full-run --model-dir models/net --input-file models/net/input.json
To inject consumer weights from a fine-tuned ONNX model (same architecture, different weights):
dsperse run --model-dir models/net --input-file models/net/input.json --weights path/to/consumer.onnx
dsperse full-run --model-dir models/net --input-file models/net/input.json --weights path/to/consumer.onnx
Python Library Usage
import dsperse
metadata_json = dsperse.slice_model("models/net/model.onnx", output_dir="models/net/slices")
dsperse.compile_slices("models/net/slices", parallel=4)
run_json = dsperse.run_inference("models/net/slices", "models/net/input.json", "models/net/run")
proof_json = dsperse.prove_run("models/net/run", "models/net/slices")
verify_json = dsperse.verify_run("models/net/run", "models/net/slices")
To inject consumer weights at inference time, pass weights_onnx (path to a fine-tuned ONNX with the same architecture):
run_json = dsperse.run_inference(
"models/net/slices", "models/net/input.json", "models/net/run",
weights_onnx="path/to/consumer.onnx",
)
slice_model, run_inference, prove_run, and verify_run return JSON strings parseable with json.loads(). compile_slices returns None.
Project Structure
crates/dsperse/
src/
cli/ CLI argument parsing and command dispatch
slicer/ ONNX model analysis, slicing, autotiling, channel splitting
pipeline/ Compilation, inference, proving, verification orchestration
backend/ JSTprove backend integration
schema/ Metadata and execution result types (serde)
converter.rs Prepares JSTprove artifacts from ONNX files
utils/ I/O helpers and path resolution
tests/ Unit and integration tests
python/ Thin Python wrapper for PyO3 bindings
Contributing
Contributions are welcome. Please open issues and PRs on GitHub.
License
See the LICENSE file for details.
Metadata
Release files for dsperse 3.9.10
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| dsperse-3.9.10-cp312-cp312-manylinux_2_28_x86_64.whl | CPython 3.12 | CPython 3.12 | Linux glibc 2.28+ x86-64 | Details |
| dsperse-3.9.10-cp312-cp312-macosx_11_0_arm64.whl | CPython 3.12 | CPython 3.12 | macOS 11.0+ ARM64 | Details |
Total release size: 29.7 MB
Release files / dsperse-3.9.10-cp312-cp312-manylinux_2_28_x86_64.whl
| Download URL | dsperse-3.9.10-cp312-cp312-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 16.0 MB |
| Tags | CPython 3.12 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
9b4226eb524c7cc68ad10212bfbd10f6fac58a7cca399a86f13909d178f9075b
|
|
BLAKE2b-256 checksum How to use checksums |
fa1969e0952b1ebbb9f97a8b1a7b89291a52f4ca6a072cd0ebdb26358064bda8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.10.8 {"installer":{"name":"uv","version":"0.10.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / dsperse-3.9.10-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | dsperse-3.9.10-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 13.6 MB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
9bdb38657c2a539fad0b782c396237b1f1dd3ffb773d0d5c07b5546edcb1f079
|
|
BLAKE2b-256 checksum How to use checksums |
cb8f1ef04ddde55c946c7d6307152f607b007e4f97b98a888d72a7963dceef90
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.10.8 {"installer":{"name":"uv","version":"0.10.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for dsperse 3.9.10
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.