Anima PiD Loader
PiD is a diffusion model, not a VAE — this loader is why you don't have to care
- pid_model
If you're running Anima or Qwen-Image, you've hit the wall: native output tops out around 1024px, and "upscale" usually means bolting an ESRGAN pass plus an img2img denoise onto the end of your graph, or wiring up a ControlNet Tile rig. This pack replaces that whole chain with one decode node - Anima PiD Decode (4x SR) - and the loader you're reading about is the quiet node that feeds it. It's a two-input loader in the same shape as UNETLoader: pick a checkpoint, pick a dtype, and out comes an ANIMA_PID socket ready to wire into the decode node.
Don't skip it because it looks trivial. Everything that's genuinely confusing about PiD elsewhere gets solved inside this node.
Why the loader exists at all
NVIDIA's PiD (Pixel Diffusion Decoder) is a diffusion model that eats a latent and emits pixels directly - no VAE involved, and at 4× the native resolution. That's the catch if you've ever seen PiD in another UI: because it's a diffusion model, other implementations (Forge's, for one) expect you to load a text encoder, write a prompt, and manage it like img2img. People get properly stuck there - "how do I upscale an Anima image with PiD" keeps coming up as an actual question.
This pack's trick: the distilled 4-step path uses no classifier-free guidance, so the net conditions on a single fixed null caption. The author pre-baked that null (gemma(chi_prompt + ""), the model's own no-user-prompt embedding) into a ~1.4 MB file that ships with the node. No gemma text encoder, no ~5 GB download, no prompt input. PiD becomes a true drop-in replacement for VAE Decode.
The loader itself handles the rest of the mess. The (auto-download) entry - always first in the dropdown, on purpose - pulls the official v1.5 bf16 checkpoint from the public nvidia/PiD repo into ComfyUI/models/pid/ the first time you run it. Architecture isn't guessed from the filename: the loader reads the state dict and builds the network to match, so a hand-placed v1 file still loads cleanly (v1 and v1.5 differ in LQ trunk width, the injection gate, and a new PiT injection - the loader figures it out). And it wraps the net in a ComfyUI ModelPatcher, so the model manager owns its VRAM: it idles on CPU and only gets pulled to the GPU when the decode node actually runs, then gets evicted on demand when your next KSampler pass needs the space.
Inputs and outputs
There are exactly two inputs, and you realistically set one of them:
ckpt_name- leave it on(auto-download)unless you dropped your own.pth/.safetensorsintomodels/pid/. The sentinel stays in the list even before the file is fetched, so saved workflows that reference it don't break across restarts.dtype-bf16is the sensible default.fp16if you're VRAM-starved;fp32buys you nothing on most cards here.
Output: pid_model (type ANIMA_PID) → wire it into Anima PiD Decode (4x SR) alongside your KSampler's LATENT.
Install
The pack is genuinely light - its only real dependencies are torch/numpy/pillow, which ship with ComfyUI. Via ComfyUI Manager: search "Anima PiD", install, restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/sorryhyun/ComfyUI-Anima-PiD
Then restart ComfyUI. No manual model download - the loader fetches the checkpoint on first use. If you'd rather place it yourself, drop the .pth into ComfyUI/models/pid/ and it shows up in the dropdown.
Gotchas worth knowing
- The weights are NVIDIA NSCLv1 - non-commercial. Fine for personal and research use, not for shipping a product. The wrapper code is MIT and the vendored PiD network is Apache-2.0; the weights are the constraint.
- If the auto-download 404s, your node is stale. Upstream moved the pre-v1.5 checkpoint to
checkpoints_deprecated/, and older versions of this pack point at the dead path. Update the node via Manager. - Watch the folder. The checkpoint lands in
ComfyUI/models/pid/, not the usualmodels/checkpoints/.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| ckpt_name | COMBO | 1 options: (auto-download) | |
| dtype | COMBO | bf16 | 3 options: bf16, fp16, fp32 |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| pid_model | ANIMA_PID | — |