This commit is contained in:
Jakub Schwarc 2026-10-04 23:50:18 +02:00
parent d4b00793b3
commit 581ae22dbb
23 changed files with 6614 additions and 0 deletions

BIN
README.md

Binary file not shown.

802
README_lmeval_updated.md Normal file
View File

@ -0,0 +1,802 @@
# 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`.
To ukazuje dôležitý rozdiel medzi validačným lossom a downstream benchmarkmi: nižší loss na validačnej časti Aya datasetu neznamená automaticky najlepší výkon na nezávislých úlohách. Validačný loss meria predovšetkým prispôsobenie dátovej distribúcii použitej pri tréningu, zatiaľ čo benchmarky merajú odlišné schopnosti modelu.
Ď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.

View File

@ -0,0 +1,14 @@
model,training_eval_loss,arc_acc,arc_acc_norm,hellaswag_acc,hellaswag_acc_norm,m_mmlu_acc,truthfulqa_mc1_acc,truthfulqa_mc2_acc,sklegal_acc,sklegal_acc_norm,skquad_exact,skquad_f1,skquad_HasAns_exact,skquad_HasAns_f1,skquad_NoAns_exact,skquad_NoAns_f1,skquad_best_exact,skquad_best_f1
alpaca_qlora,,0.32591958939264326,0.3473053892215569,0.4133895624670532,0.5105956773853453,0.2928341754708314,0.2390745501285347,0.39419828418377467,0.2841079460269865,0.46926536731634183,1.9722425127830534,27.7993811825338,2.410565457109886,34.145591726147124,0.05605381165919283,0.05605381165919283,18.61629969738078,28.301192071377013
01_baseline_r16_a16_lr5e5_adamw,0.7567,0.30196749358426006,0.34046193327630453,0.41560358460727465,0.5209277807063785,0.3549992344204563,0.17994858611825193,0.34391089322085056,0.28785607196401797,0.46851574212893554,14.160492538870917,36.6797346829585,17.38684446723939,45.05730189342111,0.05605381165919283,0.05605381165919283,18.689345716372742,36.915470604294036
02_optimizer_adamw8bit_r16_a16_lr5e5,0.7521,0.29597946963216426,0.3378956372968349,0.4130732735898788,0.521244069583553,0.35438677078548464,0.1928020565552699,0.35373417730948353,0.2886056971514243,0.4715142428785607,13.76395700720025,36.21782844597198,16.912424669829466,44.50255801997045,0.0,0.0,18.63716998852134,36.46155623142899
03_rank8_a16_lr5e5,0.7586,0.28999144568006846,0.33105218135158254,0.4137058513442277,0.5167105956773853,0.34550604807839536,0.18380462724935734,0.3424520772406517,0.29760119940029983,0.4715142428785607,13.993530209746426,36.36378811056779,17.194512116938068,44.68190556014504,0.0,0.0,18.77282688093499,36.37507422583225
04_rank32_a32_lr5e5,0.7292,0.2891360136869119,0.33532934131736525,0.41412756984712706,0.5200843437005799,0.3449701423977951,0.19023136246786632,0.3367013908863517,0.2908545727136432,0.47301349325337333,13.32568089324846,36.02282635500946,16.361071932299012,44.2501275753373,0.05605381165919283,0.05605381165919283,18.67891057080246,36.12444280653584
05_r16_alpha32_lr5e5,0.7323,0.2994011976047904,0.33361847733105215,0.4130732735898788,0.5190300474433316,0.35714285714285715,0.19665809768637532,0.3555125811399826,0.29685157421289354,0.46701649175412296,14.598768652822708,37.873456685535025,17.925375048083087,46.52408455154278,0.05605381165919283,0.05605381165919283,18.77282688093499,38.068000672246654
06_lr1e4_r16_a16,0.7184,0.29597946963216426,0.33105218135158254,0.411070110701107,0.5207169214549289,0.3549992344204563,0.19023136246786632,0.34733281230911506,0.2841079460269865,0.46551724137931033,14.014400500886987,37.57962398015711,17.207334273624824,46.16303841541808,0.05605381165919283,0.05605381165919283,18.80413231764583,37.69906094942537
07_lr2e5_r16_a16,0.7912,0.29426860564585117,0.32763045337895635,0.41560358460727465,0.522509225092251,0.3379268105956209,0.16709511568123395,0.32463255972324384,0.29610194902548725,0.47226386806596704,11.322132943754566,33.83807391933327,13.899217848442108,41.565618972813276,0.05605381165919283,0.05605381165919283,18.61629969738078,33.95862223270098
08_attention_only_r16_a16_lr5e5,0.8094,0.31565440547476475,0.35243798118049613,0.4157090142329995,0.5217712177121772,0.3448170264890522,0.18766066838046272,0.3673805917101876,0.2893553223388306,0.4767616191904048,18.136283001147866,43.37517960476381,22.28490832157969,53.29713375464183,0.0,0.0,19.628508817698005,43.397808641902465
09_batch2_accum4_r16_a16_lr5e5,0.7563,0.29597946963216426,0.3378956372968349,0.4136004217185029,0.5209277807063785,0.35140101056499773,0.18637532133676094,0.340221777957301,0.2871064467766117,0.46926536731634183,13.388291766670145,35.3128443275733,16.450827029106296,43.3905612503058,0.0,0.0,18.62673484295106,35.431132341766855
10_r16_a32_lr1e4,0.6918,0.3028229255774166,0.32934131736526945,0.41012124406958356,0.515656299420137,0.3448170264890522,0.20565552699228792,0.34795284436431645,0.2698650674662669,0.4617691154422789,14.160492538870917,37.75612784500817,17.38684446723939,46.37991705843228,0.05605381165919283,0.05605381165919283,18.77282688093499,38.08192856860334
titan_aya_25k,,0.2643284858853721,0.32506415739948674,0.4048497627833421,0.4942540853979968,0.3341754708314194,0.17609254498714652,0.32507560661819124,0.2653673163418291,0.4587706146926537,4.633204633204633,25.867828563515147,5.667393255545583,31.759379551758638,0.11210762331838565,0.11210762331838565,18.61629969738078,25.922669866068382
titan_aya_225k,,0.30025662959794697,0.34473909324208724,0.39768054823405374,0.4792830785450712,0.2719338539274231,0.20051413881748073,0.36134935010431024,0.25337331334332835,0.43928035982008995,10.883856829802776,35.04710724582597,13.373509424285166,43.0640375351648,0.0,0.0,18.64760513409162,35.17783479678552
1 model training_eval_loss arc_acc arc_acc_norm hellaswag_acc hellaswag_acc_norm m_mmlu_acc truthfulqa_mc1_acc truthfulqa_mc2_acc sklegal_acc sklegal_acc_norm skquad_exact skquad_f1 skquad_HasAns_exact skquad_HasAns_f1 skquad_NoAns_exact skquad_NoAns_f1 skquad_best_exact skquad_best_f1
2 alpaca_qlora 0.32591958939264326 0.3473053892215569 0.4133895624670532 0.5105956773853453 0.2928341754708314 0.2390745501285347 0.39419828418377467 0.2841079460269865 0.46926536731634183 1.9722425127830534 27.7993811825338 2.410565457109886 34.145591726147124 0.05605381165919283 0.05605381165919283 18.61629969738078 28.301192071377013
3 01_baseline_r16_a16_lr5e5_adamw 0.7567 0.30196749358426006 0.34046193327630453 0.41560358460727465 0.5209277807063785 0.3549992344204563 0.17994858611825193 0.34391089322085056 0.28785607196401797 0.46851574212893554 14.160492538870917 36.6797346829585 17.38684446723939 45.05730189342111 0.05605381165919283 0.05605381165919283 18.689345716372742 36.915470604294036
4 02_optimizer_adamw8bit_r16_a16_lr5e5 0.7521 0.29597946963216426 0.3378956372968349 0.4130732735898788 0.521244069583553 0.35438677078548464 0.1928020565552699 0.35373417730948353 0.2886056971514243 0.4715142428785607 13.76395700720025 36.21782844597198 16.912424669829466 44.50255801997045 0.0 0.0 18.63716998852134 36.46155623142899
5 03_rank8_a16_lr5e5 0.7586 0.28999144568006846 0.33105218135158254 0.4137058513442277 0.5167105956773853 0.34550604807839536 0.18380462724935734 0.3424520772406517 0.29760119940029983 0.4715142428785607 13.993530209746426 36.36378811056779 17.194512116938068 44.68190556014504 0.0 0.0 18.77282688093499 36.37507422583225
6 04_rank32_a32_lr5e5 0.7292 0.2891360136869119 0.33532934131736525 0.41412756984712706 0.5200843437005799 0.3449701423977951 0.19023136246786632 0.3367013908863517 0.2908545727136432 0.47301349325337333 13.32568089324846 36.02282635500946 16.361071932299012 44.2501275753373 0.05605381165919283 0.05605381165919283 18.67891057080246 36.12444280653584
7 05_r16_alpha32_lr5e5 0.7323 0.2994011976047904 0.33361847733105215 0.4130732735898788 0.5190300474433316 0.35714285714285715 0.19665809768637532 0.3555125811399826 0.29685157421289354 0.46701649175412296 14.598768652822708 37.873456685535025 17.925375048083087 46.52408455154278 0.05605381165919283 0.05605381165919283 18.77282688093499 38.068000672246654
8 06_lr1e4_r16_a16 0.7184 0.29597946963216426 0.33105218135158254 0.411070110701107 0.5207169214549289 0.3549992344204563 0.19023136246786632 0.34733281230911506 0.2841079460269865 0.46551724137931033 14.014400500886987 37.57962398015711 17.207334273624824 46.16303841541808 0.05605381165919283 0.05605381165919283 18.80413231764583 37.69906094942537
9 07_lr2e5_r16_a16 0.7912 0.29426860564585117 0.32763045337895635 0.41560358460727465 0.522509225092251 0.3379268105956209 0.16709511568123395 0.32463255972324384 0.29610194902548725 0.47226386806596704 11.322132943754566 33.83807391933327 13.899217848442108 41.565618972813276 0.05605381165919283 0.05605381165919283 18.61629969738078 33.95862223270098
10 08_attention_only_r16_a16_lr5e5 0.8094 0.31565440547476475 0.35243798118049613 0.4157090142329995 0.5217712177121772 0.3448170264890522 0.18766066838046272 0.3673805917101876 0.2893553223388306 0.4767616191904048 18.136283001147866 43.37517960476381 22.28490832157969 53.29713375464183 0.0 0.0 19.628508817698005 43.397808641902465
11 09_batch2_accum4_r16_a16_lr5e5 0.7563 0.29597946963216426 0.3378956372968349 0.4136004217185029 0.5209277807063785 0.35140101056499773 0.18637532133676094 0.340221777957301 0.2871064467766117 0.46926536731634183 13.388291766670145 35.3128443275733 16.450827029106296 43.3905612503058 0.0 0.0 18.62673484295106 35.431132341766855
12 10_r16_a32_lr1e4 0.6918 0.3028229255774166 0.32934131736526945 0.41012124406958356 0.515656299420137 0.3448170264890522 0.20565552699228792 0.34795284436431645 0.2698650674662669 0.4617691154422789 14.160492538870917 37.75612784500817 17.38684446723939 46.37991705843228 0.05605381165919283 0.05605381165919283 18.77282688093499 38.08192856860334
13 titan_aya_25k 0.2643284858853721 0.32506415739948674 0.4048497627833421 0.4942540853979968 0.3341754708314194 0.17609254498714652 0.32507560661819124 0.2653673163418291 0.4587706146926537 4.633204633204633 25.867828563515147 5.667393255545583 31.759379551758638 0.11210762331838565 0.11210762331838565 18.61629969738078 25.922669866068382
14 titan_aya_225k 0.30025662959794697 0.34473909324208724 0.39768054823405374 0.4792830785450712 0.2719338539274231 0.20051413881748073 0.36134935010431024 0.25337331334332835 0.43928035982008995 10.883856829802776 35.04710724582597 13.373509424285166 43.0640375351648 0.0 0.0 18.64760513409162 35.17783479678552

View File

Before

Width:  |  Height:  |  Size: 197 KiB

After

Width:  |  Height:  |  Size: 197 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long