Qwen3 TTS Fast Unload
Get your VRAM back without restarting ComfyUI
- audio
- AUDIO
The Loader node caches the Qwen3-TTS model in VRAM after it loads, and it stays there - no CPU offload, no auto-free. That's not laziness; it's physics. The whole speed trick of this pack is captured CUDA graphs, which hold fixed GPU buffers, and you can't offload a captured graph to CPU and bring it back later. So when you're done generating audio and want your VRAM back for a video render, the honest options are restart ComfyUI or run this node.
Run it. It's a deliberate, boring utility and it's the one you'll reach for constantly if this pack shares a card with anything else. Audio pipelines are usually cheap on VRAM, but video isn't, and nothing eats a mood like discovering your 1.7B TTS model is holding 3+ GB hostage during a Wan or Hunyuan render. One run of this node and the loader's model cache is empty again.
How it works
The clever bit is where it sits. It's a pass-through node: audio goes in and comes right back out unchanged, and enabled (default true) controls whether it does anything. If enabled, it clears the Loader's model cache, forces a garbage collect, and calls torch.cuda.empty_cache() (plus an IPC collect) - the console prints "Model released, VRAM freed." The audio passes through untouched either way.
Why route audio through it at all instead of dangling it somewhere? Because ComfyUI runs nodes in dependency order. If you just drop an Unload node in your graph, it may fire before generation and unload the model you're about to use. Chaining your final AUDIO through it guarantees it executes after the TTS node that produced that audio - so it always runs last, like a teardown step.
So the pattern is: Loader → generate node → this node (audio threaded through) → save/preview. When you actually run it with enabled on, the model is fully released and the next run of the Loader reloads it from scratch - which means a fresh CUDA graph capture pass and its warmup delay. Disable it (or wire enabled to a boolean) when you're iterating on audio and don't want to pay reload costs every run; turn it on when you're about to hand the GPU to something else.
How to install it
Same install as the whole pack - ComfyUI Manager, search "Qwen3-TTS", install, restart:
cd ComfyUI/custom_nodes
git clone https://github.com/YildirimMC/ComfyUI-Qwen3-TTS-Fast
pip install -r ComfyUI-Qwen3-TTS-Fast/requirements.txt
NVIDIA GPU required.
Common issues
Unload runs but VRAM doesn't drop much - check you're not also holding another model or an audio preview buffer; this node only releases this pack's models. Also, ComfyUI's own cached nodes and any large video models elsewhere in the graph are separate.
Next generation is slow after unloading - expected. You freed the model, so the next Loader run re-downloads nothing (weights are on disk in ComfyUI/models/TTS/) but re-captures CUDA graphs, which takes a few seconds. That's the reload tax, and it's the reason to leave enabled off while you're actively iterating on a voice.
Model seems to reload anyway between runs - if you changed any loader setting (model, dtype, attention, max_seq_len), that's a different cache key and it reloads regardless of this node. Not a bug.
Keep one of these at the end of any workflow where this pack shares VRAM with a renderer, and your future self will silently thank you on every video render.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| audio | AUDIO | — | |
| enabled | BOOLEAN | true | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| AUDIO | AUDIO | — |