Guía paso a paso de entrenamiento¶
Resumen operativo para arrancar entrenamientos en Colab Pro (A100) o local M4 Pro (sólo iteración, no entrenamiento serio).
Pre-requisitos¶
Confirma dispositivo:
python -m src.device
# → device=cuda info=DeviceInfo(kind='cuda', torch_dtype=torch.bfloat16, ...)
# → device=mps info=DeviceInfo(kind='mps', torch_dtype=torch.float16, ...)
Fase 1 — Codec¶
Datos¶
# FMA medium (22 GB, ~25 K tracks)
mkdir -p /datasets/fma && cd /datasets/fma
curl -O https://os.unil.cloud.switch.ch/fma/fma_medium.zip
unzip fma_medium.zip
cd /path/to/suno-local
python -m src.data.build_manifest /datasets/fma/fma_medium \
data/manifests/codec_train.jsonl --label-from genre
Lanzar entrenamiento¶
Métricas a vigilar¶
mel(mel-loss): debe caer monotónicamente.commit: ~0.01-0.05 estable.advyfeat: oscilan; el balance importa más que el valor absoluto.- Reconstrucción auditiva: a partir de step 50 K ya debería sonar reconocible.
Fase 2 — Lyric LM¶
# 1. Construye corpus de letras (Gutenberg + Wikisource + sintético)
python scripts/build_lyrics_corpus.py --out data/lyrics_corpus.txt
# 2. Entrena tokenizer SentencePiece
python -m src.lyrics.tokenizer train data/lyrics_corpus.txt \
--out tokenizer/lyric_spm --vocab-size 16000
# 3. Manifest JSONL (uno por canción)
python scripts/lyrics_corpus_to_manifest.py \
--in data/lyrics_corpus.txt --out data/manifests/lyrics_train.jsonl
# 4. Entrena LM
python -m src.lyrics.train --config configs/lyrics_lm.yaml \
--ckpt-dir checkpoints/lyrics
Fase 3 — Score LM (REMI)¶
# Procesar LMD-clean a manifest
python scripts/lmd_to_manifest.py --in /datasets/lmd_full \
--out data/manifests/melody_train.jsonl
# Entrenar
python -m src.melody.train --config configs/melody_remi.yaml \
--ckpt-dir checkpoints/melody
Fase 4 — SVS¶
Acoustic (DDPM)¶
# 1. Pre-train con M4Singer (mandarín) para inicialización cross-lingual
python -m src.svs.train --phase acoustic --config configs/svs_pretrain_zh.yaml
# 2. Fine-tune con dataset propio ES
python -m src.svs.train --phase acoustic --config configs/svs.yaml \
--ckpt-dir checkpoints/svs_acoustic
Vocoder (HiFi-GAN GAN)¶
Reutiliza el loop GAN del codec (MS-STFT + MPD). Tarda ~1 M de steps típicamente.
Fase 5 — LM Instrumental (MusicGen-like)¶
# Necesita codec entrenado en checkpoints/codec_small
python -m src.lm.train --config configs/lm_small.yaml \
--ckpt-dir checkpoints/lm_small
Si la VRAM es ajustada en A100-40 GB:
- bs=4, grad-accum=8 (batch efectivo 32).
- bf16 activado.
- gradient_checkpointing (envuelve cada TransformerBlock con torch.utils.checkpoint.checkpoint).
Resume y manejo de Colab timeout¶
El train_loop instala SIGTERM handler que escribe RESUME.json cuando Colab manda kill (~30 s antes). El siguiente python -m src.codec.train ... resume desde LATEST automáticamente si --ckpt-dir apunta al mismo Drive folder.
Quantization para inferencia M4¶
python scripts/quantize.py --input checkpoints/codec_small/LATEST.pt \
--output checkpoints/codec_small/q_int8.pt --backend qnnpack