DiffSynth: Qwen Video Edit Loader
The five ModelConfig files this thing really needs
- model_configs
- tokenizer_config
- processor_config
- vram_limit
- pipe
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.bfloat16is the sane pick on anything Ampere or newer.device-cudaorcpu. 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_pretrainedof your installeddiffsynthat 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.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| torch_dtype | COMBO | bfloat16 | 3 options: bfloat16, float16, float32 |
| device | COMBO | cuda | 2 options: cuda, cpu |
| model_configs | DIFFSYNTH_MODEL_CONFIG_LIST | — | |
| tokenizer_configopt | DIFFSYNTH_MODEL_CONFIG | — | |
| processor_configopt | DIFFSYNTH_MODEL_CONFIG | — | |
| vram_limitopt | DIFFSYNTH_VRAM_LIMIT | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| pipe | DIFFSYNTH_PIPE | — |