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 WanTransformer3DModel keys, no extra tensors), but the parameters are ByteDance's Bernini-R fine-tune of it. If you want stock Wan2.2, go to Wan-AI/Wan2.2-T2V-A14B instead.

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:

  1. fp32 → bf16 conversion of the original ByteDance/Bernini-R-Diffusers weights.
  2. int4 group-64 quantisation (the int4/ trees only).
  3. Granule repack — the single {high,low}_noise_model.safetensors per expert is split into per-block .granule files at 16 KiB-aligned offsets, with the tensor map in a per-tree manifest.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)
Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for xocialize/bernini-r-granules

Finetuned
(3)
this model