Load Thera Model
Six super-resolution models, one dropdown
- thera_pipe
This node doesn't upscale anything. It's the gatekeeper. One dropdown, six models, and out the other end comes a thera_pipe that you hand to TheraProcess. Which means your entire first encounter with ComfyUI-Thera is a single choice: which of those six entries to pick.
ComfyUI-Thera is an unofficial port of Thera, the aliasing-free arbitrary-scale super-resolution model from ETH Zurich's PRS group. If you've read our upscaling ladder, this sits firmly in the "more pixels, not more detail" bucket: it's a classic super-resolution network, not a generative restorer like SeedVR2 or SUPIR. It won't invent eyelashes. It will honestly resample what's there - at whatever scale you ask for, which is the part most upscalers can't do.
What the dropdown is really asking
The six names are two backbones crossed with three capacity tiers: thera-edsr-* and thera-rdn-* (the encoder networks), each in air, plus, and pro flavors. EDSR is the classic, lighter residual network; RDN is the beefier residual-dense architecture and generally the stronger end of the family. Air is the small-and-fast tier, plus is the middle, pro is the biggest and best-looking at the cost of compute. On real photos the differences between tiers are smaller than the marketing suggests, but the ordering holds: if you just want a quick test, grab thera-edsr-air; if you're doing a final render, thera-rdn-pro is the one to reach for.
How it works
On the first load, the node checks ComfyUI/models/Thera/ for the checkpoint and, if it's missing, downloads it from HuggingFace (prs-eth/{model}) and unpickles the weights. That's a few hundred megabytes per model, downloaded once, then cached forever. Pick six models and you'll pay the download tax six times.
The interesting bit is hidden in the code: the official .pkl checkpoints were pickled with an older JAX whose ShapedArray carried a named_shape field that modern JAX removed. The pack monkey-patches that field before loading so the weights don't crash on today's JAX. That patch is a small window into what using this pack is like - Thera is built on JAX/Flax, a completely separate ecosystem from the PyTorch stack the rest of your ComfyUI runs on, and it needs periodic babysitting.
The output, thera_pipe (type THERA_PIPE), is a tuple of the built model and its trained parameters. There's nothing visual about it - wire it straight into TheraProcess and forget it.
Installing the pack
Your options, same as any custom node:
cd ComfyUI/custom_nodes
git clone https://github.com/yuvraj108c/ComfyUI-Thera
cd ComfyUI-Thera
pip install -r requirements.txt
Then restart ComfyUI. Or skip all that and search "Thera" in ComfyUI Manager. Either way, watch the requirements file - it installs jax[cuda], jaxlib, flax, and jaxtyping. That's the whole JAX CUDA toolchain landing in your environment, and it's the pack's one real cost. JAX ships its own CUDA runtime that has to agree with your driver, and when it doesn't, the node imports fine but dies at load time with a cryptic CUDA driver version is insufficient or similar. On a clean install it just works; on a machine with years of accumulated pip cruft, expect a fight. The author tests on a Linux/RTX 4090 box, which is the path of least resistance.
Where people get burned
- First load looks hung. It's downloading the
.pkltoComfyUI/models/Thera. Give it a minute. - JAX/CUDA errors at load. Almost always the
jax[cuda]wheel not matching your driver. Reinstalljaxlibagainst your CUDA version. - It loads but is slow the first run. That's JAX's JIT compiler warming up, not a bug - see TheraProcess.
One honest take to close: if you only want bigger pixels, an ESRGAN model is friction-free and instant. You pick Thera for what it can do that ESRGAN can't - arbitrary-scale, aliasing-free output - and you accept the JAX tax that comes with it.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| model | COMBO | 6 options: thera-edsr-air, thera-edsr-plus, thera-edsr-pro, thera-rdn-air, thera-rdn-plus, thera-rdn-pro |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| thera_pipe | THERA_PIPE | — |