AddNoise (Ray)
AddNoise, but on the Ray cluster
- ray_actors
- sigmas
- latent_image
- LATENT
Every custom-sampling graph in ComfyUI starts the same way: a latent, a sigma schedule, and a burst of noise scaled to match that schedule. RayAddNoise is that first primitive, but running on the Ray workers instead of the host. If you've ever built a sampler graph with the core AddNoise node, you already know exactly what this does - the only new part is that it's cluster-aware.
The inputs that matter. All four are required:
noise_seed- the seed for the noise you're injecting. Different seeds, different generations. If you're building this graph for Data Parallel mode, note this is a single seed; per-GPU seeds live inDPNoiseListand get consumed by the DP samplers, not here.force_empty_noise- a boolean that, when enabled, injects empty/zero noise instead of the seeded burst. That's the trick for img2img and video continuity work: you keep the schedule but skip the fresh noise, so the sampler refines what's already in the latent.ray_actors- the initializer chain, required everywhere in this pack.sigmas- theSIGMASschedule that determines the noise level to add (typically fromRayBasicSchedulerorRayBetaSamplingScheduler).latent_image- the latent you're starting from (an empty latent, an encoded image, or aDPLatentListoutput).
Output. One LATENT, noisified to match the current sigma. That feeds whatever sampler comes next in your custom graph.
Where it sits in the workflow. This node is the first rung of the distributed custom-sampling ladder: RayAddNoise → sampler → whatever comes next. The reason Raylight ships its own version rather than letting you reuse core AddNoise is that the workers - not the host - hold the model, so noise injection needs to happen where the sampling happens. Same math, different process.
The gotcha people hit. Pairing RayAddNoise with a Data Parallel sampler and expecting per-GPU seed behavior. It doesn't do that - this is a single-seed, single-job primitive. If you want N seeds across N GPUs, use DPNoiseList with DPKSamplerAdvanced or DPSamplerCustom instead. Also remember that a custom graph like this still needs the full mode setup: for DP, Ulysses and Ring degrees at 0; for the pack in general, the RayInitializer has to be in the graph or nothing will have spawned the workers at all.
Install. Ships with the pack - one install, all nodes:
cd ComfyUI/custom_nodes
git clone https://github.com/komikndr/raylight
cd raylight
pip install -r requirements.txt
or ComfyUI Manager → search "raylight" → Install, restart. The xfuser dependency is the heavyweight install; FlashAttention is optional; Windows realistically means WSL2.
If you're already comfortable with the core AddNoise primitive, you'll be fine here - think of it as the same node, one extra ray_actors wire, and a reminder that in the parallel world the noise has to be injected where the sampling happens.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| noise_seed | INT | 00–18446744073709550000 | — |
| force_empty_noise | BOOLEAN | — | |
| ray_actors | RAY_ACTORS | — | |
| sigmas | SIGMAS | — | |
| latent_image | LATENT | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| LATENT | LATENT | — |