Nodes/RocM Ninodes/ROCMOptimizedCheckpointLoader
ComfyUI Node

ROCMOptimizedCheckpointLoader

The checkpoint loader with a cache, for when you re-run the same model a hundred times

By iGavroche·Created 11 months ago·Updated 4 days ago· 43
ROCMOptimizedCheckpointLoader
    • MODEL
    • CLIP
    • VAE
    ckpt_name
    use_cachetrue
    force_reloadfalse
    compatibility_modefalse

    Loading a checkpoint in ComfyUI feels free because the UI hides it - but under the hood, every fresh load reads a multi-GB file, converts tensors, and churns your VRAM. This node, the ROCm Ninodes pack's checkpoint loader, adds one genuinely useful thing on top of the stock behavior: an in-memory cache. Run the same checkpoint twice and the second time it hands you the already-loaded MODEL, CLIP, and VAE without touching disk. That's a small win on a single run and a real one if you iterate on prompts with the same base model.

    The inputs and outputs

    ckpt_name is the standard dropdown from your checkpoints folder. Then the interesting optional trio:

    • use_cache (default on) - if the same checkpoint is already loaded, return the cached (model, clip, vae) instead of reloading.
    • force_reload (off) - bypass the cache and load from disk, refreshing it. Your escape hatch when you swap files underneath ComfyUI or suspect a stale cache.
    • compatibility_mode (off) - enables extra validation for quantized or unusual models.

    Outputs are the standard MODEL, CLIP, VAE - wire them exactly like the stock Load Checkpoint.

    The cache mechanics are honest about their scope: it's a single-slot cache with eviction. Load checkpoint A, then B, and A gets dropped to keep memory bounded; load A again and it's a fresh disk read. That's the right trade - it doesn't try to be a model hoarder, it just makes the common case (re-running the same model) cheap.

    The ROCm angle and the history

    The pack's changelog shows this node got real attention for a reason: there was a bug where reusing a cached checkpoint using MixedPrecisionOps (e.g. an LTX FP8 text encoder) crashed with "Cannot set version_counter for inference tensor" - it needed a matching fix in ComfyUI's own comfy/ops.py. That's the flavor of this pack's relationship with AMD: it runs close to ComfyUI internals, and edge cases in quantized model handling surface as crashes that get patched over releases. Keep the pack updated.

    Install

    It's part of ROCm Ninodes - ComfyUI Manager → search "ROCm Ninodes," or

    cd ComfyUI/custom_nodes
    git clone https://github.com/iGavroche/rocm-ninodes.git
    

    Restart, under ROCm Ninodes → Loaders. Light deps (numpy, Pillow, psutil, gguf, safetensors), no model files. Works with .safetensors, .ckpt, .pt, .pth.

    The honest take

    The cache is the reason to use this over stock - everything else is a faithful wrapper around ComfyUI's native loading with ROCm diagnostics. A couple of practical notes: on a unified-memory Strix Halo APU the cache is nearly free, so keep use_cache on; on a discrete card with limited VRAM, remember the cache holds the model, so it's trading RAM/VRAM for speed - if you swap checkpoints constantly, that's the one case where force_reload is your friend. And if you get the version_counter crash on an FP8/LTX model, it's the known quantized-reuse issue - update both the pack and ComfyUI before anything else.

    CategoryROCm Ninodes/Loaders

    Inputs (4)

    NameTypeDefaultDescription
    ckpt_nameCOMBOCheckpoint file to load
    use_cacheoptBOOLEANtrueIf True and same checkpoint already loaded, return cached (model, clip, vae) without reloading
    force_reloadoptBOOLEANfalseIf True, load from disk and update cache (bypasses cache)
    compatibility_modeoptBOOLEANfalseEnable extra validation for quantized/unusual models

    Outputs (3)

    NameTypeDescription
    MODELMODEL
    CLIPCLIP
    VAEVAE