ACE-Step v1.5 xl-base: Pop/Electro LoHA (1.3k tracks)

LoHA adapter trained on 1.3k pop/electro tracks against the ACE-Step v1.5 xl-base checkpoint. Trained with Side-Step following the maintainer's recommended config.

Training loss curve

Final: epoch 100, MA5 0.7955 (best of run) Dataset: 1.3k pop/electro tracks ~1/3 common caption tags: Chill & Relax, Feel-Good Vibes, Pop Dance, Slow Down & Relax, EDM, Pop, Workout Beats, Chill Vibes, Alt Z, Electro House Adapter: LoHA dim=128, alpha=256, target-mlp Trainable: 652M params (11.6%) Hardware: RTX 5090, ~24-30 min/epoch, ~48 hrs total

Pick your epoch

Multiple checkpoints provided. Same prompt + seed across all samples (Alan Walker "Alone", 60s). Listen and pick the one whose tone you prefer.

Epoch Folder Sample Notes
base (no LoRA) n/a Stock xl-base baseline
5 lora_ep5/ High-pitch, off-tone
20 lora_ep20/ Tone respected, some distortion
70 lora_ep70/ Lyrics respected, blended tone
100 (final) lora_ep100/ Clearest, most "different" tone

Inference

ACE-Step Gradio UI does not load LyCORIS LoHA directly (PEFT-only adapter loader). Use ACE-Step 1.5's API:

git clone https://github.com/ace-step/ACE-Step-1.5 && cd ACE-Step-1.5
uv run acestep-api  # starts REST server
# In another terminal:
curl -X POST http://localhost:8000/v1/lora/load -d '{"lora_path": "/abs/path/to/lora_ep100/loha_weights.safetensors", "adapter_name": "pop_electro"}'
Or programmatically via AceStepHandler.add_lora(): Python inference script
from acestep.handler import AceStepHandler
from acestep.llm_inference import LLMHandler
from acestep.inference import GenerationParams, GenerationConfig, generate_music

dit = AceStepHandler()
dit.initialize_service(
    project_root="/path/to/ACE-Step-1.5",
    config_path="acestep-v15-xl-base",
    device="cuda",
)
dit.add_lora(lora_path="/abs/path/to/lora_ep100/loha_weights.safetensors",
             adapter_name="pop_electro")

llm = LLMHandler()
llm.initialize(checkpoint_dir="/path/to/checkpoints",
               lm_model_path="acestep-5Hz-lm-4B",
               backend="pt", device="cuda")

params = GenerationParams(
    task_type="text2music",
    caption="...", lyrics="...",
    bpm=97, keyscale="F Major", timesignature="4",
    vocal_language="en", duration=60.0,
    inference_steps=50, guidance_scale=7.0,
    thinking=True, infer_method="ode",
)
config = GenerationConfig(audio_format="wav", batch_size=1, seeds=[4178637441])
result = generate_music(dit, llm, params, config, save_dir="./output")

Side-Step training command

uv run sidestep --yes --plain train \
    -d "../tmp/xl_tensors" \
    --checkpoint-dir "../tmp/checkpoints" \
    --model xl-base \
    --adapter loha \
    --loha-linear-dim 128 \
    --loha-linear-alpha 256 \
    --target-mlp \
    --batch-size 1 \
    --gradient-accumulation 8 \
    --chunk-duration 120 \
    --precision fp32 \
    --lr 5e-5 \
    --warmup-steps 300 \
    --optimizer-type adamw8bit \
    --scheduler-type cosine \
    --gradient-checkpointing \
    --gradient-checkpointing-ratio 0.5 \
    --epochs 100 \
    --save-every 5 \
    --output-dir "../tmp/train_runs/loha_xl_base"
Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for Nekochu/ACE-Step-xl-base-pop-electro-lora

Adapter
(2)
this model