Downloads · 30 days
0
xocialize/bernini-r-granules
bernini-r-granules is a text-to-video model from xocialize. Use it when you need video from a text prompt. It is set up for mlx. The card lists the license as apache-2.0.
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 instea…
Downloads · 30 days
0
Access
Public
Updated Aug 15, 2026
Repo size
73.9 GB
Likes
0
Public
Click a slice to open those files.
.granule73.9 GB · 100%
From the Hugging Face model README
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.
These files are derived from the upstream works listed in NOTICE, with the
following modifications:
ByteDance/Bernini-R-Diffusers weights.int4/ trees only).{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.)
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 |
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.
Every *.granule file's SHA-256 is recorded in its tree's manifest.json. Verify after
download with BlockStreamer.verifyIntegrity().
let streamer = try BlockStreamer(granuleDirs: [highURL, lowURL])
try model.loadStreamingGlobals(expert: .high)