DiffSynth: Wan Video Loader
One loader, every Wan task, and a redirect you should leave alone
- model_configs
- tokenizer_config
- audio_processor_config
- vram_limit
- pipe
Wan is where local video consolidated and then stopped: Wan 2.1 and 2.2 are the open weights, the numbered series above them went API-only, and most 2026 open video models are built on the frozen 2.1/2.2 checkpoints. This Loader is how the DiffSynth pack loads them.
Inputs
Required:
torch_dtype-bfloat16(default),float16,float32.device-cudaorcpu.model_configs- merged from Merge ModelConfigs. Required, and this is where the entire task definition actually lives, for reasons below.
Optional:
tokenizer_config- the UMT5 tokenizer. The framework's default points atWan-AI/Wan2.1-T2V-1.3B'sgoogle/umt5-xxl/folder; if you're loading a 14B or a 2.2 checkpoint, that same tokenizer directory is what you want.audio_processor_config- only relevant to the audio-conditioned Wan tasks (speech-to-video and friends). The T2V and I2V example graphs leave it empty.redirect_common_files- on by default, and you should leave it on. More below.use_usp- Unified Sequence Parallelism across multiple GPUs. Single card? Off.vram_limit- from a VRAM Limit node.
Output: pipe, into DiffSynth: Wan Video Inference.
One loader, six jobs
There is exactly one Wan loader in the pack, and it has to serve text-to-video, image-to-video, first/last-frame, video-to-video, VACE control, Animate, speech-to-video and the camera-control models. The Loader has no idea which one you want. It loads whatever model_configs tells it to, and the Inference node's connections decide which parts of the pipeline actually run. So the model list is the task:
- T2V 1.3B:
Wan-AI/Wan2.1-T2V-1.3B→diffusion_pytorch_model*.safetensors, plus the text encoder and VAE below. - T2V 14B:
Wan-AI/Wan2.1-T2V-14B→ same shape, much bigger file. - Any Wan workflow needs the text encoder (
models_t5_umt5-xxl-enc-bf16.pth) and the VAE (Wan2.1_VAE.pth) as their own ModelConfigs, because none of it ships bundled.
Read the pack's example JSON for whichever task you're running and copy its ModelConfig list verbatim. Guessing costs you a 30GB download.
What redirect_common_files actually does
Four filenames - models_t5_umt5-xxl-enc-bf16.pth, the CLIP encoder, Wan2.1_VAE.pth, Wan2.2_VAE.pth - get rewritten at load time to pre-converted .safetensors versions on DiffSynth-Studio/Wan-Series-Converted-Safetensors, with a console message explaining the swap. It's a de-duplication trick: the VAE you need is identical across a dozen Wan workflows, so the framework points them all at one converted copy instead of re-downloading a .pth per repo. Turn it off only if you're offline with your own local copies, or if a checkpoint genuinely needs the original file.
Install
Manager → search DiffSynth-ComfyUI → install → restart, or:
pip install git+https://github.com/modelscope/DiffSynth-Studio.git
cd ComfyUI/custom_nodes && git clone https://github.com/modelscope/DiffSynth-ComfyUI.git
First run downloads the transformer, the UMT5 encoder and the VAE. For 14B that's tens of gigabytes and the single longest wait in the whole process; set DIFFSYNTH_MODEL_BASE_PATH to a drive with room before the first queue, because the default is models/ under ComfyUI's working directory.
Realistic expectations
The 1.3B runs on modest cards. The 14B wants 12GB minimum with aggressive offload and 24GB to be comfortable; 81 frames is the native context and 480p is the sane default output. Don't expect a 12GB card to be pleasant at 720p 14B without quantization - that's what the pack's Quantization Config and ModelConfig quant_config input are for.
Common issues
- It loads, the sampler errors immediately. Wrong file set for the task: an I2V graph with T2V weights, or a VACE workflow without the VACE checkpoint in
model_configs. - Repeated multi-gigabyte downloads.
redirect_common_filesoff, or patterns that don't match the on-disk layout. - A socket that isn't there. Loader inputs are generated from your installed
diffsynthversion at ComfyUI startup. Upgrade the library, restart ComfyUI. use_uspon a single GPU. It won't parallelise anything; it'll just look for infrastructure you don't have.
Inputs (8)
| 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 | — | |
| audio_processor_configopt | DIFFSYNTH_MODEL_CONFIG | — | |
| redirect_common_filesopt | BOOLEAN | true | — |
| use_uspopt | BOOLEAN | false | — |
| vram_limitopt | DIFFSYNTH_VRAM_LIMIT | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| pipe | DIFFSYNTH_PIPE | — |