Nodes/ComfyUI-DSD/DSD Model Downloader
ComfyUI Node

DSD Model Downloader

Downloads the multi-gigabyte DSD model and loads it in one shot

By irreveloper·Created about a year ago·Updated about a year ago· 42
DSD Model Downloader
    • dsd_model
    • model_path
    • lora_path
    repo_idprimecai/dsd_model
    force_downloadfalse
    devicecuda
    dtypebfloat16
    low_cpu_mem_usagetrue
    model_cpu_offloadfalse
    sequential_cpu_offloadfalse

    This is the first node you'll add from this pack, because nothing else in it works until the model exists. Despite the name, it does two jobs at once: it pulls the DSD model down from Hugging Face and loads it into a ready-to-use dsd_model object. There's no separate "download-only" mode - run it once and it's effectively your model loader, too.

    What it downloads

    By default it snapshots the repo primecai/dsd_model - the official weights for the Diffusion Self-Distillation subject-preservation model - into ComfyUI/models/dsd_model/. It expects a specific layout: a transformer checkpoint at transformer/diffusion_pytorch_model.safetensors plus config.json, and a LoRA at pytorch_lora_weights.safetensors. After the snapshot it verifies all three exist and raises a clear error if the repo structure doesn't match - which is what will happen if you point it at a random repo_id that happens to have a different layout.

    Here's the part people don't expect: loading also reaches for the black-forest-labs/FLUX.1-schnell base from HF, because DSD is a conditional model on top of FLUX. So the first run can pull down a lot of gigabytes across two repos, and it can look hung when it's just quietly downloading. Let it finish. The good news, per the code comment, is that FLUX.1-schnell doesn't require an HF login - no auth token dance.

    The inputs

    The important ones are actually the load-time knobs, not the download knobs:

    • repo_id - primecai/dsd_model by default. Only change this if you're using a custom DSD repo with the same structure.
    • force_download - set true to re-download even when files exist. Normally the node skips the download if everything's already on disk.
    • dtype - bfloat16 default, and the tooltip is right: it's the best speed/memory tradeoff. float16 and float32 are there for compatibility, not because you want them.
    • low_cpu_mem_usage (true default) - reduces CPU RAM during loading; leave it on.
    • model_cpu_offload / sequential_cpu_offload - off by default for good reason; the tooltips warn they slow things down. DSD is memory-hungry (the community's off-the-cuff figure is around 24GB of VRAM), so if you're under that, sequential offload is the last-resort lever.

    It has no device control beyond cuda/cpu and no token field in the brief - auth is handled by HF_TOKEN if you ever need a gated repo, but the defaults work without one.

    Outputs

    • dsd_model - the loaded pipeline. This is what plugs into the DSD Image Generator's dsd_model input.
    • model_path / lora_path - the absolute paths to the files it used. Handy for wiring into the DSD Model Loader later (if you ever rebuild your graph without re-downloading) or just for confirming where things landed.

    Common issues

    The node prints progress to the console and updates its own status text, so if a run "fails silently" check the terminal first. The two real-world failure modes are: a custom repo_id whose structure doesn't match (clear error, as above), and a download interrupted by a flaky connection - that's what resume_download=True and force_download are for. And if you get import errors on first install, the pack needs its heavier dependencies (torch, diffusers, transformers, accelerate, peft, sentencepiece); ComfyUI Manager handles requirements.txt for you, but a manual clone means running pip install -r requirements.txt yourself.

    CategoryDSD

    Inputs (7)

    NameTypeDefaultDescription
    repo_idSTRINGprimecai/dsd_model
    force_downloadBOOLEANfalse
    deviceCOMBOcuda2 options: cuda, cpu
    dtypeCOMBObfloat16bfloat16 provides best speed/memory tradeoff
    low_cpu_mem_usageBOOLEANtrueReduces CPU memory usage during model loading. Recommended for faster loading.
    model_cpu_offloadBOOLEANfalseOffloads state dict to reduce memory usage during loading. May slow down loading speed.
    sequential_cpu_offloadBOOLEANfalseEnables sequential CPU offloading. Only use if low on VRAM. Significantly impacts loading speed.

    Outputs (3)

    NameTypeDescription
    dsd_modelDSD_MODEL
    model_pathSTRING
    lora_pathSTRING