Diplomovka/perun/ministral_3b_aya/README.md
2026-11-12 17:03:49 +01:00

79 lines
5.3 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.

# 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).