From: ByteDance <huggingface.co/ByteDance>Newsgroups: alt.freeweights.textSubject:

Bernini-R

Date: 2026-11-15Commit: bcede06Signed: 2DC28CC7B26A283B ✓

Image text to video model. Safetensors weights, 168 GB in all. Published by ByteDance under Apache-2.0.

text168GBBernini-Rsafetensorspermissive
FactsParamsnot statedSize168 GBFormatssafetensorsTaskimage text to videoLicenseApache-2.0From sourcepermissive
$ fw get ByteDance/Bernini-R
# manifest sha256 470ac2f8b762… · 168 GB · 44 files
$ fw verify ./Bernini-R ByteDance/Bernini-R
From sourceHosted (signed)ByteDance/Bernini-RLast check: 2026-11-15 04:15 UTC

Get help: custom fine-tune or private deploy. We review your setup before we quote.

Works with

Runs with

Ranked by fit to this model (safetensors), then by GitHub stars.

Overview

Size
168 GB
Weights
168 GB (safetensors)
Parameters
not stated
Formats
safetensors
Task
image text to video
License
Apache-2.0 (permissive)
Files
44, each with a sha256
Publisher
ByteDance
Added
2026-11-15
Section
alt.freeweights.text
Lineage

Original release from the publisher.

Where these bytes come from
Publisher at the pinned commit→You

Sources are tried in order. A file counts only when its size and sha256 match the manifest. Sources are checked when you ask for them, not on a timer.

Sources
BadgeHostLast checkResult
From sourcehuggingface.co2026-11-15 04:15 UTCpassed

Model card

From the publisher at commit bcede06. Shown as plain text with links; images open at the publisher.

Image: Bernini

Latent Semantic Planning for Video Diffusion#

**Chenchen Liu\, Junyi Chen\, Lei Li\, Lu Chi\,§, Mingzhen Sun\, Zhuoying Li\, Yi Fu, Ruoyu Guo, Yiheng Wu, Ge Bai, Zehuan Yuan✉**

\* Equal contribution&nbsp;&nbsp;✉ Corresponding author&nbsp;&nbsp;§ Project lead

arXiv Project Page HuggingFace

🎉 News#

✨ Highlights#

Bernini is a unified framework for video generation and editing that combines an MLLM-based semantic planner with a DiT-based renderer.

On video editing, Bernini reaches the first tier among leading closed-source commercial models. The leaderboard below comes from our self-built arena platform, where human annotators blindly vote on paired edits and the votes are aggregated into a Bradley-Terry score and a pairwise win-rate matrix.

Image: Video editing arena: Bradley-Terry leaderboard and pairwise win-rate matrix

📦 Installation#

Requirements#
  • Python 3.11.2.
  • CUDA GPU — a Hopper GPU (H100/H800/H200) is recommended so FlashAttention-3 can be used; other CUDA GPUs fall back to FlashAttention-2 or PyTorch SDPA.
  • CUDA toolkit 12.4 (matches the pinned torch==2.5.1+cu124; 12.3+ is the minimum if you build FlashAttention-3).
  • Pinned in requirements.txt: torch==2.5.1+cu124, diffusers==0.35.2, accelerate==0.34.2, transformers==4.57.3.

Reference environment (Bernini-R is developed and tested on this setup):

ComponentVersion
GPUNVIDIA H100
CUDA12.4
Python3.11.2
PyTorch2.5.1+cu124
Install#
git clone https://github.com/bytedance/Bernini.git bernini && cd bernini
pip install -r requirements.txt

Optional extras:

  • Multi-GPU sequence parallel needs Open-VeOmni (Apache-2.0, Python 3.11). Use --no-deps so VeOmni does not pull in a different torch build and override the pinned torch==2.5.1+cu124: pip install --no-deps git+https://github.com/ByteDance-Seed/VeOmni.git@v0.1.10. Single-GPU inference does not need it.
  • Faster attention (auto-detected if installed; otherwise PyTorch SDPA is used):
    • FlashAttention-2 — general CUDA GPUs (incl. A100/A800): pip install flash-attn==2.8.3.
    • FlashAttention-3 — Hopper only (H100/H800/H200, CUDA ≥ 12.3, PyTorch ≥ 2.4). flash_attn_interface is not on PyPI; build it from the flash-attention repo's hopper/ directory at tag v2.8.3: bash git clone https://github.com/Dao-AILab/flash-attention.git cd flash-attention && git checkout v2.8.3 cd hopper && MAX_JOBS=$(nproc) python3 setup.py install --user
Weights#

Bernini-R provides two ways to obtain the renderer weights. The diffusers format is recommended — it is a self-contained diffusers-format directory whose transformer / transformer_2 already hold the Bernini-R weights, so you point --config at it and the weights load directly, with no --high_noise_ckpt / --low_noise_ckpt needed.

A single ready-to-use diffusers-format model from ByteDance/Bernini-R-Diffusers. It bundles the Wan2.2 base components (VAE, UMT5 text encoder, tokenizer) together with the Bernini-R transformer weights, so nothing else is downloaded at runtime.

pip install -U "huggingface_hub"
hf download ByteDance/Bernini-R-Diffusers --local-dir Bernini-R-Diffusers

Then pass it via --config and omit the checkpoint flags, e.g.:

python infer_single_gpu.py --config Bernini-R-Diffusers \
    --case assets/testcases/t2i/t2i.json --num_frames 1
Option B — separate checkpoints#

The original layout, where Bernini-R uses two sets of weights loaded separately:

  1. Wan2.2 base — Wan-AI/Wan2.2-T2V-A14B-Diffusers on Hugging Face. Supplies the VAE, UMT5 text encoder, tokenizer, and the transformer architecture/base weights. It is downloaded automatically on first run (configured by wan22_base in configs/bernini_renderer_wan22/config.json).
  2. Bernini-R checkpoint — the trained high-noise / low-noise transformer weights (safetensors) from ByteDance/Bernini-R, passed with --high_noise_ckpt / --low_noise_ckpt. Both a local directory and a Hugging Face repo id are accepted.

Download models using huggingface-cli:

pip install -U "huggingface_hub"
hf download Wan-AI/Wan2.2-T2V-A14B-Diffusers --local-dir Wan2.2-T2V-A14B-Diffusers
hf download ByteDance/Bernini-R --local-dir Bernini-R

🚀 Usage#

A run is described by a case file — a small JSON under assets/testcases/ that bundles one task's routing and inputs (task_type, guidance_mode, prompt, source media, output). This keeps long prompts out of the command line. Each task has a directory under assets/testcases/ holding one or more case files; see assets/testcases/ for the format and the bundled t2i / i2i / t2v / v2v / rv2v /r2v examples.

--use_pe enhances the prompt through an OpenAI-compatible endpoint and is recommended for best generation quality. The openai SDK is installed by requirements.txt; configure the endpoint with environment variables:

export BERNINI_PE_API_KEY=...      # or OPENAI_API_KEY
export BERNINI_PE_BASE_URL=...     # or OPENAI_BASE_URL
export BERNINI_PE_MODEL=...        # vision-capable chat model
Examples by task type#

Unless an example specifies otherwise, inference outputs 480p / 16fps (the defaults — --max_image_size 848, --fps 16).

Each example runs a bundled case in assets/testcases/ — replace <hi> / <lo> with your high-/low-noise checkpoint paths. The image tasks (t2i, i2i) are shown on a single GPU; the video tasks on 8 GPUs via torchrun, where --ulysses N gives N-way Ulysses sequence parallel per sample and the remaining world_size / N ranks run data parallel over the task list. The two scripts take the same inputs, so any example can be run either way.

Inputs can also be passed directly as flags instead of --case (--prompt, --task_type, --guidance_mode, --video, --image, --images, --output); generation parameters (--seed, --num_frames, ...) are always command-line flags.

Text-to-image (t2i) — single GPU; generates one frame, so pass --num_frames 1

python infer_single_gpu.py --high_noise_ckpt <hi> --low_noise_ckpt <lo> \
    --case assets/testcases/t2i/t2i.json --num_frames 1

Image editing (i2i) — single GPU; generates one frame, so pass --num_frames 1

python infer_single_gpu.py --high_noise_ckpt <hi> --low_noise_ckpt <lo> \
    --case assets/testcases/i2i/i2i.json --num_frames 1

Text-to-video (t2v)

torchrun --nproc-per-node 8 infer_multi_gpu.py \
    --high_noise_ckpt <hi> --low_noise_ckpt <lo> --ulysses 8 \
    --case assets/testcases/t2v/t2v.json

Video editing (v2v / mv2v) — two cases are provided.

For edits where the main subject keeps its ordinary motion (case 1 adds a snowman to the scene), the v2v task type is enough:

torchrun --nproc-per-node 8 infer_multi_gpu.py \
    --high_noise_ckpt <hi> --low_noise_ckpt <lo> --ulysses 8 \
    --case assets/testcases/v2v/v2v_case1.json

For edits that need to change the subject's motion (case 2 makes the person crouch down), the mv2v task type gives better results:

torchrun --nproc-per-node 8 infer_multi_gpu.py \
    --high_noise_ckpt <hi> --low_noise_ckpt <lo> --ulysses 8 \
    --case assets/testcases/v2v/v2v_case2.json

Reference + video editing (rv2v) — two cases are provided.

Case 1 is reference-image-guided video editing — replacing a garment in the source video with one from a reference image:

torchrun --nproc-per-node 8 infer_multi_gpu.py \
    --high_noise_ckpt <hi> --low_noise_ckpt <lo> --ulysses 8 \
    --case assets/testcases/rv2v/rv2v_case1.json

Case 2 is a video-insertion example — inserting content into the source video. It is run at 720p / 24fps to show the insertion result more clearly:

torchrun --nproc-per-node 8 infer_multi_gpu.py \
    --high_noise_ckpt <hi> --low_noise_ckpt <lo> --ulysses 8 \
    --case assets/testcases/rv2v/rv2v_case2.json \
    --num_frames 121 --fps 24 --max_image_size 1280

Reference-to-video (r2v) — drives a video from one or more reference images

torchrun --nproc-per-node 8 infer_multi_gpu.py \
    --high_noise_ckpt <hi> --low_noise_ckpt <lo> --ulysses 8 \
    --case assets/testcases/r2v/r2v.json

See python infer_single_gpu.py --help for the full argument list.

Gradio demo#

gradio_demo.py exposes the same pipeline through a Gradio UI: the task-type dropdown auto-fills guidance_mode (still user-editable), uploaded media is routed to the matching slot, and the result is rendered inline.

# Single GPU
python gradio_demo.py --high_noise_ckpt <hi> --low_noise_ckpt <lo> --port 7860

# 8 GPUs, 8-way Ulysses sequence parallel
torchrun --nproc-per-node 8 gradio_demo.py --ulysses 8 \
    --high_noise_ckpt <hi> --low_noise_ckpt <lo> --port 7860 --share

Add --use_pe (and export OPENAI_API_KEY=... / BERNINI_PE_API_KEY=...) to enable GPT prompt enhancement; the in-UI checkbox is a per-request switch on top of this flag.

📑 Citation#

If you use Bernini in your research, please cite:

@article{bernini,
  title   = {Bernini: Latent Semantic Planning for Video Diffusion},
  author  = {Chenchen Liu and Junyi Chen and Lei Li and Lu Chi and Mingzhen Sun and Zhuoying Li and Yi Fu and Ruoyu Guo and Yiheng Wu and Ge Bai and Zehuan Yuan},
  journal = {arXiv preprint arXiv:2605.22344},
  year    = {2026}
}

🙏 Acknowledgements#

Bernini builds on several outstanding open-source projects:

We thank the authors and communities of these projects for their contributions.

📄 License#

Apache License 2.0. See LICENSE.

Files

44 files · 168 GBWeights 168 GB (safetensors). Sizes and sha256 from the signed manifest.
Show all 44 files with their sha256
FileSizesha256
.gitattributes1.77 KB8cee1a2b89a46edccd067d3ec5c1389ea7fafc2d241890946eea010612f9f169
LICENSE11.4 KBc71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4
README.md11.4 KBf8bd9e3f5fae1ba075b61e3ba29c80a17d02b8555c80388fe545a15b6fa1e67f
assets/arena.png264 KB28ae3f129eef0395db0699fe631805fd1828277ee0ad403edcf2ffb53be0fdde
assets/bernini-icon.png1.00 MB89e2087e3cf0c673d86f3a94966429d5dbbbb2bca023849c6b8508098793e028
bernini_renderer_high/model-00001-of-00018.safetensors4.95 GB4705f11ed4e60791613968e046db9d9a592766cf77cc6338a6aa5b3616ae7280
bernini_renderer_high/model-00002-of-00018.safetensors4.99 GB8fb35fd42d26dfef3100532c9bc7b11047c6d2564f0bbecf2479893ee470dbbf
bernini_renderer_high/model-00003-of-00018.safetensors4.95 GB765ad40f173225662cbf9f41680a09d3a2c52ae3cef0b70561f26ae81eecae40
bernini_renderer_high/model-00004-of-00018.safetensors4.99 GB52a81340c76942928ec9e8f977f9c266d3e149aab08a34737a9b0c1d0916360c
bernini_renderer_high/model-00005-of-00018.safetensors4.85 GB193baaa40d79cfada5108433e1d5aa39dbc76a7c08f64ee002839e9cc93643c6
bernini_renderer_high/model-00006-of-00018.safetensors4.99 GBbcf5535b14944c54cc851f2c96d41223ff230bba2fbcdee44139e33a708aa225
bernini_renderer_high/model-00007-of-00018.safetensors4.85 GB1682a9d858ddde5da65da0f0c050c15d82ffe0aba9404d1826811accccd5abfe
bernini_renderer_high/model-00008-of-00018.safetensors4.99 GB36e4134f8946a32c48e37cee901e0c4d8517f3cd9ab0a92f32475b131d2e76ec
bernini_renderer_high/model-00009-of-00018.safetensors4.85 GB308152953fc5c9a68b7bce270c7f9e35b0083c4c4cf2749416f3b5ab3c559c5b
bernini_renderer_high/model-00010-of-00018.safetensors4.99 GB8cd521f4838977d0665ea088f10de51c8265d11f81b2250dc11274256ed32984
bernini_renderer_high/model-00011-of-00018.safetensors4.85 GB16d5f0688df676a41a0a09a5bf5cd0724c04e763c578d917cc5195eb92a9b391
bernini_renderer_high/model-00012-of-00018.safetensors4.88 GBe5097ac00b47be470784c4a8f88810a8baad518025f47bdd7a1953abfe091948
bernini_renderer_high/model-00013-of-00018.safetensors4.97 GB3112e6d5b27830f9c88d264dc4b36dcaf7710d0c13383fa20b080099c6c62096
bernini_renderer_high/model-00014-of-00018.safetensors4.90 GB421d3d85f9af15a4e737a49d17c27a60895cb88f8a172399c71e3aedc00df96e
bernini_renderer_high/model-00015-of-00018.safetensors4.97 GB2c9e0b25e3dcf639be601a05374a8a965162390b60fb4170ff50dd9b62a2116e
bernini_renderer_high/model-00016-of-00018.safetensors1.71 GB22485360adc2165631c3874f14b64a58101cfef96221386f908a4979ab13a76d
bernini_renderer_high/model-00017-of-00018.safetensors4.20 GBf302231a60d22f56b107b6cc57d00c811eee743865a92f8311e5d5c2822d1e57
bernini_renderer_high/model-00018-of-00018.safetensors4.20 GB7921b917a0cb44dbab4bc6a8b1e020090eda046f9047452825d7426f4e98d9ad
bernini_renderer_high/model.safetensors.index.json132 KB70da8affc44ee8f7b8319bf3a15a8edf24f2f4b25d90e9b38754e0905e7d2348
bernini_renderer_low/model-00001-of-00018.safetensors4.95 GB212702decbf06ce9f617986b0d1828ba5bf4b71e0f6ffb8a439e68cdf1db1103
bernini_renderer_low/model-00002-of-00018.safetensors4.99 GB219840a9a414d89f1a2f7d10bcb773cb79b40ddfaeb957ff4787e3d65e88dcee
bernini_renderer_low/model-00003-of-00018.safetensors4.95 GBe7cf8e3cf0e055224d62eaf3bc4117b69da8a1b029903852e795dfa4bdc1cad9
bernini_renderer_low/model-00004-of-00018.safetensors4.99 GB28b6bde116f4ce4bd2c48f0adb6e07593717d59182ea079a634af93c6f88fb29
bernini_renderer_low/model-00005-of-00018.safetensors4.85 GB1f2d29e71ec76143a6b237d537d09bd1b1828a754c6866b60e1cecbbee2b26a0
bernini_renderer_low/model-00006-of-00018.safetensors4.99 GBb1e8b7316d9a832ed7f9042bd169eb3d5fbae11a48c2c3bf26cc4fd0fa558793
bernini_renderer_low/model-00007-of-00018.safetensors4.85 GB3e232fefb80acfba4331a9f45cdf1d10acf25f34f0a80e30d67cb28bab4b1e4b
bernini_renderer_low/model-00008-of-00018.safetensors4.99 GBfe69769201c0d0a4e70c2f6b5024a6439a63926f7ff2c9d20022944e39dd9643
bernini_renderer_low/model-00009-of-00018.safetensors4.85 GB48aa664f000d3da6afc207ead16b4643d74ba680fc05cc10cfa8dfc6da402f78
bernini_renderer_low/model-00010-of-00018.safetensors4.99 GB0ff1c784e5fc9d1c037d460a5a6b8ec190a92e423dd4732f5e7ee1343569e714
bernini_renderer_low/model-00011-of-00018.safetensors4.85 GBf088b22e80a7ac3af2a5ed1b3fd9fbf5e6f9f296ddb2ed8870b0c396c9bd664d
bernini_renderer_low/model-00012-of-00018.safetensors4.88 GBd490d4b16149ae9e4c1a1a2989fe8e6e3cf224e758077ca59e5504cf20c945da
bernini_renderer_low/model-00013-of-00018.safetensors4.97 GB3112e6d5b27830f9c88d264dc4b36dcaf7710d0c13383fa20b080099c6c62096
bernini_renderer_low/model-00014-of-00018.safetensors4.90 GB421d3d85f9af15a4e737a49d17c27a60895cb88f8a172399c71e3aedc00df96e
bernini_renderer_low/model-00015-of-00018.safetensors4.97 GB2c9e0b25e3dcf639be601a05374a8a965162390b60fb4170ff50dd9b62a2116e
bernini_renderer_low/model-00016-of-00018.safetensors1.71 GB22485360adc2165631c3874f14b64a58101cfef96221386f908a4979ab13a76d
bernini_renderer_low/model-00017-of-00018.safetensors4.20 GBf302231a60d22f56b107b6cc57d00c811eee743865a92f8311e5d5c2822d1e57
bernini_renderer_low/model-00018-of-00018.safetensors4.20 GB7921b917a0cb44dbab4bc6a8b1e020090eda046f9047452825d7426f4e98d9ad
bernini_renderer_low/model.safetensors.index.json134 KB99a66fa48102b9a29048923ce0a0ab94522be07981158a8168455678e414e4b7
config.json349 B1dd3adc88cfcf20d2b4cf81191709e7422faf4509e949763813752e3370417cb
VersionsEach time the pinned upstream commit or file list changed in this repo. Newest first.
Upstream commitDateContents
bcede06da8 pinned now2026-11-15 04:15 UTC44 files · 168 GB

Use it

$ fw get ByteDance/Bernini-R
# manifest sha256 470ac2f8b762… · 168 GB · 44 files
$ fw verify ./Bernini-R ByteDance/Bernini-R
fw.pyChecks the signature and every sha256, tries each source in order, resumes.
$ python3 fw.py get https://freeweights.allternit.com/manifests/ByteDance/Bernini-R.json --dir ./Bernini-R $ python3 fw.py verify ./Bernini-R ./ByteDance__Bernini-R.json
hfThe Hugging Face CLI with one setting. Same repo id.
$ HF_ENDPOINT=https://freeweights.allternit.com hf download ByteDance/Bernini-R --revision bcede06da86c6c0f6e22f977b5eb6a09d5d9f77d --local-dir ./Bernini-R
Packaged for ComfyUI. Most image, video and music models run in ComfyUI . Check the publisher's page for the workflow. Freeweights does not host it.

License

Name
Apache License 2.0
Id
Apache-2.0
Class
Permissive
Redistribution
yes
Listing
Hosted (signed)
Decided
License as declared by the publisher. No person read it. 2026-11-15
Text in
LICENSE
Text sha256
c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4
Terms gate
No extra terms beyond the license.

Read the license text

Licenses are checked against the license table. A custom license passes only after a person reads it.

Provenance

From: ByteDance <huggingface.co/ByteDance>Newsgroups: alt.freeweights.textSubject: Bernini-RDate: 2026-11-15Commit: bcede06Signed: 2DC28CC7B26A283B ✓
Upstream
ByteDance/Bernini-R
Pinned commit
bcede06da86c6c0f6e22f977b5eb6a09d5d9f77d
Manifest
Bernini-R.json · .minisig
Manifest sha256
470ac2f8b762b2cdaecbb83b2d6e287d431df631a11a21356960f407fc32b7ad
Signature
minisign, Ed25519, key 2DC28CC7B26A283B
Created
2026-11-15 04:15 UTC
Generator
freeweights-manifest/0.1.0
Takedowns
None.

How to verify

$ curl -O https://freeweights.allternit.com/manifests/ByteDance/Bernini-R.json $ curl -O https://freeweights.allternit.com/manifests/ByteDance/Bernini-R.json.minisig $ minisign -Vm Bernini-R.json -P RWQ7KGqyx4zCLXtUFOqvfv8L3g+8fpKJ1FsuxPyOYMF+4KufbUxKq1Oq $ shasum -a 256 <file> # compare with the Files tab

A manifest whose signature fails must be rejected. A file whose size or sha256 does not match must be discarded. Verify a download

Model tree

1 model in the catalog name this one as their parent.

Fine-tunes
1
Fine-tunes 1
Get it
Download
$ HF_ENDPOINT=https://freeweights.allternit.com hf download ByteDance/Bernini-R
Open in Freeweights Studio

Pull, verify and run it in the Allternit app on Desktop, web or phone.

Signed manifest
minisign, key 2DC28CC7B26A283B. Bernini-R.json. Provenance. Takedown history: none.
From: laion <huggingface.co/laion>Subject: a2-rl-e2egit_large-50-32B
From: laion <huggingface.co/laion>Subject: a3-rl-DCAgent_exp_rpt_e2egit-large-15-8B
From: laion <huggingface.co/laion>Subject: a3-rl-DCAgent_exp_rpt_e2egit-v2-10-8B
From: laion <huggingface.co/laion>Subject: a3-rl-DCAgent_exp_rpt_pymethods2test-large-80-8B
From: laion <huggingface.co/laion>Subject: a3-rl-DCAgent_exp_rpt_unitsyn-python-large-10-8B
From: laion <huggingface.co/laion>Subject: a3-rl-DCAgent_mix_h2_language_proportional-65-8B