--- title: ACE-Step 1.5 jpdenpa full fine-tune emoji: 🎼 colorFrom: purple colorTo: indigo sdk: gradio sdk_version: 5.50.0 app_file: app.py short_description: Full fine-tune of ACE-Step 1.5 turbo on Japanese songs python_version: "3.12" startup_duration_timeout: 1h --- # ACE-Step 1.5 turbo — full fine-tune Every decoder parameter of ACE-Step 1.5 turbo (1,575,458,880 of them, 65.8% of the whole model) was fine-tuned on a small set of Japanese songs. This is a full fine-tune, not a LoRA: there is no adapter to attach, the decoder weights themselves were replaced. Captions were trained with the tag `jpdenpa` in front, so keeping that tag in the caption is what pulls the fine-tuned style in. ## Training | | | |---|---| | Base | `ACE-Step/Ace-Step1.5`, turbo variant | | Trainable | 1,575,458,880 params — the entire decoder | | Optimizer | Adafactor, lr 2e-5, cosine, batch 1 × grad accum 4 | | Precision | bf16 base, fp32 masters for the unfrozen weights | | Hardware | 2 × RTX 5060 Ti 16 GB, decoder sharded across both | | Checkpoint | epoch 40 | Two GPUs were needed because fp32 masters plus fp32 grads for the decoder come to ~19 GB, which does not fit on one 16 GB card. The decoder blocks are split across both with accelerate's align-device hooks — sequential model parallelism, not DDP. Weights: [`swdq/acestep-v15-jpdenpa-ft`](https://huggingface.co/swdq/acestep-v15-jpdenpa-ft) ## Why the training loss is not the metric here The flow-matching loss is `MSE(pred, x1 - x0)` where `x1` is fresh noise and the timestep is redrawn every step, so consecutive epoch losses differ mostly because they saw different draws. Measured over epochs 15–33 of this run, the epoch-to-epoch jitter was 0.024 against a real per-epoch improvement of 0.0026 — nine times larger than the signal. Progress was tracked with a separate harness that pins the noise and the timestep grid so every checkpoint sees byte-identical inputs.