Nodes/RocM Ninodes/ROCm KSampler Advanced
ComfyUI Node

ROCm KSampler Advanced

KSampler Advanced, re-homed for AMD with the step dials intact

By iGavroche·Created 11 months ago·Updated about 23 hours ago· 43
ROCm KSampler Advanced
  • model
  • positive
  • negative
  • latent_image
  • LATENT
add_noise
noise_seed0
steps20
cfg8.0
sampler_name
scheduler
start_at_step0
end_at_step10000
return_with_leftover_noise
optimize_for_videofalse
precision_modeauto
compatibility_modefalse

ROCm KSampler Advanced is what it says on the tin: KSampler Advanced, reskinned and moved under ROCm Ninodes/Sampling. The node description is refreshingly honest about it - "stock ComfyUI implementation." If you know what start_at_step does, you know what this node does. The pack's contribution is the same wrapper it puts on the plain KSampler: architecture and model auto-detection, ROCm backend settings, emergency memory cleanup for high-memory models, and a chatty progress callback with ETA.

How it works

The sampling path is a 1:1 copy of ComfyUI's KSampler (Advanced), so your images come out numerically identical to stock. The additions are environmental. Before sampling it detects your GPU (gfx1151/RDNA, gfx1100, gfx1030, CDNA) and your model's type - flow-matching models like Flux, LTX and WAN get logged and handled with appropriate backend settings, and high-memory models get a cleanup pass before and after so you don't run the last few steps against a fragmented heap. On NVIDIA or with compatibility_mode on, it quietly becomes the stock node with better logging.

The part you'll actually notice is the callback: a progress bar, live previews on stills, and a per-step ETA line in the terminal.

The inputs that matter

Same dials as stock Advanced, in the same order:

  • start_at_step / end_at_step - the reason this node exists. Start at step 15 of 20 and you're doing a light denoise pass; that's how img2img and refinement loops work here.
  • add_noise - set to "disable" when you're refining an existing latent and don't want fresh noise poured in.
  • return_with_leftover_noise - leave "disable" unless you're chaining samplers and want to hand off an unfinished latent.
  • steps, cfg, sampler_name, scheduler, positive, negative, latent_image, noise_seed - the standard fare. The README's AMD-friendly guidance applies: cfg 7–8, euler/heun/dpmpp_2m.

Note there's deliberately no denoise field here - that's the basic KSampler's job. Advanced controls denoising through the step range instead. Same as stock, and same confusion for new users.

The optional optimize_for_video, precision_mode (auto/fp32/bf16) and compatibility_mode toggles are shared with the plain sampler. LATENT out feeds VAE Decode as usual.

Installing it

Same pack install as everything else in ROCm Ninodes - ComfyUI Manager, search rocm-ninodes, or:

cd ComfyUI/custom_nodes
git clone https://github.com/iGavroche/rocm-ninodes.git

then restart. v1.x upgraders run uv run python tools/upgrade_to_v2.py once. The dependency story is unchanged: numpy, Pillow, psutil, gguf, safetensors on top of a ROCm PyTorch build; no models to download.

The honest version

You'd reach for this node for one of two reasons: you're on AMD and want the backend tuning plus terminal visibility without re-learning a sampler, or you're following an example workflow that already uses ROCm nodes and you want the whole graph in one pack. If you're perfectly happy with stock KSampler Advanced on an NVIDIA card, there's no compelling reason to switch - the value here is environmental, not algorithmic. But when an LTX workflow has you fighting memory pressure, having the cleanup and the logging in the same node you were already using is a small genuine win.

CategoryROCm Ninodes/Sampling

Inputs (16)

NameTypeDefaultDescription
modelMODEL
add_noiseCOMBO2 options: enable, disable
noise_seedINT00–18446744073709550000
stepsINT201–10000
cfgFLOAT8.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
start_at_stepINT00–10000
end_at_stepINT100000–10000
return_with_leftover_noiseCOMBO2 options: disable, enable
optimize_for_videooptBOOLEANfalseDisable previews/progress for multi-frame latents
precision_modeoptCOMBOautoROCm precision hint (no-op on CUDA/CPU)
compatibility_modeoptBOOLEANfalseForce pure stock behavior

Outputs (1)

NameTypeDescription
LATENTLATENT