DiffSynth: JoyAI Image Loader
JoyAI Image Loader — the quiet one, and how to wire it
- model_configs
- processor_config
- vram_limit
- pipe
JoyAI-Image-Edit is JD.com's open image editor, published under the jd-opensource org. It's the quietest model in this pack by a distance - search the community and you'll mostly find a different JoyAI project (the Echo video/voice work), because the editing model never got a hype cycle. Which cuts both ways: no crowd-sourced settings, but also no crowd, so the pack's own template is your best documentation.
This Loader brings up the pipeline. You wire it, then hand the pipe to DiffSynth: JoyAI Image Inference. Required sockets are the usual trio - model_configs (merged, from DiffSynth: Merge ModelConfigs), torch_dtype (bfloat16 / float16 / float32), device (cuda / cpu) - and there's one optional socket to care about:
processor_config- a single ModelConfig pointing at the processor directory. JoyAI-Image-Edit keeps its understanding stack in aJoyAI-Image-Und/folder, and the template hands that directory to this socket on its own, separate from the merged weights.vram_limit- from a VRAM Limit node.
What the ModelConfigs look like
The template is a good reminder that not every model in this ecosystem ships as safetensors. For jd-opensource/JoyAI-Image-Edit it declares three files:
transformer/transformer.pth- a.pthcheckpoint, not safetensors.JoyAI-Image-Und/model*.safetensors- the understanding/tower weights.vae/Wan2.1_VAE.pth- Wan 2.1's VAE, borrowed wholesale, also as a.pth.
Merge those three, then add a fourth ModelConfig with the same repo id and pattern JoyAI-Image-Und/ into processor_config. That trailing slash means "the directory", and it's how this pack consistently hands over tokenizer and processor folders without you listing files.
Install
# ComfyUI Manager: search "DiffSynth-ComfyUI" → Install → restart
pip install git+https://github.com/modelscope/DiffSynth-Studio.git
cd ComfyUI/custom_nodes
git clone https://github.com/modelscope/DiffSynth-ComfyUI.git
cd .. && python main.py
# quantization extras, if you want to quantize any module:
pip install "diffsynth[quant] @ git+https://github.com/modelscope/DiffSynth-Studio.git"
Weights download on first execute, from ModelScope unless you set download_source to huggingface per node. If you already have the files, put them where you like and use the ModelConfig's path field instead of letting it download again.
Where people get burned
Assuming the repo naming is tidy. Three files in three formats from three different subfolders, plus a directory for the processor - a pattern typo here gives you a download that reports success and a loader that then can't find a component, and the error won't necessarily point at the file you got wrong.
Second: the VAE is Wan 2.1's, in .pth. If you have a workflow habit of swapping VAEs from your own collection, don't - this pipeline is wired to the one it ships with.
Third, and general to the pack: if there are no DiffSynth nodes in your node menu at all, DiffSynth-Studio isn't installed. The plugin imports it when it loads and registers nothing if that fails.
Inputs (5)
| 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 | — | |
| processor_configopt | DIFFSYNTH_MODEL_CONFIG | — | |
| vram_limitopt | DIFFSYNTH_VRAM_LIMIT | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| pipe | DIFFSYNTH_PIPE | — |