Bernini-v2-bf16 / README.md
xocialize's picture
Bernini-v2 bf16 MLX conversion (experts + planner plane; from ByteDance/Bernini-Diffusers-v2 @ 399cf6a)
9591ba5 verified
|
Raw
History Blame Contribute Delete
2.93 kB
---
license: apache-2.0
base_model: ByteDance/Bernini-Diffusers-v2
tags:
- mlx
- video
- text-to-video
- image-to-video
- video-editing
- wan
- bernini
library_name: mlx
---
# Bernini-v2 (bf16, MLX)
Apple-MLX conversion of **[ByteDance/Bernini-Diffusers-v2](https://huggingface.co/ByteDance/Bernini-Diffusers-v2)**
(revision `399cf6a`) — the full unified Bernini: MLLM semantic planner + dual-expert
Wan2.2-A14B DiT renderer. Converted 2026-08-18. Apache-2.0, same as upstream.
## Contents
| File | Component | Notes |
|---|---|---|
| `high_noise_model.safetensors` | Wan2.2-A14B high-noise expert (bf16) | **retrained vs Bernini-R** (co-trained with the planner) — not interchangeable with `mlx-community/Bernini-R-bf16` |
| `low_noise_model.safetensors` | Wan2.2-A14B low-noise expert (bf16) | ditto |
| `mllm/` | Qwen2.5-VL-7B semantic planner (bf16, HF layout) | Bernini-trained weights (`scratch_mllm`), not stock Qwen; configs + tokenizer from upstream |
| `vit_decoder.safetensors` | DiffLoss_FM flow-match head (bf16) | SimpleMLPAdaLN, width 4096, depth 16 |
| `planner_glue.safetensors` | MLPConnector + `mask_tokens` | keys verbatim upstream |
| `t5_encoder.safetensors` | umT5-XXL (bf16) | bit-identical to the stock Wan2.2 encoder (verified vs upstream) |
| `vae.safetensors` | 16-ch WanVAE | bit-identical to stock Wan2.2 (verified vs upstream) |
| `config.json` | wan-core runtime config (dual-expert A14B) | |
| `conversion.json` | conversion provenance | |
## Conversion notes
- Experts: upstream fp32 masters → diffusers→original-Wan key premap → mlx-video sanitize → bf16.
Key set verified bijective against the established Bernini-R MLX layout; value probes bit-exact
(RNE) against the fp32 masters.
- The planner (`mllm.*`) is saved in standard HF Qwen2.5-VL layout for direct consumption by
MLX Qwen2.5-VL loaders.
- The upstream in-checkpoint fp32 T5 copy was skipped; the standalone bf16 encoder (verified
bit-identical) is shipped instead.
## Usage
The **renderer** is drop-in for the Bernini-R MLX stack (same layout as
`mlx-community/Bernini-R-bf16`) — e.g. [`bernini-r-mlx`](https://github.com/xocialize/bernini-r-mlx)
`pipeline_mlx.t2v/t2i`, or the Swift `bernini-r-mlx-swift`/`wan-core` stack.
The **planner plane** (mllm / vit_decoder / connector / mask_tokens) implements the
MaskGIT-style semantic planning of the Bernini paper (arXiv 2605.22344); a Swift-MLX planner
integration is in progress in `bernini-r-mlx-swift`. Until then these files carry the released
weights for downstream use.
## Provenance & license
Upstream: [ByteDance/Bernini-Diffusers-v2](https://huggingface.co/ByteDance/Bernini-Diffusers-v2)
(Apache-2.0). All credit for the model to the Bernini authors — see the
[Bernini repository](https://github.com/bytedance/Bernini) and paper. This conversion changes
dtype/layout only (plus the key renames described above); no weights were fine-tuned.