FL YuE2 · Load LoRA
The five-second node that decides if your trained adapter does anything
- music_model
- adapter
- YUE2_MODEL
What it is and why you'd reach for it
If you've trained a music LoRA for YuE2 - or picked one up from someone else - this is where it gets applied. It slots between the model loader and everything downstream:
Load Models → Load LoRA → Compose → Render Music → Decode Audio → Preview/Save
It is a small, boring node on purpose. It takes a YUE2_MODEL, puts the adapter on it, and hands you back a YUE2_MODEL that the rest of the graph can't tell apart from a stock one. If you never train anything, you can ignore it entirely - the plain Load Models → Compose chain works fine.
How it works
Under the hood this is ComfyUI's own LoRA machinery, not a bespoke loader. The adapter file holds low-rank down/up pairs for the AR transformer's attention and MLP projections - the same q_proj/k_proj/v_proj/o_proj and gate_proj/up_proj/down_proj modules that image LoRAs target, one set per layer. The node clones the model patcher, maps those tensors onto the base weights, and applies them through comfy.lora at your chosen strength. So if you've ever wondered why a 60 MB file can change a 3B model's whole sense of style, it's the same trick as ever: a small correction added on top of frozen weights rather than a new model.
Two details are worth knowing because they explain the odd behaviour.
First, only AR-branch adapters count. The pack trains song-generation adapters, so when it builds the dropdown it opens every .safetensors under models/loras/YuE2/ and keeps the ones whose metadata says branch: ar. Pick a random LoRA file by hand and you get "Select an AR LoRA adapter" rather than a crash - the check is real. That filtering is also why a freshly trained adapter might not appear in the list: the dropdown is built when the node's inputs are assembled, so refresh the page, and if it still isn't there, restart ComfyUI.
Second, a connected trainer adapter carries extra state. When the LoRA came out of the LoRA Trainer node, the wire passes along the pretrained acoustic companion that was used when the run was exported, so renders match what your checkpoint previews sounded like. Loading the same file from the dropdown instead reads that companion's name out of the file's metadata. Either way you don't have to think about it - but it's why this node outputs a model, not a set of weights you paste somewhere else.
The inputs that matter
music_model - the YUE2_MODEL from Load Models. Nothing else will do; the node needs the exact base it was trained against.
ar_adapter - the dropdown of saved AR adapters under models/loras/YuE2/, plus none. Because runs are saved into per-run subfolders, entries show up as paths relative to that root, like my_song_lora/my_song_lora_step_1600.safetensors.
ar_strength - 0 to 2, default 1. This is the one you'll actually play with. 1.0 is the trained weights at full strength, 0.0 disables the effect without unplugging anything (handy for an A/B you can queue twice), and going above 1.0 pushes harder. Past 1.2–1.4 you're usually just trading prompt control for a style that won't turn off.
The optional adapter input takes the YUE2_ADAPTER from the LoRA Trainer, and it takes precedence over the dropdown selection when connected. That's a nice property: you can wire trainer → Load LoRA for a direct "listen to this checkpoint" loop, and the dropdown is simply ignored.
Output is a single YUE2_MODEL - feed it to Compose (and therefore Render). If you leave Compose fed by the un-LoRA'd loader and wonder why nothing changed, that's why.
Install
Pack install covers it; there's nothing extra for this node:
cd ComfyUI/custom_nodes
git clone https://github.com/filliptm/ComfyUI-FL-YuE2.git
cd ComfyUI-FL-YuE2
python -m pip install -r requirements.txt
Or search ComfyUI-FL-YuE2 in ComfyUI Manager. Use ComfyUI's Python interpreter and restart. The requirements are light - tiktoken, safetensors, filelock - and the pack deliberately reuses your existing Torch rather than installing the upstream YuE2 stack. Adapters live in models/loras/YuE2/, which the trainer creates for you; make that folder yourself if you're copying in someone else's adapter.
Where people get burned
Wrong slot. A .safetensors sitting in models/loras/ (the top level, where image LoRAs go) is invisible here. It has to be under the YuE2 subfolder.
Not a FL YuE2 adapter. The metadata check isn't a suggestion. An adapter from a different YuE2 toolchain won't have the fl-yue2-lora-v1 format tag, so it won't be listed and won't load even if you force it.
Stacking LoRAs isn't a thing here. Unlike image workflows where people chain three loaders, this node is single-adapter - pick one and dial the strength.
Licensing, since you asked. The pack's source is Apache 2.0, but the YuE2-3B weights it trains against are CC BY-NC 4.0. Your LoRA is a derivative of those weights. Personal and research use is fine; selling tracks made with it is a conversation you're having with the license, not with the node.
Strength 0 is not "unplug". It disables the adapter's contribution, but the patched model is still a patched model. For a true baseline, bypass the node.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| music_model | YUE2_MODEL | — | |
| ar_adapter | COMBO | Saved AR LoRA under models/loras/YuE2. A connected trainer adapter takes precedence over this selection. | |
| ar_strength | FLOAT | 1.000–2 | Adapter strength: 0 disables its effect and 1 applies the trained weights at full strength. |
| adapteropt | YUE2_ADAPTER | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| YUE2_MODEL | YUE2_MODEL | — |