Unified Parallel SamplerCustom Advanced
The most flexible sampler Raylight ships
- noise_list
- guider
- sampler
- sigmas
- latent_image
- output
- denoised_output
- ray_actors
This is the top of the Raylight sampler food chain: a custom-sampling sampler that combines the Unified parallel machinery (USP + FSDP + CFG + data-parallel in one graph) with a guider-based CFG system and a hand-built SIGMAS schedule. If you're running a serious multi-GPU setup and want per-GPU prompts and a custom schedule and guider-level CFG control, this is the node. It's also the most complex, so don't start here.
Raylight is Komikndr's multi-GPU pack - the "why buy a 5090 when two 5070s" crowd. Under Raylight/extra/custom_sampling/samplers, this is the Advanced sibling of Unified Parallel SamplerCustom: same list-based data-parallel inputs, but instead of positive/negative/cfg floats, CFG is delegated to a guider object.
How it works
Inputs: add_noise (boolean), noise_list, guider, sampler, sigmas, and latent_image. Outputs: output (the sampled latent, as a list per DP group), denoised_output (the model's denoised prediction, also a list), and the ray_actors passthrough.
There's no ray_actors input because the guider carries the model chain - you build it with Raylight's guider nodes under Raylight/extra/custom_sampling/guiders: Ray Basic Guider, Ray CFG Guider (positive/negative/cfg), or Ray DualCFG Guider (two conditionings at independent scales, regular or nested style). Feed that plus a sampler object and sigmas schedule, and each data-parallel group gets run through the full parallel machinery with its own slot in noise_list.
The denoised_output is the genuinely useful extra here: it's the model's clean prediction before renoising, which is what you want for noise-injection tricks, guidance rescaling, or just inspecting what the model thinks the image is. The plain samplers don't hand that to you.
The inputs that matter
- guider - CFG control lives here, including DualCFG if your workflow runs two scales at once.
- noise_list - per-DP-group seeds; one item shares a seed across groups.
- sampler / sigmas - your custom chain, same as any custom-sampling node.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/komikndr/raylight
cd raylight
<your_python> -m pip install -r requirements.txt
or ComfyUI Manager → search raylight.
Common issues
Three layers of things to get wrong, in increasing order of pain: output lists (index before decoding), the parallel-config math (Ulysses × Ring × CFG × DP must equal your GPU count), and the guider itself - it must be a Raylight RAY_GUIDER, and since it carries the model chain, a stale guider after a re-init will silently talk to a dead cluster. Build it as: re-init actors → rebuild guider → feed sampler. If you only need one prompt per generation with a custom schedule, the simpler XFuser SamplerCustom Advanced covers you without the list machinery.
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 | — |