Nodes/ComfyUI-BerniniR Wrapper/Bernini-R Dual Expert Sampler
ComfyUI Node

Bernini-R Dual Expert Sampler

The high-noise/low-noise sampler Bernini-R's Wan lineage expects

By xiaolibai-sys·Created 2 months ago·Updated 2 months ago· 9
Bernini-R Dual Expert Sampler
  • high_noise_model
  • low_noise_model
  • positive
  • negative
  • latent_image
  • context_options
  • guidance_config
  • block_swap_args
  • guidance_schedule
  • latent
split_step10
seed0
steps20
cfg6.0
sampler_name
scheduler
denoise1.00
flow_shift3.0
add_noisetrue

Wan 2.2 - Bernini-R's parent - uses a two-pass architecture: a high-noise model handles motion and scene composition in the early steps, then a low-noise model refines detail in the late steps. BerniniR_DualExpertSampler is this pack's implementation of that split, letting you hand it two different model handles and switch between them mid-run. If you've seen the "high-noise vs low-noise pass" advice about Wan 2.2 speed LoRAs - only apply them to the low-noise pass - this is the node that makes that trick available in this pack.

How it works

You give it a high_noise_model handle and a low_noise_model handle, plus a split_step: after that many denoising steps, the sampler swaps from the high-noise instance to the low-noise one. It's the same sampler surface as BerniniR_KSampler - same conditioning, latent, steps, cfg, sampler/scheduler, flow_shift, and the same optional context_options, guidance_config, and block_swap_args wires. The block swap note in the node's description matters: because the sampler can reload models between phases, connecting block_swap_args keeps VRAM from spiking when the second model loads.

The inputs that matter

  • high_noise_model / low_noise_model - two BERNINI_MODEL_HANDLEs. They don't have to be different checkpoints; the classic setup is the same model on both with different LoRAs or compile settings, or the high-noise side at full quality and the low-noise side with a speed LoRA. That's the Wan 2.2 community's well-earned compromise: keep scene composition and motion at full fidelity, let the refinement pass run fast.
  • split_step - switch point. Default 10 out of 20 steps. For a 20-step run that's roughly half-and-half; tune by looking at where your videos stop changing structurally.
  • steps / cfg / sampler_name / scheduler / flow_shift - same meanings as BerniniR_KSampler. euler with simple or normal is a fine start; Bernini was trained with flow_shift 3.0.

Output

One: latent (LATENT) → BerniniR_VAEDecode.

Honest notes

The dual-expert path is where this pack's lazy-loading design shines - each model loads on demand and the handle layer's LRU cache means swapping between two handles doesn't re-read files every run. But it's also more machinery to get wrong. If you're on a small card, remember both models can't sit in VRAM comfortably; that's what the block_swap_args input is there for, and the example workflow in the repo connects one. Start with BerniniR_KSampler before reaching for this node - you need a stable baseline to know whether the second expert is actually helping. And if you only have one checkpoint and no real reason to split, you don't need this node at all; the single-sampler path does plain Bernini-R perfectly well.

CategoryBernini-R/Sampling

Inputs (18)

NameTypeDefaultDescription
high_noise_modelBERNINI_MODEL_HANDLEHandle for high-noise (early) denoising steps
low_noise_modelBERNINI_MODEL_HANDLEHandle for low-noise (late) denoising steps
split_stepINT101–1000Switch from high_noise to low_noise model after this many steps
seedINT00–18446744073709550000
stepsINT201–10000
cfgFLOAT6.00–100
sampler_nameCOMBO44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38
schedulerCOMBO9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3
positiveCONDITIONING
negativeCONDITIONING
latent_imageLATENT
denoiseFLOAT1.000–1
flow_shiftFLOAT3.00.1–100
context_optionsoptBERNINI_CTXContext window config from BerniniR_ContextWindow. Connect to enable temporal window tiling.
guidance_configoptBERNINI_GUIDANCE_CONFIGGuidance strategy from BerniniR_GuidanceConfig.
block_swap_argsoptBERNINI_BLOCKSWAPBlock swap config from BerniniR_BlockSwapArgs. Leave disconnected to disable.
add_noiseoptBOOLEANtrue
guidance_scheduleoptBERNINI_GUIDANCE

Outputs (1)

NameTypeDescription
latentLATENT