DFSampler
One node that runs the whole pipeline, for better and worse
- config
- IMAGE
DFPipelineConfig sets up the multi-GPU show; DFSampler is where it actually runs. In one node you get a model loaded, a sampler denoising across every GPU you gave it, and a decoded image coming out the other end. No CLIP encoder, no separate positive/negative conditioning nodes, no latent, no VAE. Just a config wire in, two text boxes, and an IMAGE out. It's the whole generation pipeline collapsed into a single box - which is both the appeal and the trap.
Why it looks the way it does
Normal ComfyUI sampling is a chain: load checkpoint, encode prompts into conditioning, run a KSampler over a latent, decode the VAE. This node skips all of that because it wraps the upstream DistriFuser diffusers pipeline (DistriSDXLPipeline / DistriSDPipeline) wholesale. The pipeline handles text encoding, the parallel denoise, and VAE decode internally, so the wrapper only needs to expose the prompt text and the sampling numbers. It's ComfyUI as a thin shell over a research library.
The tradeoff is that this node is an island. You can't splice a ControlNet in mid-denoise, can't drop a hires-fix pass between sampler and VAE, can't preview the latent. The things that make ComfyUI ComfyUI - visible stages you can rewire - don't exist inside this box. You take it as-is or you don't take it.
The inputs that matter
- config (DF_CONFIG, required) - the config object from DFPipelineConfig. This is where the model, resolution, GPU count, and parallelism live; DFSampler inherits all of it.
- positive and negative (multiline strings) - your prompts, as plain text. Note they're not ComfyUI conditioning objects, so anything expecting a CONDITIONING wire won't connect.
- seed - standard. steps (default 30) and cfg (default 8) - the defaults skew a touch hot for SDXL, where the community sweet spot is more like 5–9; if output looks overcooked, drop CFG toward 7 first.
- clip_skip (default 1) - one means no skipping. This pack targets the SD/SDXL family where CLIP skip exists and means something; just don't assume the same knob applies to newer architectures.
The single output is an IMAGE, which plugs into a PreviewImage or SaveImage exactly like any other sampler's output.
Installing it
Same as the pack's config node - this is one repository, not two separate installs. ComfyUI Manager, search "distrifuser_comfyui", or:
cd ComfyUI/custom_nodes
git clone https://github.com/SlackinJack/distrifuser_comfyui
Then restart ComfyUI and, per the README, run clone_distrifuser_repo.sh before deploying - it fetches the upstream MIT Han Lab distrifuser code the wrapper imports. Don't skip that step; without it the sampler has nothing to call. Also be ready for the upstream's heavy dependency stack (PyTorch 2.2, CUDA 12+, a pinned diffusers) and for pulling diffusers-format HuggingFace checkpoints, which is not the models/checkpoints workflow you're used to.
Where people get burned
The README's known issue applies here too: the pipeline needs a restart to apply new settings, so don't expect config tweaks to hot-swap mid-session. And keep your expectations honest on speed. DistriFuser's real gains show up at high resolutions with fast interconnects; on two PCIe-connected consumer cards at a modest resolution, the communication overhead can leave you wondering why you bothered - the community consensus is roughly 1.5× for two GPUs, not 2×. Finally, don't fight the island: if your workflow needs ControlNet, regional prompting, or a two-pass upscale, either build it around this node entirely or skip the pack - it won't meet you halfway. The README's repeated "do not generate illegal or otherwise harmful content" warning is worth reading as a signal that this is unvetted research code, not a polished product.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| config | DF_CONFIG | — | |
| positive | STRING | — | |
| negative | STRING | — | |
| seed | INT | 00–4294967295 | — |
| steps | INT | 301–1024 | — |
| cfg | FLOAT | 8.00–100 | — |
| clip_skip | INT | 10–1024 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |