Diplomovka/README.md
Jakub 67061cf373 Add Aya 300k learning-rate study and benchmark results
Document six completed LR runs as preparation for full Aya training on Perun. Record selection of LR 0.00010 by lowest final validation loss, selected-model lm-eval and partial SK-bench results, reproducible provenance, and dataset-access/context-truncation limitations. Preserve existing 30k and Titan material.
2026-10-25 00:33:24 +02:00

995 lines
40 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.

# Instruction fine-tuning slovenského Mistral 7B modelu
## Použitý model
Ako základný model bol použitý:
- `slovak-nlp/mistral-sk-7b`
Výsledný adaptér z prvého experimentu je dostupný na Hugging Face:
- `Jakub1320/mistral-sk-7b-slovak-alpaca-qlora`
---
## Hardvér
Experimenty boli realizované na dvoch serveroch.
### Titan
- 2× NVIDIA TITAN RTX
- 24 GB VRAM na GPU
- výpočty v `fp16`
### Hruška
- 2× NVIDIA RTX A4500
- približne 20 GB VRAM na GPU
- výpočty v `bf16`
---
# Prvý experiment – Slovak Alpaca
## Použitý dataset
Na supervised fine-tuning bol v prvom experimente použitý slovenský inštrukčný dataset:
- `saillab/alpaca-slovak-cleaned`
Dataset obsahuje polia:
- `instruction`
- `input`
- `output`
Dáta boli formátované v Alpaca štýle:
```text
### Inštrukcia:
...
### Vstup:
...
### Odpoveď:
...
```
## Metóda dotrénovania
Model bol dotrénovaný pomocou supervised fine-tuningu cez:
- Unsloth
- TRL `SFTTrainer`
- PEFT LoRA
- QLoRA štýl trénovania
Výsledkom tréningu je PEFT LoRA adaptér, ktorý sa pripája k základnému modelu `slovak-nlp/mistral-sk-7b`.
## Hlavné hyperparametre prvého experimentu
| Parameter | Hodnota |
|---|---:|
| Epochs | 1 |
| Max sequence length | 1024 |
| Batch size | 1 |
| Gradient accumulation | 8 |
| Effective batch size | 8 |
| Learning rate | 2e-4 |
| Optimizer | AdamW 8-bit |
| Scheduler | cosine |
| Warmup steps | 150 |
| LoRA rank | 16 |
| LoRA alpha | 32 |
| LoRA dropout | 0.05 |
| Quantization | 4-bit |
| Compute type | fp16 |
Použité LoRA cieľové moduly:
```text
q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj
```
## Vyhodnotenie pomocou vlastného evaluačného skriptu
Model bol vyhodnotený na testovacích príkladoch z datasetu `saillab/alpaca-slovak-cleaned` pomocou metrík ROUGE, BLEU, eval loss a perplexity.
| Metrika | Výsledok |
|---|---:|
| ROUGE-1 | 0.3710 |
| ROUGE-2 | 0.1702 |
| ROUGE-L | 0.2732 |
| BLEU | 6.2850 |
| Eval loss | 0.8081 |
| Perplexity | 2.2435 |
## Vyhodnotenie pomocou lm-evaluation-harness
Hodnotený bol PEFT LoRA adaptér pripojený k základnému modelu:
```text
slovak-nlp/mistral-sk-7b
+
Jakub1320/mistral-sk-7b-slovak-alpaca-qlora
```
### Použité benchmarky
| Benchmark | Popis |
|---|---|
| `arc_sk` | slovenské vedecké/školské otázky s výberom odpovede |
| `hellaswag_sk` | commonsense reasoning a výber najpravdepodobnejšieho pokračovania |
| `m_mmlu_sk` | slovenský všeobecný vedomostný benchmark |
| `truthfulqa_sk_mc1` | hodnotenie pravdivosti odpovedí, multiple choice MC1 |
| `truthfulqa_sk_mc2` | hodnotenie pravdivosti odpovedí, multiple choice MC2 |
| `sklegal` | slovenské právne otázky s výberom odpovede |
| `skquad` | slovenský question-answering benchmark |
Úlohy `sklegal` a `skquad` boli doplnené ako custom tasky.
## Výsledky lm-evaluation-harness
Poznámka: výsledky `arc_sk`, `hellaswag_sk`, `m_mmlu_sk` a TruthfulQA pochádzajú z prvého behu. `sklegal` a `skquad` boli následne dopočítané v druhom samostatnom behu nad tým istým Alpaca QLoRA adaptérom, pretože v pôvodnom behu tieto dve custom úlohy nefungovali.
| Task | Počet vzoriek | Metrika | Výsledok |
|---|---:|---|---:|
| `arc_sk` | 1169 | acc | 0.3259 |
| `arc_sk` | 1169 | acc_norm | 0.3473 |
| `hellaswag_sk` | 9485 | acc | 0.4134 |
| `hellaswag_sk` | 9485 | acc_norm | 0.5106 |
| `m_mmlu_sk` | 13062 | acc | 0.2928 |
| `truthfulqa_sk_mc1` | 778 | acc | 0.2391 |
| `truthfulqa_sk_mc2` | 778 | acc | 0.3942 |
| `sklegal` | 1334 | acc | 0.2841 |
| `sklegal` | 1334 | acc_norm | 0.4693 |
| `skquad` | 9583 | exact | 1.9722 |
| `skquad` | 9583 | f1 | 27.7994 |
| `skquad` | 9583 | HasAns_exact | 2.4106 |
| `skquad` | 9583 | HasAns_f1 | 34.1456 |
| `skquad` | 9583 | NoAns_exact | 0.0561 |
| `skquad` | 9583 | NoAns_f1 | 0.0561 |
| `skquad` | 9583 | best_exact | 18.6163 |
| `skquad` | 9583 | best_f1 | 28.3012 |
---
# Experiment so strojovým prekladom datasetu
Cieľom experimentu bolo vyskúšať postup, pri ktorom sa anglické polia datasetu:
- `instruction`
- `input`
- `output`
automaticky preložia do slovenčiny a uložia do novej dátovej množiny so zachovaním pôvodnej štruktúry.
Výstupný formát obsahoval pôvodné anglické texty aj slovenské preklady:
```json
{
"instruction_en": "...",
"input_en": "...",
"output_en": "...",
"instruction_sk": "...",
"input_sk": "...",
"output_sk": "..."
}
```
Vznikla preložená vzorka datasetu s 1000 príkladmi.
Umiestnenie:
```text
strojovy_preklad/translated_datasets/alpaca_translated_en_sk_1000.jsonl
```
---
# Experiment s datasetom Aya Collection
Pre ďalšie experimenty bol použitý dataset:
- `CohereLabs/aya_collection_language_split`
- subset: `slovak`
Používané polia boli mapované nasledovne:
| Pôvodné pole | Použitie pri tréningu |
|---|---|
| `inputs` | prompt / inštrukcia |
| `targets` | odpoveď |
---
# Prvý dlhý Aya tréning na serveri Titan – manuálne ukončený pokus
Pred úspešným 225 000-krokovým tréningom bol na serveri Titan spustený prvý dlhý tréning nad slovenskou časťou datasetu Aya Collection.
Tento experiment bežal na jednej NVIDIA TITAN RTX a používal streaming datasetu.
Konfiguráčny súbor je
```text
train_mistral_sk_aya_slovak_full_lora.yaml
```
## Konfigurácia prvého dlhého tréningu
| Parameter | Hodnota |
|---|---:|
| Base model | `slovak-nlp/mistral-sk-7b` |
| Dataset | `aya_slovak_full` |
| Template | `alpaca` |
| Fine-tuning | LoRA |
| GPU | 1× NVIDIA TITAN RTX |
| Max sequence length | 1024 |
| Streaming | áno |
| Streaming buffer | 16 384 |
| Batch size per device | 1 |
| Gradient accumulation | 4 |
| Effective batch size | 4 |
| Max steps | 1 037 000 |
| Learning rate | 2e-4 |
| Scheduler | cosine |
| Warmup steps | 500 |
| Max grad norm | 1.0 |
| Optimizer | AdamW 8-bit |
| LoRA rank | 16 |
| LoRA alpha | 32 |
| LoRA dropout | 0.05 |
| Compute type | fp16 |
| Unsloth | áno |
| Unsloth gradient checkpointing | áno |
| Validation size | 1000 |
| Eval interval | každých 50 000 krokov |
| Save interval | každých 10 000 krokov |
| Save total limit | 2 |
Použité LoRA cieľové moduly:
```text
q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj
```
Konfigurácia počítala približne s jedným prechodom cez celý slovenský Aya subset:
```text
4 148 187 príkladov / effective batch 4 ≈ 1 037 000 krokov
```
## Dôvod manuálneho ukončenia
Tréning technicky nespadol. Po približne 94 000 krokoch sa však začala výrazne zhoršovať stabilita optimalizácie.
V logu sa objavili extrémne hodnoty `grad_norm`, napríklad:
```text
grad_norm = 125.6
grad_norm = 105.9
grad_norm = 24000
grad_norm = 772.1
grad_norm = 11410
grad_norm = 2714
grad_norm = nan
```
Súčasne začal výrazne kolísať aj training loss, napríklad:
```text
loss = 3.232
loss = 7.081
loss = 5.206
loss = 14.82
```
Neskôr sa v logu objavila aj kombinácia:
```text
loss = 0.0
grad_norm = nan
```
Keďže tréning vykazoval známky numerickej nestability, bol manuálne ukončený približne pri kroku `104 238` z plánovaných `1 037 000`, teda približne po 10 % tréningu.
V čase ukončenia bol runtime približne:
```text
44 hodín 48 minút
```
Tento experiment ukázal, že pôvodné nastavenie nebolo vhodné na pokračovanie v takto dlhom tréningu bez ďalších úprav.
---
# Dlhý Aya tréning na serveri Titan
Na serveri Titan bol spustený dlhý LoRA fine-tuning nad slovenskou časťou Aya Collection.
Na rozdiel od prvého QLoRA experimentu nebola použitá 4-bit kvantizácia.
## Hlavná konfigurácia
| Parameter | Hodnota |
|---|---:|
| Base model | `slovak-nlp/mistral-sk-7b` |
| Dataset | Aya Collection – Slovak |
| Fine-tuning | LoRA |
| Unsloth | áno |
| GPU | 2× NVIDIA TITAN RTX |
| Batch size per device | 1 |
| Gradient accumulation | 8 |
| Effective batch size | 16 |
| Max sequence length | 1024 |
| Max steps | 225 000 |
| Learning rate | 5e-5 |
| Scheduler | cosine |
| Warmup steps | 10 000 |
| LoRA rank | 16 |
| LoRA alpha | 16 |
| LoRA dropout | 0.0 |
| Compute type | fp16 |
| Streaming | áno |
Použité LoRA cieľové moduly:
```text
q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj
```
Tréning úspešne dobehol do kroku `225000`.
Pri effective batch size 16 bolo do tohto bodu spracovaných približne:
```text
225 000 × 16 = 3 600 000 príkladov
```
To predstavuje približne 86,8 % slovenského Aya datasetu s približne 4,148 milióna príkladmi. Nešlo teda o úplný jeden epoch.
## Eval loss počas Titan tréningu
| Krok | Eval loss |
|---:|---:|
| 25 000 | 1.0599 |
| 50 000 | 1.174 |
| 75 000 | 1.284 |
| 100 000 | 1.429 |
| 125 000 | 1.342 |
| 150 000 | 1.323 |
| 175 000 | 1.321 |
| 200 000 | 1.213 |
| 225 000 | 1.221 |
Najnižší validačný loss bol zaznamenaný pri kroku `25000`. Tento checkpoint bol samostatne zachovaný pre ďalšie benchmarkové porovnanie s finálnym modelom.
---
# Hruška – 10 porovnávacích experimentov
Na serveri Hruška bola vytvorená séria menších experimentov s cieľom porovnať vplyv vybraných hyperparametrov LoRA fine-tuningu.
Cieľom bolo porovnať vplyv:
- learning rate,
- LoRA rank,
- LoRA alpha,
- optimalizátora,
- LoRA target modulov,
- batch size a gradient accumulation.
## Fixný dataset
Pre férové porovnanie všetkých experimentov bol vytvorený fixný dataset:
```text
aya_slovak_100k_fixed.jsonl
```
Dataset obsahuje presne `100 000` slovenských príkladov z Aya Collection.
Pri jeho vytvorení bol použitý fixný seed. Samotné experimenty už nepoužívali streaming, takže všetky konfigurácie pracovali s rovnakým poolom dát.
Dáta boli uložené vo formáte:
```json
{
"instruction": "...",
"input": "",
"output": "..."
}
```
Pri tréningu bolo `1000` príkladov použitých na validáciu.
## Spoločné nastavenia experimentov
| Parameter | Hodnota |
|---|---:|
| Base model | `slovak-nlp/mistral-sk-7b` |
| Dataset | `aya_slovak_100k_fixed` |
| GPU | 2× NVIDIA RTX A4500 |
| Fine-tuning | LoRA |
| Unsloth | áno |
| Streaming | nie |
| Max sequence length | 1024 |
| Max steps | 6250 |
| Effective batch size | 16 |
| Scheduler | cosine |
| Warmup steps | 500 |
| Max grad norm | 0.5 |
| LoRA dropout | 0.0 |
| Compute type | bf16 |
| Eval interval | každých 1250 krokov |
| Validation size | 1000 |
| Seed | 42 |
Štandardné LoRA cieľové moduly:
```text
q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj
```
Výnimkou je experiment 08, ktorý používa iba:
```text
q_proj, k_proj, v_proj, o_proj
```
## Porovnávané konfigurácie
| Experiment | Hlavná zmena |
|---|---|
| `01_baseline_r16_a16_lr5e5_adamw` | baseline: rank 16, alpha 16, LR 5e-5, AdamW |
| `02_optimizer_adamw8bit_r16_a16_lr5e5` | AdamW 8-bit |
| `03_rank8_a16_lr5e5` | LoRA rank 8 |
| `04_rank32_a32_lr5e5` | LoRA rank 32, alpha 32 |
| `05_r16_alpha32_lr5e5` | alpha 32 pri rank 16 |
| `06_lr1e4_r16_a16` | learning rate 1e-4 |
| `07_lr2e5_r16_a16` | learning rate 2e-5 |
| `08_attention_only_r16_a16_lr5e5` | LoRA iba na attention projekciách |
| `09_batch2_accum4_r16_a16_lr5e5` | batch size 2, gradient accumulation 4 |
| `10_r16_a32_lr1e4` | kombinácia alpha 32 + learning rate 1e-4 |
## Výsledky Hruška experimentov
| Experiment | Train loss | Eval loss | Runtime |
|---|---:|---:|---:|
| `01_baseline_r16_a16_lr5e5_adamw` | 0.9290 | 0.7567 | 7:18:05 |
| `02_optimizer_adamw8bit_r16_a16_lr5e5` | 0.9248 | 0.7521 | 7:20:23 |
| `03_rank8_a16_lr5e5` | 0.9308 | 0.7586 | 7:16:23 |
| `04_rank32_a32_lr5e5` | 0.9003 | 0.7292 | 7:22:33 |
| `05_r16_alpha32_lr5e5` | 0.9026 | 0.7323 | 7:17:44 |
| `06_lr1e4_r16_a16` | 0.8890 | 0.7184 | 7:17:30 |
| `07_lr2e5_r16_a16` | 0.9674 | 0.7912 | 7:18:25 |
| `08_attention_only_r16_a16_lr5e5` | 0.9808 | 0.8094 | 6:51:25 |
| `09_batch2_accum4_r16_a16_lr5e5` | 0.9290 | 0.7563 | 8:24:57 |
| `10_r16_a32_lr1e4` | 0.8612 | 0.6918 | približne 7:15 h |
Najnižší finálny `eval_loss` dosiahol experiment:
```text
10_r16_a32_lr1e4
```
s hodnotou:
```text
eval_loss = 0.6918
```
V tomto experimente bola použitá kombinácia:
```text
LoRA rank = 16
LoRA alpha = 32
learning rate = 1e-4
optimizer = AdamW
effective batch size = 16
```
## Pozorované rozdiely
Z doterajších výsledkov:
- zvýšenie learning rate z `5e-5` na `1e-4` znížilo eval loss z `0.7567` na `0.7184`,
- zvýšenie LoRA alpha z `16` na `32` pri rank 16 znížilo eval loss na `0.7323`,
- kombinácia `alpha=32` a `learning_rate=1e-4` dosiahla najnižší eval loss `0.6918`,
- rank 32 priniesol eval loss `0.7292`,
- rank 8 dosiahol výsledok veľmi blízky baseline,
- attention-only LoRA bola rýchlejšia, ale mala vyšší eval loss,
- zmena z batch size 1 / accumulation 8 na batch size 2 / accumulation 4 nepriniesla zlepšenie validačného lossu ani runtime.
---
# Súbory Hruška experimentov
Výsledky experimentov sú uložené v priečinku:
```text
hruska_10_experiments_results/
```
Súčasťou sú:
```text
hruska_10_experiments_results/
├── aya_slovak_100k_fixed/
├── hruska_10_experiments_results/
│ ├── 01_baseline_r16_a16_lr5e5_adamw/
│ ├── 02_optimizer_adamw8bit_r16_a16_lr5e5/
│ ├── 03_rank8_a16_lr5e5/
│ ├── 04_rank32_a32_lr5e5/
│ ├── 05_r16_alpha32_lr5e5/
│ ├── 06_lr1e4_r16_a16/
│ ├── 07_lr2e5_r16_a16/
│ ├── 08_attention_only_r16_a16_lr5e5/
│ ├── 09_batch2_accum4_r16_a16_lr5e5/
│ └── 10_r16_a32_lr1e4/
├── hruska_experiment_eval_loss_ranking.png
├── hruska_experiment_train_loss_ranking.png
└── hruska_experiment_summary.csv
```
Každý experiment obsahuje:
```text
<experiment>.yaml
training.log
training_loss.png
training_eval_loss.png
```
---
## Reprodukcia tréningových experimentov
Jednotlivé experimenty je možné zreplikovať pomocou uložených YAML konfiguračných súborov.
Pred spustením tréningu je potrebné aktivovať prostredie s LLaMA-Factory a prejsť do jeho adresára:
```bash
conda activate llama_factory_unsloth
cd /home/schwarc/LLaMA-Factory
```
Pre 2-GPU experimenty bol tréning spúšťaný pomocou:
```bash
CUDA_VISIBLE_DEVICES=0,1 FORCE_TORCHRUN=1 \
llamafactory-cli train /cesta/ku/configu.yaml
```
Napríklad pre experiment:
```text
10_r16_a32_lr1e4
```
možno použiť:
```bash
CUDA_VISIBLE_DEVICES=0,1 FORCE_TORCHRUN=1 \
llamafactory-cli train \
/home/schwarc/diplomovka/configs/hruska_compare9_100k_fixed/10_r16_a32_lr1e4.yaml
```
Ak má byť terminálový výstup zároveň uložený do logu:
```bash
CUDA_VISIBLE_DEVICES=0,1 FORCE_TORCHRUN=1 \
llamafactory-cli train \
/home/schwarc/diplomovka/configs/hruska_compare9_100k_fixed/10_r16_a32_lr1e4.yaml \
2>&1 | tee /home/schwarc/diplomovka/logs/10_r16_a32_lr1e4.log
```
# Výsledky benchmarkovania pomocou lm-evaluation-harness
Po dokončení tréningov boli vyhodnotené:
- všetkých 10 Hruška experimentov,
- Titan checkpoint po 25 000 krokoch,
- finálny Titan model po 225 000 krokoch,
- starší QLoRA model trénovaný na `saillab/alpaca-slovak-cleaned`.
- Kompletné výsledky a výstupné súbory z evaluácie pomocou lm-evaluation-harness sú dostupné v priečinku `lmeval/`
Použité benchmarky:
```text
arc_sk
hellaswag_sk
m_mmlu_sk
truthfulqa_sk_mc1
truthfulqa_sk_mc2
sklegal
skquad
```
Počet hodnotených vzoriek bol:
| Benchmark | Počet vzoriek |
|---|---:|
| `arc_sk` | 1169 |
| `hellaswag_sk` | 9485 |
| `m_mmlu_sk` | 13062 |
| `truthfulqa_sk_mc1` | 778 |
| `truthfulqa_sk_mc2` | 778 |
| `sklegal` | 1334 |
| `skquad` | 9583 |
Pri úlohách, kde `lm-evaluation-harness` poskytuje `acc` aj `acc_norm`, je v súhrnných tabuľkách použitá najmä hodnota `acc_norm`. Pri `skquad` je ako hlavná súhrnná metrika použitá hodnota `F1`.
Hruška benchmarky boli počítané v `bfloat16`, Titan a starší Alpaca model v `float16`. Batch size pri evaluácii bol 1.
## Poznámka k staršiemu Alpaca benchmarku
Starší model `Jakub1320/mistral-sk-7b-slovak-alpaca-qlora` bol vyhodnotený v dvoch behoch. V prvom boli vyhodnotené:
```text
arc_sk
hellaswag_sk
m_mmlu_sk
truthfulqa_sk_mc1
truthfulqa_sk_mc2
```
Úlohy `sklegal` a `skquad` vtedy nefungovali, preto boli neskôr spustené samostatne. Výsledky uvedené v README sú zlúčením týchto dvoch behov nad tým istým adaptérom.
Pri porovnávaní starého Alpaca modelu s novšími behmi treba brať do úvahy, že bol použitý iný softvérový stav. Najdôležitejšie je, že starý výsledok `truthfulqa_sk_mc2` má v uloženom výsledku verziu úlohy 2.0, zatiaľ čo novšie Hruška a Titan behy používajú verziu 1.0. Preto výsledok MC2 starého Alpaca modelu nie je vhodné považovať za úplne priamo porovnateľný s novými behmi. Ostatné hlavné verzie benchmarkov sa zhodujú.
---
## Výsledky 10 Hruška experimentov
| Experiment | Eval loss | ARC acc_norm | HellaSwag acc_norm | M-MMLU acc | TQA MC1 | TQA MC2 | SKLegal acc_norm | SKQuad F1 |
|---|---:|---:|---:|---:|---:|---:|---:|---:|
| `01_baseline_r16_a16_lr5e5_adamw` | 0.7567 | 0.3405 | 0.5209 | 0.3550 | 0.1799 | 0.3439 | 0.4685 | 36.6797 |
| `02_optimizer_adamw8bit_r16_a16_lr5e5` | 0.7521 | 0.3379 | 0.5212 | 0.3544 | 0.1928 | 0.3537 | 0.4715 | 36.2178 |
| `03_rank8_a16_lr5e5` | 0.7586 | 0.3311 | 0.5167 | 0.3455 | 0.1838 | 0.3425 | 0.4715 | 36.3638 |
| `04_rank32_a32_lr5e5` | 0.7292 | 0.3353 | 0.5201 | 0.3450 | 0.1902 | 0.3367 | 0.4730 | 36.0228 |
| `05_r16_alpha32_lr5e5` | 0.7323 | 0.3336 | 0.5190 | 0.3571 | 0.1967 | 0.3555 | 0.4670 | 37.8735 |
| `06_lr1e4_r16_a16` | 0.7184 | 0.3311 | 0.5207 | 0.3550 | 0.1902 | 0.3473 | 0.4655 | 37.5796 |
| `07_lr2e5_r16_a16` | 0.7912 | 0.3276 | 0.5225 | 0.3379 | 0.1671 | 0.3246 | 0.4723 | 33.8381 |
| `08_attention_only_r16_a16_lr5e5` | 0.8094 | 0.3524 | 0.5218 | 0.3448 | 0.1877 | 0.3674 | 0.4768 | 43.3752 |
| `09_batch2_accum4_r16_a16_lr5e5` | 0.7563 | 0.3379 | 0.5209 | 0.3514 | 0.1864 | 0.3402 | 0.4693 | 35.3128 |
| `10_r16_a32_lr1e4` | 0.6918 | 0.3293 | 0.5157 | 0.3448 | 0.2057 | 0.3480 | 0.4618 | 37.7561 |
### Najlepší výsledok Hruška podľa jednotlivých benchmarkov
| Metrika | Najlepší Hruška experiment | Výsledok |
|---|---|---:|
| ARC acc_norm | `08_attention_only_r16_a16_lr5e5` | 0.3524 |
| HellaSwag acc_norm | `07_lr2e5_r16_a16` | 0.5225 |
| M-MMLU acc | `05_r16_alpha32_lr5e5` | 0.3571 |
| TruthfulQA MC1 | `10_r16_a32_lr1e4` | 0.2057 |
| TruthfulQA MC2 | `08_attention_only_r16_a16_lr5e5` | 0.3674 |
| SKLegal acc_norm | `08_attention_only_r16_a16_lr5e5` | 0.4768 |
| SKQuad F1 | `08_attention_only_r16_a16_lr5e5` | 43.3752 |
Najvýraznejší výsledok dosiahol experiment:
```text
08_attention_only_r16_a16_lr5e5
```
Ten mal síce zo všetkých 10 experimentov najvyšší, teda najhorší validačný `eval_loss = 0.8094`, ale súčasne dosiahol najlepší Hruška výsledok na:
- `arc_sk` podľa `acc_norm`,
- `truthfulqa_sk_mc2`,
- `sklegal` podľa `acc_norm`,
- `skquad` podľa F1.
Na `skquad` dosiahol F1 `43.3752`, zatiaľ čo baseline experiment 01 dosiahol `36.6797`.
Naopak experiment:
```text
10_r16_a32_lr1e4
```
mal najlepší validačný `eval_loss = 0.6918`, ale nebol najlepší vo väčšine externých benchmarkov. Jeho najlepší výsledok v rámci Hruška experimentov bol `truthfulqa_sk_mc1 = 0.2057`.
Ďalšie pozorovania:
- `07_lr2e5_r16_a16` dosiahol najlepší HellaSwag `acc_norm = 0.5225`, ale mal slabší eval loss `0.7912`.
- `05_r16_alpha32_lr5e5` dosiahol najlepší M-MMLU výsledok `0.3571`.
- AdamW 8-bit v experimente 02 dal benchmarkové výsledky veľmi podobné klasickému AdamW baseline.
- zmena batch size / gradient accumulation v experimente 09 nepriniesla jasné benchmarkové zlepšenie,
- rozdiely medzi viacerými Hruška modelmi na multiple-choice úlohách sú malé, preto ich netreba interpretovať ako zásadné bez ďalších behov alebo štatistického testovania,
- najvýraznejšie oddelenie experimentu 08 je na `skquad`, kde je rozdiel oproti ostatným modelom podstatne väčší.
---
## Porovnanie Titan checkpointu 25k a finálneho modelu 225k
Checkpoint 25 000 zodpovedá približne:
```text
25 000 × effective batch size 16 = 400 000 spracovaných tréningových príkladov
```
Finálny krok 225 000 zodpovedá približne:
```text
225 000 × 16 = 3 600 000 spracovaných tréningových príkladov
```
Slovenská časť Aya obsahuje približne 4,148 milióna príkladov, takže 225 000 krokov predstavuje približne 86,8 % jedného úplného prechodu datasetom, nie celý epoch.
| Metrika | Titan 25k | Titan 225k | Zmena 225k − 25k |
|---|---:|---:|---:|
| ARC acc_norm | 0.3251 | 0.3447 | +1.97 p. b. |
| HellaSwag acc_norm | 0.4943 | 0.4793 | -1.50 p. b. |
| M-MMLU acc | 0.3342 | 0.2719 | -6.22 p. b. |
| TruthfulQA MC1 | 0.1761 | 0.2005 | +2.44 p. b. |
| TruthfulQA MC2 | 0.3251 | 0.3613 | +3.63 p. b. |
| SKLegal acc_norm | 0.4588 | 0.4393 | -1.95 p. b. |
| SKQuad F1 | 25.8678 | 35.0471 | +9.1793 bodu |
Výsledok Titan porovnania nie je jednoznačný.
Finálny 225k model oproti 25k checkpointu zlepšil:
- ARC `acc_norm` približne o 1,97 percentuálneho bodu,
- TruthfulQA MC1 približne o 2,44 p. b.,
- TruthfulQA MC2 približne o 3,63 p. b.,
- SKQuad F1 približne o 9,18 bodu.
Naopak sa zhoršil:
- HellaSwag `acc_norm` približne o 1,50 p. b.,
- M-MMLU približne o 6,22 p. b.,
- SKLegal `acc_norm` približne o 1,95 p. b.
To je dôležité aj vzhľadom na validačný loss. Checkpoint 25k mal najlepší nameraný Titan eval loss približne `1.0599`, zatiaľ čo na konci bol eval loss približne `1.221`. Napriek tomu 225k checkpoint zlepšil niektoré downstream úlohy, najmä `skquad`.
Preto sa nedá povedať, že checkpoint s najnižším validačným lossom je automaticky najlepší model pre všetky úlohy.
---
## Súhrnné porovnanie vybraných modelov
| Model / checkpoint | ARC acc_norm | HellaSwag acc_norm | M-MMLU acc | TQA MC1 | TQA MC2 | SKLegal acc_norm | SKQuad F1 |
|---|---:|---:|---:|---:|---:|---:|---:|
| Alpaca QLoRA | 0.3473 | 0.5106 | 0.2928 | 0.2391 | 0.3942 * | 0.4693 | 27.7994 |
| Hruška 08 attention-only | 0.3524 | 0.5218 | 0.3448 | 0.1877 | 0.3674 | 0.4768 | 43.3752 |
| Hruška 10 best eval loss | 0.3293 | 0.5157 | 0.3448 | 0.2057 | 0.3480 | 0.4618 | 37.7561 |
| Titan 25k | 0.3251 | 0.4943 | 0.3342 | 0.1761 | 0.3251 | 0.4588 | 25.8678 |
| Titan 225k | 0.3447 | 0.4793 | 0.2719 | 0.2005 | 0.3613 | 0.4393 | 35.0471 |
`*` Starý Alpaca výsledok `truthfulqa_sk_mc2` bol získaný s inou verziou tejto úlohy, preto ho treba porovnávať opatrne.
Z porovnania možno vyvodiť:
1. **Hruška experimenty sú veľmi konkurencieschopné napriek iba 100k dátam.**
Najmä experiment 08 dosiahol najlepší výsledok na `skquad` a silné výsledky na ARC a SKLegal.
2. **Viac tréningových dát alebo viac krokov automaticky neznamenalo lepší výsledok na každom benchmarku.**
Titan 225k spracoval približne 3,6 milióna príkladov, ale na M-MMLU, HellaSwag a SKLegal bol slabší než viacero 100k Hruška experimentov.
3. **Titan 225k sa výrazne zlepšil v generatívnom question-answering benchmarku SKQuad oproti Titan 25k.**
F1 stúplo z `25.8678` na `35.0471`.
4. **Starší Alpaca QLoRA model zostáva silný na TruthfulQA MC1.**
Dosiahol `0.2391`, čo je viac než všetky nové Aya experimenty. To môže znamenať, že rozdielna tréningová dátová distribúcia zachováva alebo posilňuje iné schopnosti modelu.
5. **Najlepší Hruška validačný loss a najlepší benchmarkový model nie sú totožné.**
Experiment 10 je najlepší podľa Aya eval loss, zatiaľ čo experiment 08 je najvýraznejší podľa širšieho benchmarkového profilu.
---
## Dôležité obmedzenia porovnania
Pri interpretácii výsledkov treba zohľadniť:
- Hruška modely boli trénované na fixnom 100k výbere Aya dát, Titan na streamovanej veľkej časti Aya datasetu,
- konfigurácie tréningu sa medzi Hruškou a Titanom líšili,
- Hruška benchmarky používali `bf16`, Titan `fp16`,
- starší Alpaca benchmark vznikol v inom softvérovom prostredí,
- starý `truthfulqa_sk_mc2` používal inú verziu úlohy,
- nebol zatiaľ zrobený benchmark základného modelu `slovak-nlp/mistral-sk-7b` bez adaptéru.
---
# Optuna – výber learning rate na 30k Aya príkladoch
Po sérii 100k porovnávacích experimentov som na Hruške vyskúšal menší skúšobný experiment s automatickým výberom learning rate pomocou framewrku Optuna. Cieľom bolo vybrať sľubnú oblasť LR pre následné overenie na väčšej dátovej množine. Táto časť sumarizuje **osem úspešne dokončených trialov**.
Konfigurácie, súhrnné výsledky, grafy a podrobné záznamy úspešných trialov sú v priečinku [optuna_30k_experiments/](optuna_30k_experiments/).
Tréningové logy všetkých ôsmich dokončených trialov sú v priečinku [logs/](optuna_30k_experiments/logs/).
## Metodika a spoločné nastavenia
Optimalizovaný bol iba parameter `learning_rate` v rozsahu **2e-5 až 2e-4**. Prvé štyri referenčné hodnoty boli vložené ručne: `2e-5`, `5e-5`, `1e-4` a `2e-4`. Ďalšie hodnoty navrhovala Optuna.
| Parameter | Hodnota |
|---|---|
| Základný model | `slovak-nlp/mistral-sk-7b` |
| Dataset | fixný `aya_slovak_hpo_30k`, bez streamingu |
| Rozdelenie dát | 29 000 tréningových + 1 000 validačných príkladov |
| Hardvér | 1× NVIDIA RTX A4500 na Hruške, GPU 0 |
| Compute type | `bf16` |
| Framework | LLaMA-Factory + Unsloth |
| Fine-tuning | LoRA, bez nastavenej 4-bit kvantizácie |
| Template / max. dĺžka | `alpaca` / 1024 tokenov |
| Packing / train on prompt | `false` / `false` |
| LoRA rank / alpha / dropout | 16 / 32 / 0.0 |
| LoRA target moduly | `q_proj,k_proj,v_proj,o_proj,gate_proj,up_proj,down_proj` |
| Batch size / gradient accumulation | 1 / 16, effective batch 16 |
| Rozsah tréningu | 1 epocha, 1 813 optimizer krokov |
| Optimizer / scheduler | AdamW (`adamw_torch`) / cosine |
| Warmup | 150 krokov |
| Max grad norm | 0.5 |
| Eval interval / eval batch size | každých 300 krokov + finálna evaluácia / 1 |
| Seed | 42 |
## Výsledky ôsmich dokončených trialov
| Poradie | Trial | Learning rate | Finálny eval loss | Maximum zaznamenaného grad_norm |
|---:|---:|---:|---:|---:|
| 1 | 3 | 0.0002000000 | 0.740409 | 14.7127 |
| 2 | 8 | 0.0001864520 | 0.740567 | 3.4996 |
| 3 | 4 | 0.0001869045 | 0.741250 | 29.0258 |
| 4 | 2 | 0.0001000000 | 0.752890 | 7.8035 |
| 5 | 6 | 0.0000625750 | 0.766744 | 8.2603 |
| 6 | 1 | 0.0000500000 | 0.774108 | 9.5442 |
| 7 | 7 | 0.0000202781 | 0.800064 | 16.1318 |
| 8 | 0 | 0.0000200000 | 0.800524 | 17.8756 |
Presné hodnoty LR, finálne aj minimálne eval loss, kroky, training loss a runtime sú v [CSV súhrne](optuna_30k_experiments/results/optuna_lr_results.csv).
<p align="center">
<img src="optuna_30k_experiments/results/lr_vs_eval_loss.png"
alt="Finálny eval loss v závislosti od learning rate"
width="50%">
</p>
## Súhrn
- Najnižší finálny eval loss dosiahol **trial 3 s LR 0.0002: 0.740409**.
- Trial 8 s LR približne **0.00018645** dosiahol veľmi blízky výsledok **0.740567**; rozdiel je približne 0.000157.
- Na tomto 30k tréningu mali nižšie skúšané LR vyšší finálny eval loss.
- Najlepší skúšaný LR leží na hornej hranici rozsahu.
---
# Hruška – hľadanie learning rate na 300k Aya príkladoch
Po skúšobnom hľadaní LR pomocou Optuny na 30k príkladoch nasledovalo **overenie šiestich ručne zvolených hodnôt LR na väčšej, fixnej 300k vzorke**. Cieľom bolo nájsť vhodné východiskové nastavenie pre plánovaný tréning na celej slovenskej Aya množine na **Perune**. Tento 300k experiment ešte nebol tréningom na celej množine.
Podklady k tréningu a následným benchmarkom vybraného modelu sú v priečinku [aya_300k_lr_experiments/](aya_300k_lr_experiments/). Postup opakovania a technické podmienky sú v [reproduction.md](aya_300k_lr_experiments/reproduction.md).
## Dáta a spoločná konfigurácia
Zo slovenského `train` splitu `CohereLabs/aya_collection_language_split` sa vyfiltrovali prázdne alebo neplatné `inputs`/`targets`, údaje sa premiešali so seed 42 a vybralo sa 300 000 záznamov. Polia sa previedli na Alpaca formát: `inputs` na `instruction`, prázdny `input` a `targets` na `output`.
| Parameter | Hodnota |
|---|---|
| Základný model | `slovak-nlp/mistral-sk-7b` |
| Použitý modelový snapshot | `089497ae0d72018e9591895c54f774bf0b4a83a4` |
| Dataset | fixný `aya_slovak_300k_fixed`, bez streamingu |
| Rozdelenie | 299 000 tréningových + 1 000 validačných príkladov |
| Hardvér | Hruška, 1× RTX A4500, GPU 0 |
| Framework a presnosť | LLaMA-Factory + Unsloth, `bf16` |
| Fine-tuning | LoRA, rank 16, alpha 32, dropout 0.0 |
| LoRA moduly | `q_proj,k_proj,v_proj,o_proj,gate_proj,up_proj,down_proj` |
| Template / cutoff | `alpaca` / 1024 tokenov |
| Packing / train on prompt | `false` / `false` |
| Batch / gradient accumulation | 1 / 16; effective batch 16 |
| Tréning | 1 epocha, 18 688 optimizer krokov |
| Optimizer / scheduler | `adamw_torch` / cosine |
| Warmup / max grad norm | 1500 krokov / 0.5 |
| Evaluácia / logovanie | každých 1000 / 10 krokov + finálna evaluácia |
| Seed | 42 |
Pôvodné [konfigurácie](aya_300k_lr_experiments/configs/) a [tréningové logy](aya_300k_lr_experiments/logs/) sú zachované. Konfigurácie sa líšia hodnotou LR, výstupnou cestou a prevádzkovým príznakom `overwrite_output_dir`. Archív neobsahuje checksum vstupného datasetu ani identifikátory validačných vzoriek; úplnú identitu dát preto nemožno nezávisle overiť iba z uložených konfigurácií.
## Výsledky a výber LR pre ďalší tréning
Prvá séria obsahovala LR `0.00018`, `0.00020` a `0.00023`. Po jej vyhodnotení sa rozsah rozšíril smerom nadol o `0.00015`, `0.00010` a `0.00008`. Všetkých šesť behov dokončilo jednu epochu.
| Learning rate | Finálny eval loss | Minimálny eval loss | Krok minima |
|---:|---:|---:|---:|
| 0.00008 | 0.875217 | 0.875217 | 18 688 |
| **0.00010** | **0.872620** | **0.872620** | **18 688** |
| 0.00015 | 0.884270 | 0.884270 | 18 688 |
| 0.00018 | 0.891460 | 0.891388 | 18 000 |
| 0.00020 | 0.897669 | 0.897507 | 18 000 |
| 0.00023 | 0.903236 | 0.903193 | 18 000 |
**LR `0.00010` bol vybraný preto, že dosiahol najnižší finálny validačný loss zo všetkých šiestich 300k behov: `0.87261962890625`.** Rozdiel oproti LR `0.00008` je približne 0.002597. Ide o najlepší bodový výsledok v tejto sérii; neprebehli opakovania s viacerými seedmi ani overenie optimálneho LR na celej Aya množine. Pre Perun slúži ako východisko.
Na 30k skúške bol najlepší skúšaný LR `0.0002`. Výsledky 300k série preto ukazujú význam overenia LR na väčšej vzorke. Absolútne hodnoty eval loss medzi 30k, 100k a 300k sériami nie sú priamym porovnaním kvality modelov, keďže nemožno predpokladať zhodné validačné vzorky.
Presné údaje sú v [pôvodnom LR súhrne](aya_300k_lr_experiments/results/aya_300k_lr_summary.csv), [rozšírenom súhrne behov](aya_300k_lr_experiments/results/training_run_summary.csv) a [histórii validačného loss](aya_300k_lr_experiments/results/eval_loss_history.csv).
<p align="center">
<img src="aya_300k_lr_experiments/results/lr_vs_final_eval_loss.png" alt="Finálny eval loss podľa learning rate na 300k Aya príkladoch" width="50%">
</p>
<p align="center">
<img src="aya_300k_lr_experiments/results/eval_loss_over_steps.png" alt="Priebeh validačného loss pre šesť learning rate" width="50%">
</p>
<p align="center">
<img src="aya_300k_lr_experiments/results/grad_norm_over_steps.png" alt="Priebeh zaznamenaného gradient norm pre šesť learning rate" width="50%">
</p>
## Export vybraného modelu a benchmarky
Na následné benchmarky sa vybral model s LR `0.00010`. Jeho LoRA adaptér sa zlúčil s pôvodným základným modelom do samostatného modelu v `bfloat16`. Export nepredstavoval ďalší tréning. [Exportná konfigurácia](aya_300k_lr_experiments/benchmarks/export/export_lr_0p00010.yaml) používa rovnaký snapshot základného modelu a template `alpaca`.
Benchmarky skúmajú schopnosti tohto vybraného modelu. **Ostatných päť LR zatiaľ týmito benchmarkmi nebolo porovnaných**, takže z nich nemožno vyhlásiť LR `0.00010` za najlepší LR podľa downstream metrík.
### lm-evaluation-harness
Použilo sa pôvodné prostredie `lm_eval_hruska`, HF backend, `bf16`, batch size 1 a zero-shot nastavenie bez aplikovania chat template. Zlúčený model sa načítal samostatne; tokenizer pochádzal z pôvodného modelového snapshotu. Tento postup obchádza nekompatibilitu exportovaného označenia `TokenizersBackend` so starším Transformers 4.48.2.
Vyhodnotenie dokončilo všetkých sedem pôvodných úloh a skončilo s návratovým kódom 0. Zachované sú [výsledky](aya_300k_lr_experiments/benchmarks/lmeval/results/), [log](aya_300k_lr_experiments/benchmarks/lmeval/logs/), custom úlohy a metadáta prostredia. V nasledujúcej tabuľke sú accuracy metriky prevedené na percentá; SKQuad F1 je už v zdroji v škále 0–100.
| Model | ARC acc_norm | HellaSwag acc_norm | M-MMLU acc | TQA MC1 | TQA MC2 | SKLegal acc_norm | SKQuad F1 |
|---|---:|---:|---:|---:|---:|---:|---:|
| 100k – experiment 01, baseline | 34.05 | 52.09 | 35.50 | 17.99 | 34.39 | 46.85 | 36.68 |
| 100k – experiment 08, attention-only | 35.24 | 52.18 | 34.48 | 18.77 | 36.74 | 47.68 | 43.38 |
| 100k – experiment 10, r16/a32/LR 0.0001 | 32.93 | 51.57 | 34.48 | 20.57 | 34.80 | 46.18 | 37.76 |
| **300k – vybraný LR 0.00010** | 34.73 | 51.64 | 31.03 | 19.67 | 35.07 | 46.10 | 38.73 |
Oproti 100k experimentu 10 dosiahol vybraný 300k model bodovo vyššie ARC acc_norm (+1.80 percentuálneho bodu) a SKQuad F1 (+0.97 bodu), ale nižšie M-MMLU acc (−3.45 percentuálneho bodu). Ostatné zmeny sú menšie. V žiadnej zo siedmich hlavných metrík neprekonal maximum z celej desiatky 100k behov; tieto maximá navyše pochádzajú z rôznych konfigurácií. Výber najnižšieho validačného loss teda neznamená automaticky najlepší výsledok v každej downstream úlohe. Nejde o vyhodnotenie všetkých šiestich 300k LR ani o test štatistickej významnosti rozdielov.
Úplné porovnanie so všetkými desiatimi staršími Hruška experimentmi je v [comparison_with_100k.csv](aya_300k_lr_experiments/benchmarks/lmeval/comparison_with_100k.csv). Vo všetkých porovnávaných Hruška behoch sa zhodujú konfigurácie a verzie úloh, počty vzoriek, seeds, evaluator commit `6d2abda4`, Transformers 4.48.2 a nastavenie bez chat template. Pole `task_hashes` je však v zdrojových JSON súboroch prázdne, takže nezávislé overenie obsahu benchmarkových dát pomocou hashov nie je možné. Staršie výsledky používali samostatný PEFT adaptér, nový výsledok zlúčený model v BF16; spôsob načítania a zaokrúhlenie pri zlúčení preto nie sú úplne identické. Podrobnosti sú v [audite porovnateľnosti](aya_300k_lr_experiments/benchmarks/lmeval/provenance/comparability_audit.json).
### SK-bench
Dokončil sa **čiastkový slovenský zero-shot beh s 222 položkami**. Položka predstavuje kombináciu úlohy, podúlohy a variantu promptu, nie jeden hodnotený príklad. Zahrnuté boli tri slovenské formulácie promptov dostupných úloh. Použila sa Alpaca šablóna zlúčeného modelu, greedy dekódovanie, seed 1234, `bf16`, jedna GPU a maximálny kontext 32 768 tokenov.
Z pôvodných 412 slovenských položiek sa vynechalo 187 položiek pre 12 nedostupných repozitárov: Chiby, Autoškola, e-testy, IFEval-SK, OneRuler-SK, Scio, Slohry, Slovak school exams, Slovak Trivia, SlovakSum, SME-Sum a slovné analógie. Ich kontrola vracala `RepositoryNotFoundError`; tento stav sám osebe nerozlišuje neexistujúci repozitár od súkromného repozitára bez oprávnenia. Ďalšie tri položky NLI-SK-annotated sa vynechali, pretože prístup vyžadoval schválenie autorkou a pri spúšťaní behu ešte nebol udelený. Ostatné NLI úlohy zo skLEP v behu zostali.
Uložené sú [vykonané úlohy](aya_300k_lr_experiments/benchmarks/skbench/configs/tasks.txt), [vynechané úlohy](aya_300k_lr_experiments/benchmarks/skbench/configs/omitted_tasks.txt), [report dostupnosti](aya_300k_lr_experiments/benchmarks/skbench/configs/dataset_access_report.json), úplný výsledný JSON a úspešný log. Audit 222 detailných parquet výstupov overil **159 426 hodnotení** (53 142 pre každý z troch promptov). **Log zároveň potvrdzuje orezanie príliš dlhého vstupu.** Všetky uložené `model_response.truncated_tokens_count` sú síce nulové, ale tieto počítadlá nezachytili orezanie hlásené enginom. Pri MultiWikiQA má 69 vstupov dĺžku presne na hranici použitého rozpočtu (23 pri každom prompte); ide o kandidátov konzistentných s orezaním, nie o spoľahlivo dokázaný počet orezaných príkladov. Výsledky dlhých QA vstupov preto treba interpretovať s týmto obmedzením. Podrobnosti sú v [audite](aya_300k_lr_experiments/benchmarks/skbench/results/audit_summary.json) a [počítadlách po úlohách](aya_300k_lr_experiments/benchmarks/skbench/results/truncation_audit_per_task.csv).
Výber opisných výsledkov z dostupných úloh. Uvedený priemer je vážený počtom hodnotených príkladov v príslušných variantoch; všetky tri prompty majú v danej úlohe rovnaký počet príkladov. Pri MMLU zahŕňa všetkých 57 predmetov a tri prompty. Toto nie je oficiálna agregácia úplného SK-bench.
| Úloha | Metrika | Počet variantov | Priemer (%) |
|---|---|---:|---:|
| ARC | `em_relaxed` | 3 | 19.08 |
| Belebele | `em_relaxed` | 3 | 21.33 |
| Financial Exams | `em_relaxed` | 3 | 22.94 |
| Global-MMLU-Lite | `em_relaxed` | 3 | 19.83 |
| MMLU (57 predmetov) | `em_relaxed` | 171 | 15.72 |
| SlovakCOPA | `em_relaxed` | 3 | 40.47 |
| SKJ1 | `em_relaxed` | 3 | 4.33 |
| TruthfulQA MC1 | `em_relaxed` | 3 | 1.20 |
| MovieReview | `em_norm_relaxed` | 3 | 40.90 |
| ToxicSK | `em_norm_relaxed` | 3 | 47.60 |
| MultiWikiQA | `f1_slk` | 3 | 50.99 |
| skLEP-QA | `f1_slk` | 3 | 37.50 |
Úplné metriky sú v [per_task_metrics.csv](aya_300k_lr_experiments/benchmarks/skbench/results/per_task_metrics.csv); rodinné a promptové súhrny vrátane nevážených priemerov sú v [family_summary.csv](aya_300k_lr_experiments/benchmarks/skbench/results/family_summary.csv) a [family_prompt_summary.csv](aya_300k_lr_experiments/benchmarks/skbench/results/family_prompt_summary.csv).
Výsledky treba čítať spolu s definíciou metriky a promptu. Napríklad pri ARC je priemer presnej metriky `em` približne 2.37 %, zatiaľ čo `em_relaxed` dosahuje 19.08 %. Rozdiel ukazuje citlivosť generatívneho hodnotenia na spôsob zápisu odpovede. Úplný surový JSON zachováva aj agregát `all`, ktorý sa tu neinterpretuje ako celkové skóre: mieša rôzne metriky a pokrýva neúplnú množinu úloh. Samotné MMLU tvorí 171 z 222 položiek, preto jednoduché spriemerovanie všetkých riadkov nie je vyváženým súhrnom schopností modelu.
**Tento výsledok nie je oficiálne celkové skóre úplného SK-bench.** Pri porovnávaní ďalších modelov treba použiť rovnaký zmrazený zoznam úloh a rovnaký protokol. SK-bench používa generovanie a následné porovnávanie textovej odpovede, zatiaľ čo väčšina uvedených lm-eval úloh vyhodnocuje pravdepodobnosti možností. Odlišné sú aj konkrétne datasety, prompty a metriky; hodnoty medzi týmito dvoma frameworkmi preto nie sú priamo zameniteľné.
Pri príprave sa sampler FlashInfer pokúšal kompilovať cez starší systémový CUDA toolkit. Úspešný beh používal `VLLM_USE_FLASHINFER_SAMPLER=0` a `--enforce-eager`. Podrobné verzie a parametre sú súčasťou benchmarkových metadát.
## Uložené podklady
Priečinok [aya_300k_lr_experiments/](aya_300k_lr_experiments/) obsahuje pôvodné konfigurácie, tréningové a benchmarkové logy, výsledné JSON/CSV súbory, grafy, vybrané metadáta a skripty. Veľké váhy, checkpointy, `trainer_state.json`, kompletné per-sample parquet súbory a duplicitné inference cache zostávajú v pôvodnom archíve. Grafy a odvodené tabuľky tréningu možno obnoviť z malých uložených histórií bez prístupu k váham modelov.
Zdrojový archív a jeho SHA-256 sú zaznamenané v [source_archive.json](aya_300k_lr_experiments/provenance/source_archive.json).