MOSS SoundEffect v2 卸载
The Node That Costs One Wire and Gives Back 11GB
- audio
This one's a brick with a wire hanging off it. One input, no outputs, no settings. It exists because the MOSS SoundEffect v2 pack runs inference in a separate worker process that sits on roughly 11GB of VRAM until something tells it to stop, and this node is that something.
Why it takes an audio input
The obvious question: this thing does nothing to audio, so why is audio a required input?
Because of how ComfyUI decides what to run. The engine walks backward from the output nodes and executes what's needed to feed them. A node with no inputs has no reason to run after anything, so the unload would fire whenever it pleased - possibly before the generation it's supposed to follow. Hanging it off the generate node's audio output is the author's way of spending one wire to buy ordering. Your audio comes in, gets passed along untouched (the tooltip says as much: the wire is for sequencing, the audio isn't modified), and only then does the node kill the worker.
It's a legitimate trick. It's also the kind of thing the plumbing layer in ComfyUI is full of - nodes that exist to control when something happens rather than what the data is.
What it actually does
On execution it stops the inference process: closes its stdin, sends SIGTERM to the process group, and escalates to SIGKILL if the worker doesn't exit within ten seconds. On Windows it's taskkill /F /T against the process tree instead. Then it clears the pack's stored process handle, so the next generation starts a brand-new worker - weights, DiT compile and all.
The 11GB comes back the moment that process dies, because it was never ComfyUI's VRAM in the first place. ComfyUI's own model cache is blissfully unaware this pack exists, which is why the usual "unload models" buttons and memory-freeing nodes won't touch it.
It's marked as an output node in the pack, with no outputs - that's what makes ComfyUI treat it as something worth executing rather than dead weight.
Wiring it up
It lives under right-click → audio/moss in the same pack, so installation is the pack's:
cd ComfyUI/custom_nodes
git clone https://github.com/HuizhiXu/comfyui-moss-soundeffect-v2
or, easier, search MOSS SoundEffect v2 in ComfyUI Manager. You need the loader and the generate node too - this node does nothing on its own, and without the loader's worker running there's nothing for it to stop. The unload node's audio input takes the generate node's audio output, and your Preview Audio or Save Audio hangs off that same output in parallel. Two wires from one socket is normal.
Leave it unwired and you'll get an error rather than a quiet no-op, because audio is a required input - the pack would rather complain than let you think you're being tidy.
Where this bites
The order still has a hole in it. If the generate node raises - bad prompt, killed worker, interrupt - ComfyUI aborts the prompt and the unload node never runs. The worker stays alive with its 11GB until the next generate reuses it or you restart ComfyUI. The ordering trick protects the happy path, not the failure path.
Don't wire it into the middle of a chain. If you want Preview Audio downstream after this node, you can't - it has no output. Keep your preview on the generate node's audio socket and put this at the end of a branch.
It unloads between runs, not during. This is an end-of-workflow cleanup node. If your real complaint is that a 1.3B audio model and a video model can't share the card at the same time, no node here fixes that - the pipeline for that is unload audio, then load video, in the same graph, and wait for the reload.
Put it in your template once and forget about it. It's the least interesting node in the pack and the one you'll miss most on a 12GB card.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| audio | AUDIO | 接生成节点的 audio。这根线用来排在生成之后,音频本身不会被改 |
Outputs (0)
No outputs