Files
acestep-studio/research/ace-step-xl-research.md
T

101 lines
7.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ACE-Step 1.5 XL — исследование для RTX A2000 12GB
**Дата:** 2026-08-30
**Цель:** определить, что нужно изучить для вывода генерации на более высокий уровень
**Модель:** `acestep-v15-xl-turbo` (4B DiT) на RTX A2000 12GB
---
## Ключевой вывод
**RTX A2000 12GB = Tier 4 по классификации ACE-Step.** XL DiT официально НЕ поддерживается на этом tier — работает только через aggressive CPU offload + INT8 quantization, и только с LM-моделью **0.6B** (не 1.7B). Это накладывает жёсткие ограничения на «высокий уровень»: LoRA нельзя грузить на INT8-модель, а качество вокала на turbo-режиме всегда будет «грубее», чем на base.
---
## Обзор (синтез источников)
ACE-Step 1.5 использует гибридную LM+DiT архитектуру: 5Hz Language Model строит Chain-of-Thought (планирует BPM/тональность/структуру), DiT генерирует звук [1][2]. Разделение на `caption` (звучание) и `lyrics` (структура песни) — ключевое отличие от Suno [3].
Система автоматически определяет tier GPU по VRAM и подбирает настройки [2]:
| VRAM | Tier | XL DiT | LM модель | Backend |
|---|---|---|---|---|
| ≤4GB | 1 | ❌ | None | pt |
| 4–6GB | 2 | ❌ | None | pt |
| 6–8GB | 3 | ⚠️ 0.6B | 0.6B | pt |
| **8–12GB** | **4** | **⚠️ 0.6B** | **0.6B** | **vllm** |
| 12–16GB | 5 | ⚠️ 0.6B, 1.7B | 1.7B | vllm |
| 16–20GB | 6a | ✅ offload | 1.7B | vllm |
| 20–24GB | 6b | ✅ | 1.7B | vllm |
| ≥24GB | Unlimited | ✅ все | 4B | vllm |
XL (4B) DiT весит ~9GB (vs ~4.7GB для 2B) [2]. На A2000 XL влезает только с offload + INT8, поэтому в текущей конфигурации `offload_to_cpu=True` — правильный выбор.
---
## Подтемы
### 1. Качество генерации: turbo vs base
- **Turbo** = 8 шагов, быстро (~12–22 сек на A2000), но вокал «грубее» с микроартефактами. guidance_scale=1.0 (CFG не поддерживается на turbo) [4].
- **Base** = 32–100 шагов, медленнее, чище вокал, поддерживает CFG. Используется для стемов (`task_type="extract"`).
- **XL turbo vs 2B turbo**: XL даёт чище и разборчивее вокал, но на A2000 XL требует offload [4].
### 2. Параметры caption (что влияет на результат)
Рекомендации из официальной документации [1][2]:
- **Style**: конкретно про жанр, инструменты, настроение
- **Natural language**: LM-DiT отлично понимает «a soft Bengali love song for a quiet evening»
- **Formatting**: можно использовать `format_sample` API, чтобы LM-модель улучшила raw-теги в структурированный промпт
- **vocal_language**: 50+ языков; указание языка помогает LM спланировать фонетику
- caption — **английский** (модель лучше ловит стиль), lyrics — русский
### 3. Качество русского вокала
- `ru` есть в `VALID_LANGUAGES` — официально поддержан [4]
- ACE-Step — единственная локальная модель с русским вокалом в топ-10 (v1.5: 50+ языков)
- Вокал «грубоват» (признание авторов), русский звучит разборчиво, но с лёгкой синтетичностью
- Для чистого русского вокала — base-модель вместо turbo
### 4. Fine-tuning (LoRA) — путь к «высокому уровню»
- LoRA позволяет обучить модель на свой/эталонный вокал [1]
- **Работает с 8 песнями**; ~1 час на RTX 3090 для базового style LoRA
- **КРИТИЧЕСКИЙ ПИТФОЛЛ**: LoRA-адаптеры НЕ грузятся на INT8-модели. Нужно `INT8 Quantization = None` перед загрузкой адаптера [2]
- На A2000 12GB для LoRA-обучения нужен режим без INT8 → VRAM будет ~9.6GB для XL → рискованно, но возможно с offload
- **Альтернатива**: обучить LoRA на 2B-модели (4.7GB, легко влезает) — быстрее, стабильнее
### 5. Оптимизация VRAM (уже частично применена)
- **CPU Offload**: модели переносятся в RAM когда не используются; автоматически на GPU <20GB [2]
- **INT8 Quantization**: уменьшает VRAM DiT; автоматически на Tier 1–6a [2]
- **Tiled VAE decode**: 3-уровневый фолбэк (GPU tiled → GPU+CPU → CPU) [2]
- **Auto Chunk Size**: VAE decode chunk 64/128/256/512/1024/1536 адаптируется под свободный VRAM
- **VRAM Guard**: перед каждой генерацией оценивает VRAM и уменьшает batch при необходимости
- **Adaptive VAE Decode**: если free VRAM <2GB → tiled decode (именно это мы видим в логах: `Effective free VRAM: 1.81 GB`)
### 6. Что НЕ изучено (рекомендации)
- **benchmark** XL на A2000: реальная скорость при offload+INT8 (в логах ~22 сек — это с tiled decode)
- **timestep shift / cfg_interval**: параметры качества diffusion
- **constrained decoding / FSM**: контроль структуры
- **DCW correction** (wavelet-фильтрация): уже активна в текущей конфигурации — стоит изучить влияние на качество
---
## Дополнительные вопросы
1. Стоит ли обучать LoRA на 2B-модели (быстрее, стабильнее) или ждать XL?
2. Какой эталонный вокал использовать для LoRA — свой или конкретный артист?
3. Нужен ли base-режим для русского вокала (чище, но медленнее)?
4. Стоит ли исследовать Side-Step (fine-tuning framework) для кастомных пресетов?
---
## Источники
[1] DeepWiki — ACE-Step 1.5 Tutorials & Best Practices: https://deepwiki.com/ace-step/ACE-Step-1.5/10-tutorials-and-best-practices
[2] ACE-Step 1.5 GPU Compatibility Guide: https://ace-step.github.io/ACE-Step-1.5/en/GPU_COMPATIBILITY
[3] deAPI — ACE-Step 1.5 Prompting Guide: https://deapi.ai/blog/ace-step-1-5-prompting-guide-how-to-write-tags-structure-lyrics-and-generate-better-music
[4] ACE-Step 1.5 README (skill ace-step-music-generation): https://github.com/ace-step/ACE-Step-1.5