refactor: split training scripts into pretrain.py and train.py

- scripts/run_pretrain.py -> scripts/pretrain.py: pre-trains on McGill
  corpus (data/processed/mcgill/), saves checkpoints/pretrained.pt.
- scripts/train.py: rewritten as high-level fine-tune wrapper; loads
  pretrained.pt, trains on data/processed/user/, saves finetuned.pt.
  Both scripts include timing estimate, loss-curve plot, per-epoch report,
  and --skip-training flag.
- README: updated section 7 to reflect new script names and separate
  data directories.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-20 12:35:23 +03:00
parent 65c3f6bf7c
commit 632407ebef
3 changed files with 209 additions and 116 deletions
+24 -24
View File
@@ -254,39 +254,39 @@ python scripts/prepare_data.py \
### 7.1 Предобучение
Обучение базовой модели на конвертированном корпусе McGill Billboard:
```bash
python scripts/train.py \
--data-dir data/processed/mcgill/ \
--output checkpoints/pretrained.pt \
--epochs 50 \
--batch-size 32 \
--lr 3e-4 \
--warmup-steps 200 \
--seed 42
python scripts/pretrain.py
```
По окончании обучения в директории `checkpoints/` появятся: сам чекпоинт,
лог обучения в формате CSV и график кривых train/val loss.
Обучает на корпусе McGill (`data/processed/mcgill/`). Выводит оценку времени
выполнения и по окончании сохраняет:
| Файл | Описание |
| ----------------------------------- | ----------------------------- |
| `checkpoints/pretrained.pt` | лучший чекпоинт (по val loss) |
| `checkpoints/pretrained.log.csv` | метрики по эпохам |
| `checkpoints/pretrained_curves.png` | график кривых train/val loss |
Если обучение было прервано, повторно построить график и отчёт без
повторного обучения:
```bash
python scripts/pretrain.py --skip-training
```
### 7.2 Дообучение на собственном корпусе
```bash
python scripts/train.py \
--init-from checkpoints/pretrained.pt \
--data-dir data/processed/user/ \
--output checkpoints/finetuned.pt \
--epochs 15 \
--batch-size 16 \
--lr 1e-5 \
--warmup-steps 20 \
--seed 42
python scripts/train.py
```
Существенно более низкая скорость обучения (на два порядка меньше, чем на
предобучении) и небольшое число эпох предотвращают катастрофическое забывание
закономерностей, выученных на этапе предобучения.
Загружает `checkpoints/pretrained.pt` и дообучает на собственном корпусе
(`data/processed/user/`). Сохраняет `checkpoints/finetuned.pt` и аналогичный
набор артефактов (`finetuned.log.csv`, `finetuned_curves.png`).
Существенно более низкая скорость обучения (lr=1e-5 против 3e-4) и небольшое
число эпох (15) предотвращают катастрофическое забывание закономерностей,
выученных на этапе предобучения.
## 8. Оценка результатов