Nodes/DiffSynth-ComfyUI/DiffSynth: Qwen Video Edit Loader
ComfyUI Node

DiffSynth: Qwen Video Edit Loader

The five ModelConfig files this thing really needs

By modelscope·Created about a month ago·Updated a day ago· 8
DiffSynth: Qwen Video Edit Loader
  • model_configs
  • tokenizer_config
  • processor_config
  • vram_limit
  • pipe
◄torch_dtypebfloat16►
◄devicecuda►

Every pipeline in this pack has a matched pair: a Loader that assembles the model from files on disk, and an Inference node that samples with it. This is the Qwen Video Edit half. It has no widgets for prompts or steps - it downloads, loads, applies your VRAM strategy, and hands you back a pipe object that the inference node consumes.

What goes in

Required, in the node's own words:

  • torch_dtype - bfloat16 (default), float16, float32. bfloat16 is the sane pick on anything Ampere or newer.
  • device - cuda or cpu. CPU works and is unbearable; treat it as a debugging mode.
  • model_configs - the merged list from a Merge ModelConfigs node. This is the required path to your weights.

Optional:

  • tokenizer_config - a single ModelConfig pointing at the tokenizer.
  • processor_config - a single ModelConfig pointing at the processor.
  • vram_limit - from a VRAM Limit node.

Output is one socket, pipe, which wires into DiffSynth: Qwen Video Edit Inference.

The file list, up front

This is the part that wastes an evening if nobody tells you. The pipeline wants a DiT plus an adapter, a text encoder, and the Wan 2.1 VAE - and the tokenizer and processor arrive as their own configs, not as part of the weights. The pack's own example graph resolves to:

| Where | model_id | origin_file_pattern | |---|---|---| | ModelConfig | yunpeng1998/Qwen-Video-Edit | 360P/step-30000.safetensors | | ModelConfig | Qwen/Qwen-Image | text_encoder/model*.safetensors | | ModelConfig | Wan-AI/Wan2.1-T2V-1.3B | Wan2.1_VAE.pth | | → tokenizer_config | Qwen/Qwen-Image | tokenizer/ | | → processor_config | Qwen/Qwen-Image-Edit | processor/ |

Merge the first three into model_configs; send the last two into the two config inputs. Getting those two swapped is a real failure mode - the tokenizer is the base model's, the processor is the editor's, and they are not interchangeable.

Downloads happen when the ModelConfig nodes execute, not when the Loader runs, so you can queue once and watch the progress bars do their thing. Files land under models/<model_id>/ relative to whatever directory you launched ComfyUI from. Set DIFFSYNTH_MODEL_BASE_PATH before launching if you'd rather they lived on a big drive, and DIFFSYNTH_DOWNLOAD_SOURCE=huggingface if ModelScope is slow from where you are. DIFFSYNTH_SKIP_DOWNLOAD=true makes it refuse to fetch at all, which is how you find out what's actually missing.

Install

Manager → search DiffSynth-ComfyUI → install → restart. Manual:

pip install git+https://github.com/modelscope/DiffSynth-Studio.git
cd ComfyUI/custom_nodes && git clone https://github.com/modelscope/DiffSynth-ComfyUI.git

Quantization (optional) needs the extras:

pip install "diffsynth[quant] @ git+https://github.com/modelscope/DiffSynth-Studio.git"

VRAM, without guessing

The Loader doesn't decide how memory is spent; the VRAM Config you plug into each ModelConfig does, and the VRAM Limit you plug in here caps the total. If you skipped both, you get DiffSynth-Studio's defaults, which are cautious - everything parked in CPU RAM at bfloat16 until it's needed on the GPU. That is slow but it fits, which is exactly the trade this pack is built around.

Cheap wins: bfloat16 for torch_dtype, a VRAM Limit with buffer_size around 0.5–1.0 GB so ComfyUI's own caching doesn't fight the pipeline, and one GPU-only ModelConfig at a time while you're debugging. Don't set device to cpu and then blame the sampler for being slow.

Common issues

  • "Model not found" or a five-minute silence on first run. You're downloading. Watch the terminal.
  • Socket missing on the node. Inputs here are generated from from_pretrained of your installed diffsynth at ComfyUI startup. An old framework means fewer sockets; restart after upgrading.
  • Runs, then falls over on the sampler. That's the inference node - usually the decode tiling, not the loader.
  • Two loaders in one graph. Fine, but each holds its own copy of the weights in host RAM. Sequential is kinder.
CategoryDiffSynth/loader

Inputs (6)

NameTypeDefaultDescription
torch_dtypeCOMBObfloat163 options: bfloat16, float16, float32
deviceCOMBOcuda2 options: cuda, cpu
model_configsDIFFSYNTH_MODEL_CONFIG_LIST—
tokenizer_configoptDIFFSYNTH_MODEL_CONFIG—
processor_configoptDIFFSYNTH_MODEL_CONFIG—
vram_limitoptDIFFSYNTH_VRAM_LIMIT—

Outputs (1)

NameTypeDescription
pipeDIFFSYNTH_PIPE—