Files
grabber-ai/docs/training-windows.md
T

78 lines
4.0 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.
# Обучение на Windows с GPU (RTX 5070 Ti)
## Почему cu128
RTX 5070 Ti — архитектура Blackwell (compute capability `sm_120`). Колёса
PyTorch с PyPI для Windows по умолчанию CPU-only, а старые CUDA-сборки не
знают sm_120. Нужны колёса с индекса cu128 (torch >= 2.7; проверено на
torch 2.11.0+cu128).
## Установка (один раз)
```bat
cd C:\Users\shats\Dev\DUB-AI
python -m venv .venv
.venv\Scripts\python -m pip install --upgrade pip
:: torch с GPU-поддержкой (Blackwell)
.venv\Scripts\python -m pip install torch --index-url https://download.pytorch.org/whl/cu128
:: остальное
.venv\Scripts\python -m pip install -r requirements.txt
```
Проверка (ожидаемый вывод — `True` и имя карты):
```bat
.venv\Scripts\python -c "import torch; print(torch.cuda.is_available(), torch.cuda.get_device_name(0))"
:: True NVIDIA GeForce RTX 5070 Ti
```
## Обучение
```bat
.venv\Scripts\python -m src.prepare_data :: данные -> data/processed
.venv\Scripts\python -m src.train :: обе модели: 5-fold CV + финальные
.venv\Scripts\python -m src.train --models base :: только ruBert-base
.venv\Scripts\python -m src.train --epochs-override 5 --folds 3 :: быстрый прогон
```
Время на RTX 5070 Ti (3742 строки, max_len=128): rubert-tiny2 — ~2 мин
полный цикл; ruBert-base — ~7 мин. Автоматически: bf16 autocast на
CUDA, GroupKFold-сплиты, ранний stopping (patience 3), метрики и графики в
`reports/`, чекпоинты в `models/`, лучшая модель — `models/best`.
Гиперпараметры — в `MODEL_CONFIGS` (src/train.py): tiny2 — lr 1e-4, batch
64, до 20 эпох; base — lr 3e-5, batch 32, до 10 эпох; AdamW, weight_decay
0.01, linear warmup 10%, grad clip 1.0, seed 42.
## Переобучение на свежем датасете
Сборщик (`deepseek-harness/default-workspace/dataset.py`) дописывает
`labels.csv`. Когда появится новый снимок:
```bat
copy /Y <путь>\labels.csv data\labels.csv
.venv\Scripts\python -m src.prepare_data
.venv\Scripts\python -m src.train
```
## Troubleshooting
| Симптом | Причина | Решение |
|---|---|---|
| `torch.cuda.is_available()` = False | установлен CPU-torch | переустановить с `--index-url .../whl/cu128` |
| `CUDA error: no kernel image is available` | колёса без sm_120 (старый cu126 и т.п.) | то же — нужны именно cu128 |
| `CUDA driver version is insufficient` | старый драйвер NVIDIA | обновить драйвер (нужен 5xx+) |
| Память GPU занята другими приложениями (WDDM) | Windows держит ~4 ГБ VRAM под систему | batch уже мал (32-64 на коротких seq хватает); при нехватке уменьшить `batch` в MODEL_CONFIGS |
| Хочется обучить без GPU | — | `base` медленно, но `tiny2` обучаема на CPU за десятки минут: тот же запуск, torch можно ставить CPU-версией |
## Что сохраняется после обучения
* `models/<имя>/model.pt` — веса; `dub_config.json` — конфигурация;
`label_maps.json` — классы; файлы токенизатора; `train_config.json` —
гиперпараметры и финальные метрики.
* `models/best/` — копия лучшей модели (используется инференсом по умолчанию).
* `reports/summary.md` — таблица сравнения; `final_<имя>.json` — метрики;
`history_<имя>.png` — кривые; `confusion_<имя>.png` — матрица ошибок.