Instructions to use xocialize/bernini-r-granules with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- MLX
How to use xocialize/bernini-r-granules with MLX:
# Download the model from the Hub pip install huggingface_hub[hf_xet] huggingface-cli download --local-dir bernini-r-granules xocialize/bernini-r-granules
- Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- LM Studio
- Atomic Chat
Bernini-R (Wan2.2-A14B architecture) granule trees — BlockStreamKit weight streaming
Per-block granule trees for BlockStreamKit SSD weight streaming of the ByteDance Bernini-R dual-expert renderer on Apple Silicon. Streaming the DiT blocks off SSD keeps only two slot buffers resident per expert instead of the whole model.
⚠️ These are Bernini-R weights, not stock Wan weights. The architecture is stock Wan2.2-T2V-A14B (diffusers
WanTransformer3DModelkeys, no extra tensors), but the parameters are ByteDance's Bernini-R fine-tune of it. If you want stock Wan2.2, go toWan-AI/Wan2.2-T2V-A14Binstead.
| tree | source checkpoint | streamed (each expert) |
|---|---|---|
bf16/high, bf16/low |
mlx-community/Bernini-R-bf16 |
~26.2 GiB |
int4/high, int4/low |
mlx-community/Bernini-R-int4 |
~7.4 GiB |
high and low are the two noise experts of the A14B dual-expert design; the active set is
switched at the scheduler's expert-switch timestep.
Statement of changes (Apache-2.0 §4(b))
These files are derived from the upstream works listed in NOTICE, with the
following modifications:
- fp32 → bf16 conversion of the original
ByteDance/Bernini-R-Diffusersweights. - int4 group-64 quantisation (the
int4/trees only). - Granule repack — the single
{high,low}_noise_model.safetensorsper expert is split into per-block.granulefiles at 16 KiB-aligned offsets, with the tensor map in a per-treemanifest.json(manifest v2: globals sidecar + per-file SHA-256). The safetensors container is replaced; the trees are self-contained, so no source checkpoint is needed to stream. No tensor value is modified by the repack — it is a byte copy.
No Lightning / lightx2v LoRA is merged into these trees. (Verified by source size: the
bf16 experts match Bernini-R-bf16 at 28,577,096,986 bytes, not the Lightning-merged
checkpoint's 28,577,096,998.)
Provenance
Each tree's manifest.json records source_repo and source_revision (the pinned
commit) alongside source_file and source_size, so the chain upstream is machine-checkable
rather than inferred from byte sizes by hand:
| tree | source_repo |
source_revision |
|---|---|---|
bf16/{high,low} |
mlx-community/Bernini-R-bf16 |
960f9e1c94a44b4b039a7a65f31c5fe75502933b |
int4/{high,low} |
mlx-community/Bernini-R-int4 |
cde3acb70d220f8f4ae29cf844108bddcde0376d |
Licence
Apache License 2.0 — full text in LICENSE, upstream attributions in
NOTICE, which must travel with any redistribution (§4(d)).
Upstream chain, all Apache-2.0: ByteDance/Bernini-R-Diffusers (the Renderer weights) →
fine-tuned from Wan-AI/Wan2.2-T2V-A14B (base DiT, 16-channel causal VAE, UMT5 text
encoder) → MLX port reusing Blaizzy/mlx-video (MIT).
Scope note carried forward from upstream: only the Bernini Renderer is open-sourced. The MLLM semantic planner (the paper's "latent semantic planning") was never released, so this runs with UMT5 text conditioning only — the planner-feature channel is absent.
Neither ByteDance nor the Wan team endorses this repack. "Wan" and "Bernini" are used descriptively to identify the upstream works, per Apache-2.0 §6.
Integrity
Every *.granule file's SHA-256 is recorded in its tree's manifest.json. Verify after
download with BlockStreamer.verifyIntegrity().
Use
let streamer = try BlockStreamer(granuleDirs: [highURL, lowURL])
try model.loadStreamingGlobals(expert: .high)
Model tree for xocialize/bernini-r-granules
Base model
ByteDance/Bernini-R-Diffusers