Load Bernini v2 Wan Renderer
Two of these, high and low, or nothing renders
- MODEL
Bernini v2's renderer is a Wan 2.2 dual-expert model, and this is the node that loads it. You'll use it twice in every workflow: one instance pointed at wan_high (motion and composition) and one at wan_low (detail), and the two MODEL outputs feed the high/low inputs of Bernini v2 Renderer Guider. There is no single "load the whole renderer" node - the dual-expert split is the architecture, so the two-instance setup isn't ceremony, it's the model.
What makes it worth a paragraph of its own is what it loads. The models are sharded native-Comfy Wan checkpoints produced by the pack's tools/repack_diffusers.py - converted from ByteDance's Diffusers format into a form ComfyUI's own model manager understands. So unlike the other Bernini paths, there's no hidden Diffusers runtime: the loader hands you a standard MODEL that participates in normal device/offload management, low-VRAM mode, and the regular model cache. The output goes to the guider, and that's its only consumer.
The inputs that matter
- model_index - a dropdown over the shard indexes under
ComfyUI/models/bernini_v2/. It lists thewan_highandwan_lowindex files; pick the right one per instance. (The dropdown filters to the two Wan expert folders, so you can't accidentally load the Qwen planner through this node.) - flow_shift (default
5) - applied as a flow-matching shift on the sampling schedule. The pack's quality tests run at 5; it's the modern "composition vs detail" balance knob. Leave it unless you have a reason. - weight_dtype (default
bfloat16) -bfloat16,float16,default, and the three FP8 flavors (fp8_e4m3fn,fp8_e4m3fn_fast,fp8_e5m2).
Where people get burned
- The FP8 trap. If you're using the recommended Balanced INT8 package, its weights are pre-quantized with stock ComfyUI
int8_tensorwise+ ConvRot metadata. Those cannot be recast to FP8 - the loader raises an error telling you to pickbfloat16ordefault. The FP8 options are only for the un-quantized BF16 package. This is a guard, not a bug. - Wiring them backwards.
wan_highmust go tohigh_noise_model,wan_lowtolow_noise_model. It's the guider's boundary logic that decides the hand-off; swap them and you've inverted the whole denoising plan. - INT8 needs a current stack. The quantized format requires a current ComfyUI/comfy-kitchen and an NVIDIA GPU with SM 7.5 or newer for the optimized path. On RTX 50-series, the README recommends an isolated PyTorch/CUDA 13 environment for performance validation - PyTorch 2.7/CUDA 12.8 loads it but warns and isn't the optimized path.
- GGUF is a side-door. If you want GGUF-quantized renderers, that's bridged through the external ComfyUI-GGUF pack, not this node - and the planner still runs on native weights either way.
Installing it
Pack install: ComfyUI Manager → search "Bernini v2 (Native)", or git clone https://github.com/T8mars/comfyui-bernini-v2-T8.git into ComfyUI/custom_nodes, restart (needs ComfyUI 0.33+). Then the ~45.6 GiB Balanced INT8 package from t8star/Bernini-V2-Comfy into ComfyUI/models/bernini_v2/ (the folder layout - wan_high/, wan_low/, mllm/, vit_decoder/ - is what the dropdowns read), plus the Wan 2.1 VAE. Load the example t2v.json and you'll see the two instances side by side feeding the guider.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| model_index | COMBO | 0 options: | |
| flow_shift | FLOAT | 5.000.01–100 | — |
| weight_dtypeopt | COMBO | bfloat16 | 6 options: bfloat16, float16, default, fp8_e4m3fn, fp8_e4m3fn_fast, fp8_e5m2 |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | — |