ROCMOptimizedCheckpointLoader
The checkpoint loader with a cache, for when you re-run the same model a hundred times
- MODEL
- CLIP
- VAE
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.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| ckpt_name | COMBO | Checkpoint file to load | |
| use_cacheopt | BOOLEAN | true | If True and same checkpoint already loaded, return cached (model, clip, vae) without reloading |
| force_reloadopt | BOOLEAN | false | If True, load from disk and update cache (bypasses cache) |
| compatibility_modeopt | BOOLEAN | false | Enable extra validation for quantized/unusual models |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | — |
| CLIP | CLIP | — |
| VAE | VAE | — |