Data Parallel SamplerCustom Advanced
The fully modular Data Parallel sampler
- noise_list
- guider
- sampler
- sigmas
- latent_image
- output
- denoised_output
- ray_actors
If DPSamplerCustom is the mid-tier DP sampler, this is the top shelf: every piece of guidance is swappable, because instead of a hardcoded cfg/positive/negative trio it takes a RAY_GUIDER object. You build the guider with RayBasicGuider, RayCFGGuider, or RayDualCFGGuider, hand it to this node, and the sampler just follows whatever guidance you constructed. That's the core ComfyUI SamplerCustomAdvanced design, ported to run once per GPU in Data Parallel mode.
The inputs that matter. Required: add_noise (boolean, default true), noise_list (the per-GPU seed list from DPNoiseList), guider (a RAY_GUIDER), sampler (a SAMPLER object), sigmas (a SIGMAS schedule), and latent_image. Note the absence of ray_actors as an explicit input here - the guider already carries the cluster context, so the chain is: RayInitializer → guider → this sampler.
A typical build: RayCFGGuider (or RayBasicGuider for CFG=1 models) → guider, RayBasicScheduler → sigmas, a sampler-selector node → sampler, DPNoiseList → noise_list. Wire DPConditioningList into the guider's conditioning if you want different prompts per GPU.
Outputs. Three, and the third is the reason you picked the "Advanced" variant: output (latent, one per GPU), denoised_output (latent, one per GPU - the model's prediction at the final step, useful for diagnostics or refiner setups), and ray_actors passed through. If you've used core SamplerCustomAdvanced, denoised_output is the same thing you know there: the clean-ish prediction, distinct from the noisy final sample.
Why you'd choose this over the alternatives. The guider indirection pays off when guidance gets complicated. Dual CFG for a style-plus-content setup, Basic guider for Flux/Wan/Hunyuan where CFG is effectively 1, a custom guider you built yourself - all of them slot in here without touching the sampler. If you only need plain CFG at a fixed scale, DPSamplerCustom is less wiring for the same result, and if you never need custom samplers at all, DPKSamplerAdvanced is simpler still. This node is for people who've already committed to the custom-sampling stack.
Gotchas. Same family rules: DP requires Ulysses and Ring degrees at 0 in the initializer, each GPU holds a full model copy (throughput, not VRAM-fitting), and the latent outputs are lists - one entry per GPU, decode accordingly. The denoised_output list being per-GPU surprises people more than it should; it's just the same parallelism applied to the second output.
Install. One pack install:
cd ComfyUI/custom_nodes
git clone https://github.com/komikndr/raylight
cd raylight
pip install -r requirements.txt
or ComfyUI Manager → search "raylight" → Install, then restart. The heavy dependency is xfuser; FlashAttention is optional now; Windows means WSL2.
Before you build the full graph, check the README's model tables for DP support - a surprising number of the newest models are "code-ready, awaiting testing" or CFG-only, and nothing in this node will tell you that until it errors.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| add_noise | BOOLEAN | true | — |
| noise_list | NOISE | — | |
| guider | RAY_GUIDER | — | |
| sampler | SAMPLER | — | |
| sigmas | SIGMAS | — | |
| latent_image | LATENT | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| output | LATENT | — |
| denoised_output | LATENT | — |
| ray_actors | RAY_ACTORS | — |