Bernini v2 UniPC Sigmas
The scheduler you must not swap for a ComfyUI stock one
- plan
- SIGMAS
Every flow-matching model in the last couple of years made the Karras-and-exponential advice worthless, and Bernini v2 is no exception - but it's worse than that. Its official pipeline doesn't use any of the sigmas ComfyUI's scheduler menu offers. ByteDance shipped Bernini with a Diffusers UniPC sampler on a specific flow-sigma spacing, and if you reach for "linear" or "beta" out of habit, you are not sampling the model the way it was trained and tested. Bernini v2 UniPC Sigmas reproduces that spacing exactly: training timesteps spaced linearly from 999 down to 0, followed by the terminal zero sigma. It's the one scheduler this pack wants you to use, and it's trivial to set up because there's almost nothing to configure.
The inputs
- plan - the
BERNINI_V2_PLANoutput of Bernini v2 Plan. Yes, the scheduler consumes the plan; that's how it knows which task you're running so it can apply the official step count. - steps (default
40) - but only if use_task_defaults is off. With it on (the default), the node ignores your number and uses the official per-task step counts: 50 fort2iandt2v, 40 for the rest. - flow_shift (default
5) - the timestep-shift knob for the flow schedule. This is the modern "why are my images flat" control; 5 is the value the quality tests used, and the Wan loaders carry their own shift too.
Output is a single SIGMAS tensor that feeds the sampler's sigmas input alongside the guider and noise.
Why it has to be this one
Two things would quietly break if you used a stock scheduler. First, the spacing is different: this node matches the Diffusers UniPC flow-sigma layout, which is not the same as ComfyUI's generic "linear" schedule even though the names sound similar. Second, the sampler on the other end (Bernini v2 Flow UniPC BH2) is the order-2 UniPC solver for flow prediction - ComfyUI's built-in UniPC assumes a VP noise schedule and is simply not equivalent, per the pack's own documentation. The scheduler and that sampler are a matched pair: keep them together.
Practical notes
- Trust the default.
use_task_defaults: true+flow_shift: 5+ whatever steps the plan says is the exact configuration the pack's quality tests were run under. Deviate when you have a reason, not just because a knob exists. - When you do tune: raise
flow_shiftif early results look washed out, lower steps if you're iterating and want speed. Just don't expect 4-step distillation behavior - Bernini v2 is not a distilled model, and the community's speed-LoRA wisdom from Wan 2.2 (keep the high-noise pass clean) transfers only partially. - You still need the rest of the chain. Sigmas alone do nothing; this node is the schedule that SamplerCustomAdvanced walks while the Renderer Guider's guider decides the conditioning at each step.
Installing it
Standard pack install: ComfyUI Manager → search "Bernini v2 (Native)", or git clone https://github.com/T8mars/comfyui-bernini-v2-T8.git into ComfyUI/custom_nodes, then restart (needs ComfyUI 0.33+). The node itself ships in the pack with no extra Python deps - the heavy part is the models (the recommended Balanced INT8 repack, ~45.6 GiB from t8star/Bernini-V2-Comfy, into ComfyUI/models/bernini_v2/). Load the example t2v.json workflow and you'll see this node sitting between the Plan and the sampler, doing the unglamorous work that makes the output look like the release demos.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| plan | BERNINI_V2_PLAN | — | |
| steps | INT | 401–10000 | — |
| flow_shift | FLOAT | 5.000.01–100 | — |
| use_task_defaults | BOOLEAN | true | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| SIGMAS | SIGMAS | — |