101 lines
7.2 KiB
Markdown
101 lines
7.2 KiB
Markdown
# 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
|