79 lines
5.3 KiB
Markdown
79 lines
5.3 KiB
Markdown
# Perun – dotrénovanie Ministralu 3B na slovenskej Aya
|
||
|
||
Model [`ministral/Ministral-3b-instruct`](https://huggingface.co/ministral/Ministral-3b-instruct) bol dotrénovaný metódou SFT s LoRA cez LLaMA-Factory a Unsloth. Použila sa základná revízia `2c95908929198d6e69af8638f0dbbd9bc6b93f9e`. Behy prebehli na Perune.
|
||
|
||
## Dáta a tréning
|
||
|
||
Slovenská časť Aya Collection bola načítaná z Parquetu. Po vyradení prázdnych alebo neplatných záznamov a odstránení duplicitných párov zostalo 3 492 041 príkladov. Rovnaké normalizované prompty sa držali v jednej skupine pri delení dát.
|
||
|
||
| Množina | Príklady |
|
||
|---|---:|
|
||
| Tréningová | 3 490 041 |
|
||
| Validačná | 1 000 |
|
||
| Testovacia | 1 000 |
|
||
|
||
[Manifest dát](training/data_manifest.json) obsahuje počty, seed a kontrolné súčty vstupu aj pripravených súborov. Jeho SHA-256 sa zhoduje s hodnotou zaznamenanou v [metadátach tréningu](training/run.json).
|
||
|
||
| Nastavenie jobu 148065 | Hodnota |
|
||
|---|---|
|
||
| Hardvér a presnosť | 4× NVIDIA H200 na jednom uzle, BF16 |
|
||
| Tréning | 1 epocha, 109 064 krokov |
|
||
| Efektívna dávka | 32 príkladov, 8 na GPU a akumulácia 1 |
|
||
| LoRA | Rank 16, alpha 32, dropout 0 |
|
||
| Learning rate | `0.0002`, kosínusový plán a warmup 8 % |
|
||
| Kontext | 4 096 tokenov |
|
||
| Seed | 42 pre model aj dáta |
|
||
|
||
Tréningová slučka trvala **24 h 06 min**. Priemerný tréningový loss bol **1,33344**. Najnižší validačný loss bol **1,13089** v kroku **109 000**. Posledný checkpoint z kroku **109 064** mal validačný loss **1,13097**. Na testovanie Aya aj porovnanie v SK-bench sa použil posledný checkpoint.
|
||
|
||
[Tréningové metriky](training/train_results.json) · [Validačný priebeh](training/validation_loss.csv) · [Graf tréningového lossu](training/training_loss.png) · [Graf validačného lossu](training/training_eval_loss.png)
|
||
|
||
## Test na odloženej Aya množine
|
||
|
||
Job 152588 vyhodnotil checkpoint 109 064 na 1 000 testovacích príkladoch. Pri generovaní bol limit 256 nových tokenov. Pri jednom príklade zostala po normalizácii prázdna referencia, takže tokenové F1 a presná zhoda používajú 999 hodnotiteľných odpovedí.
|
||
|
||
| Metrika | Hodnota |
|
||
|---|---:|
|
||
| Testovací loss | 1,08998 |
|
||
| Perplexita | 2,97423 |
|
||
| Tokenové F1 (0–100) | 35,06 |
|
||
| Normalizovaná presná zhoda | 3,60 % (36 z 999) |
|
||
|
||
[Súhrn testu](aya_test/summary.json) · [Konfigurácia výpočtu lossu](aya_test/eval_loss.yaml) · [Konfigurácia generovania](aya_test/eval_generate.yaml)
|
||
|
||
## Čiastočné výsledky SK-bench
|
||
|
||
Pôvodný Ministral a model so zlúčeným adaptérom z checkpointu 109 064 boli vyhodnotené na **rovnakých 385 z 412 slovenských zero-shot variantov**, ktoré pokrývajú **29 z 33 úloh**.
|
||
|
||
| Skupina | Pokrytie | Pôvodný | Dotrénovaný | Rozdiel |
|
||
|---|---:|---:|---:|---:|
|
||
| Knowledge & Reasoning | 10/10 | 20,57 | 23,37 | +2,80 |
|
||
| Reading & QA | 8/9 | 7,42 | 12,53 | +5,11 |
|
||
| Classification | 8/9 | 0,00 | 23,34 | +23,34 |
|
||
| Instruction | 1/1 | 7,82 | 10,24 | +2,42 |
|
||
| Grammar & Morphology | 2/2 | 0,12 | 0,88 | +0,76 |
|
||
| **Overall** | **5/6 skupín** | **7,18** | **14,07** | **+6,89** |
|
||
|
||
Chýbajú OneRuler-SK (18 variantov), NLI-SK-annotated (3), SMESum (3) a SlovakSum (3). Skupina Generation preto nemá skóre. Overall je priemer piatich dostupných skupín s rovnakou váhou, vypočítaný postupom verejného leaderboardu. Dotrénovaný model sa zlepšil v 26 z 29 úloh. Najväčší pokles bol pri SKJ1, z 59,67 na 0,00.
|
||
|
||
[Skóre po úlohách](sk_bench/scores.csv) · [Zoznam variantov](sk_bench/tasks_sk0_385.txt) · [Agregát pôvodného modelu](sk_bench/aggregated/models__ministral-base.json) · [Agregát dotrénovaného modelu](sk_bench/aggregated/models__ministral-last-109064.json)
|
||
|
||
Agregované JSON-y vznikli oficiálnym skriptom z revízie SK-bench `15823bbcc2d995e69441fcb7d34abb61bd8180c5`. CSV používa hlavné metriky úloh z revízie leaderboardu `833bd28e96fd392b7064de053084dc0a6ca9a3e3`. Hodnoty sú na škále 0–100 a rozdiel je v bodoch. [Agregačný skript](https://github.com/slovak-nlp/sk-bench/blob/15823bbcc2d995e69441fcb7d34abb61bd8180c5/scripts/generate_final_results.py) · [Výpočet leaderboardu](https://huggingface.co/spaces/slovak-nlp/sk-bench-leaderboard/blob/833bd28e96fd392b7064de053084dc0a6ca9a3e3/backend/app/leaderboard.py)
|
||
|
||
## Spustenie tréningu a testu
|
||
|
||
Príkazy sa spúšťajú z tohto priečinka v pripravenom prostredí s [tréningovými závislosťami](requirements/training.txt). Príprava používa pôvodný slovenský Parquet. Tréningový skript spúšťa štyri procesy na uzle so štyrmi GPU. Evaluácia testovacej množiny sa spúšťa na jednej GPU.
|
||
|
||
```bash
|
||
python scripts/prepare_data.py --local-parquet /cesta/k/slovak_train.parquet \
|
||
--output-dir data/aya_slovak_fixed --seed 42 --eval-size 1000 --test-size 1000
|
||
|
||
python scripts/train.py configs/input_config.yaml --run-dir runs/ministral_aya
|
||
|
||
python scripts/evaluate.py runs/ministral_aya/used_config.yaml \
|
||
--adapter runs/ministral_aya/adapter/checkpoint-109064 \
|
||
--split test --output-dir runs/ministral_aya/evaluations/aya_test --max-new-tokens 256
|
||
```
|
||
|
||
Skript `scripts/train.py` načíta vstupné nastavenia tréningu zo súboru [`input_config.yaml`](configs/input_config.yaml). V priečinku zadanom cez `--run-dir` tréning vytvorí `used_config.yaml`, ktorý potom použije evaluačný skript. Použité nastavenia jobu 148065 sú uložené v [`run.json`](training/run.json).
|