Using Your Adapter
March 5, 2026 · View on GitHub
After training completes, Side-Step saves your adapter weights to the output directory. This page explains the output layout, how to load adapters in ACE-Step's Gradio UI and ComfyUI, and important considerations for inference.
Output Directory Layout
PEFT Adapters (LoRA, DoRA, OFT)
output/my_lora/
├── final/
│ ├── adapter_config.json # PEFT adapter configuration
│ └── adapter_model.safetensors # Trained adapter weights
├── checkpoints/
│ └── epoch_50/ # Saved every N epochs (--save-every)
│ ├── adapter_config.json
│ ├── adapter_model.safetensors
│ └── training_state.pt # Optimizer + scheduler state for resume
└── runs/
└── [TensorBoard event files] # Training metrics
LyCORIS Adapters (LoKR, LoHA)
output/my_lokr/
├── final/
│ └── lokr_weights.safetensors # Trained weights (config in metadata)
├── checkpoints/
│ └── epoch_50/
│ ├── lokr_weights.safetensors
│ └── training_state.pt
└── runs/
└── [TensorBoard event files]
Key differences:
- PEFT adapters (LoRA, DoRA, OFT) save two files:
adapter_config.json(configuration) +adapter_model.safetensors(weights). - LyCORIS adapters (LoKR, LoHA) save one file: weights + configuration stored in safetensors metadata.
- Checkpoints include
training_state.ptfor resuming training. The adapter files in each checkpoint are also inference-ready. - The
final/directory contains only the adapter weights (no training state) -- this is what you point inference tools at.
Loading LoRA in ACE-Step Gradio
ACE-Step's Gradio UI has a built-in LoRA loading section. Here is how to use it:
- Start ACE-Step's Gradio UI as you normally would.
- In the Service Configuration section, find the LoRA Adapter panel.
- In the LoRA Path field, enter the path to your adapter directory:
Point at the directory, not at a specific file. ACE-Step expects to find/path/to/Side-Step/output/my_lora/finaladapter_config.jsoninside it. - Click Load LoRA. You should see a success message.
- Toggle Use LoRA to enable the adapter during generation.
- Adjust the LoRA Scale slider to control how strongly the adapter affects output (1.0 = full strength, lower values blend with the base model).
- Generate audio as usual.
To switch back to the base model, click Unload or toggle Use LoRA off.
Requirements
- Quantization must be disabled. LoRA loading is not supported when INT8 quantization is active. If you see an error about quantization, re-initialize the ACE-Step service with quantization set to
None. - The adapter was trained with PEFT, so ACE-Step's standard LoRA loading path works directly.
Using Checkpoints for Inference
Every checkpoint directory (checkpoints/epoch_N/) also contains inference-ready adapter files. You can point the Gradio LoRA path at any checkpoint to test intermediate training results:
/path/to/Side-Step/output/my_lora/checkpoints/epoch_50
Loading in ComfyUI
PEFT saves adapter keys with a base_model.model. prefix that ComfyUI doesn't recognize. Side-Step includes a converter.
From the GUI
Use the Export tab in the Lab workspace. Select your adapter directory and click Export.
From the wizard
Select "Export" from the main menu. Enter the path to your adapter directory (e.g., ./output/my_lora/final).
From the CLI
sidestep export ./output/my_lora/final
Optionally specify a custom output path:
sidestep export ./output/my_lora/final --output ./comfyui_lora.safetensors
The converted file strips the PEFT key prefix and adapter-name segments so ComfyUI loads the weights correctly.
LyCORIS adapters (LoKR, LoHA) are already natively compatible with ComfyUI and do not need conversion.
Adapter Compatibility
| Adapter | ACE-Step Gradio | ComfyUI | Notes |
|---|---|---|---|
| LoRA | Direct load | Export required | Most compatible |
| DoRA | Direct load | Export required | Same PEFT format as LoRA |
| LoKR | Not supported | Native | LyCORIS format |
| LoHA | Not supported | Native | LyCORIS format |
| OFT | Not supported | Export required | PEFT format, less widely tested |
ACE-Step's Gradio UI checks for adapter_config.json, which only PEFT adapters (LoRA, DoRA, OFT) produce. LyCORIS adapters (LoKR, LoHA) use a different format.
If you are unsure which adapter type to use, LoRA or DoRA is the safe choice for both training and inference compatibility.
Shift and Inference Steps
When generating audio with your trained adapter, use the correct shift and inference step values for your model variant:
| Model Variant | Shift | Inference Steps |
|---|---|---|
| Turbo | 3.0 | 8 |
| Base | 1.0 | 50 |
| SFT | 1.0 | 50 |
These values were saved as metadata during training (via --shift and --num-inference-steps) but do not affect the training loop itself. They tell you what to use at inference time. See [[Shift and Timestep Sampling]] for the full explanation.
Using the wrong shift value at inference will produce degraded audio quality, even if the adapter was trained correctly.
Viewing TensorBoard Logs
Side-Step writes TensorBoard logs to the runs/ subdirectory of your output directory (or to --log-dir if you specified one). To view them:
tensorboard --logdir ./output/my_lora/runs
Then open http://localhost:6006 in your browser. Key metrics:
- loss -- Training loss over time. Should decrease and stabilize.
- lr -- Learning rate schedule. Verify warmup and decay look correct.
- grad_norm -- Gradient magnitudes. Spikes may indicate training instability.
Resuming Training
To continue training from a checkpoint:
sidestep train \
--dataset-dir ./my_tensors \
--output-dir ./output/my_lora \
--resume-from ./output/my_lora/checkpoints/epoch_50 \
--epochs 1000
This restores the adapter weights, optimizer state, and learning rate scheduler from the checkpoint. Training continues from where it left off.
You can also point --resume-from at a file inside the checkpoint directory (e.g., training_state.pt) -- Side-Step will automatically use the parent directory.
See Also
- [[End-to-End Tutorial]] -- Full walkthrough from raw audio to generation
- [[Shift and Timestep Sampling]] -- Why shift matters for inference
- [[Training Guide]] -- Training options and hyperparameters
- [[VRAM Optimization Guide]] -- GPU memory management