ComfyUI Node

DFSampler

One node that runs the whole pipeline, for better and worse

By SlackinJack·Created 2 years ago·Updated about a year ago· 0
DFSampler
  • config
  • IMAGE
positive
negative
seed0
steps30
cfg8.0
clip_skip1

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.

CategoryDistrifuser

Inputs (7)

NameTypeDefaultDescription
configDF_CONFIG
positiveSTRING
negativeSTRING
seedINT00–4294967295
stepsINT301–1024
cfgFLOAT8.00–100
clip_skipINT10–1024

Outputs (1)

NameTypeDescription
IMAGEIMAGE