Nodes/ComfyUI-FL-YuE2/FL YuE2 · Audio Adapter Trainer
ComfyUI Node

FL YuE2 · Audio Adapter Trainer

The node that stops and makes you listen

By filliptm·Created 6 days ago·Updated about 14 hours ago· 96
FL YuE2 · Audio Adapter Trainer
  • assets
  • dataset
  • config
  • YUE2_AUDIO_ADAPTER
action
output_namemy_audio_adapter
resume
selected_step0
render_previewstrue
preview_seconds8
preview_seed42
sampling_steps32
validation_index0
condition_scale1.0

Training nodes are usually black boxes: queue it, wait, hope the loss curve meant something. FL YuE2 · Audio Adapter Trainer is unusual in that it renders a step-0 baseline before any training happens, then a playable sample at every checkpoint - source, target, baseline and checkpoint in one carousel with a seek bar, same seed and same held-out recording each time. You are meant to judge with your ears, not from the loss chart. The author says so outright in the docs: lower flow loss doesn't prove the transformation sounds good.

That matters more here than in image LoRAs, because this packs into a category the community has been honest about: local music generation's weak spot isn't instrumentals, it's control. ACE-Step gets you a plausible track; getting your effect, your mix, your timbre is the unsolved part.

What it's doing under the hood

This is the terminal node of the paired-adapter path (Paired Audio Dataset → Prepare Audio Pairs → Audio Adapter Trainer → Audio to Audio → Preview Audio), and it's marked as an output node, so it's the thing you queue. It hands the actual work to a worker subprocess that owns its GPU allocation and exits between training and preview phases - which is why cancelling mid-preview doesn't nuke your whole run.

action=train needs three wires up: assets (from Training Models), dataset (prepared pairs), config (from Audio Adapter Config). The optional inputs are lazy, so the node only pulls them when the action calls for them. With previews on, it starts a run, renders the baseline, trains to a checkpoint, renders again, and keeps going - pausing at each checkpoint so you can actually hear whether step 100 was better than step 400. It is not a fixed-length job.

Output is YUE2_AUDIO_ADAPTER, a portable package. It lands in models/loras/YuE2_audio/<output_name>/step-000100/ next to a manifest.json listing relative weight filenames and hashes; head.safetensors, acoustic.safetensors and - in conditioned mode - conditioning.safetensors sit beside it. Copy the whole folder. A single weight file is useless.

The inputs that matter

action is train or use_saved. use_saved is the "I already trained this, just give me a package to run" path - it skips preparation entirely and returns the checkpoint you point it at, which is handy for inference-only graphs.

output_name is your run name, and paired runs behave differently from the AR LoRA trainer: for audio adapters, an existing run is not overwritten. You either pick a new name or you set resume to the literal string resume.pt to continue. That's a safety rail, and it's the one that keeps a second evening's training from eating the first.

selected_step picks which checkpoint the node returns - 0 means the latest trained checkpoint, not the baseline. validation_index chooses which held-out pair you're auditioning, and preview_seconds, sampling_steps and preview_seed control how the comparisons get rendered. Keep the seed fixed; that's the point of a comparison. condition_scale belongs to conditioned adapters: 1 is the training baseline, 0 removes the source latent signal, and anything in between blends and costs you two decoder passes.

Install

ComfyUI Manager → search ComfyUI-FL-YuE2, or the manual route:

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
python -m pip install -r requirements-training.txt

Then queue Training Models once with download_missing enabled so the MERT asset, tokenizer head, regularizer pack and starting acoustic companion land in your model folders. example_workflows/audio_adapter_training.json is the working graph to copy. Needs a BF16-capable NVIDIA card and a current ComfyUI.

Where people get burned

Reusing a run name. output_name collides and the node tells you, rather than quietly starting over. Change the name or resume.

Editing your audio after preparing. Preparation records hashes, so a touched WAV or a moved file fails loudly with "audio changed; prepare the pairs again". Resume is no different - it re-verifies the dataset, config and base assets, so an inconsistency shows up at the start of a run instead of a hundred steps in.

Running out of VRAM. The author's short-window acoustic test peaked around 7.2 GiB and joint was 7.8 GiB, but that's an 8-second-window smoke test on a 96 GB card - longer windows and bigger rank climb from there. Cut preview_seconds, cut window_frames, close other GPU work. Adding system RAM won't save you; the transfer penalty makes offload a last resort, not a plan. Also worth knowing before you start: the MERT/token compression genuinely does discard detail, so some transformations will never be clean. This is a generative source-conditioned adapter, not a sample-exact audio effect.

Cancelling mid-preview and assuming it's lost. The most recent saved checkpoint survives, and resuming re-renders the preview before continuing. Unsaved updates between checkpoints are the part you lose.

CategoryFL YuE2/Audio Training

Inputs (13)

NameTypeDefaultDescription
actionCOMBOTrain a new/resumed adapter, or use an existing package without preparation.
output_nameSTRINGmy_audio_adapterRun name. Use a new name for a new experiment; existing paired runs require explicit resume.
resumeSTRINGEnter resume.pt to continue this run, including after a cancelled preview.
selected_stepINT00–1000000 selects the latest trained checkpoint, not the baseline.
render_previewsBOOLEANtrueRender held-out source-to-target previews before training and at checkpoints.
preview_secondsINT81–360Maximum held-out sample duration.
preview_seedINT420–4294967295Fixed noise seed for baseline and checkpoints.
sampling_stepsINT324–100Acoustic synthesis steps for previews.
validation_indexINT00–100000Held-out pair to play. Index follows dataset order; changing it regenerates comparisons.
assetsoptYUE2_TRAINING_ASSETS
datasetoptYUE2_PREPARED_AUDIO_PAIRS
configoptYUE2_AUDIO_TRAIN_CONFIG
condition_scaleoptFLOAT1.00–5Conditioned adapters: 1 uses source conditioning directly; 0 removes the source latent signal. Other values use two decoder passes for guidance.

Outputs (1)

NameTypeDescription
YUE2_AUDIO_ADAPTERYUE2_AUDIO_ADAPTER