Go to file
2026-08-28 01:49:13 +02:00
configs update 2026-08-19 01:28:10 +02:00
evaluation/lmeval_custom_tasks update 2026-08-19 01:28:10 +02:00
plots update 2026-08-19 01:28:10 +02:00
results update 2026-08-19 01:28:10 +02:00
scripts update 2026-08-19 01:28:10 +02:00
strojovy_preklad update 2026-08-20 22:59:57 +02:00
translated_dataset update_translated_dataset 2026-08-28 00:14:37 +02:00
README.md update_README 2026-08-28 01:49:13 +02:00

# 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

Repozitár s kódmi, konfiguráciami a výsledkami:

  • https://git.kemt.fei.tuke.sk/js886io/Diplomovka

Hardvér

Experimenty boli realizované na serveri Titan s GPU:

  • NVIDIA TITAN RTX
  • 24 GB VRAM

Použitý dataset v prvom experimente

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:

### Inštrukcia:
...

### Vstup:
...

### Odpoveď:
...

Metóda dotrénovania v prvom experimente

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:

q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj

Vyhodnotenie pomocou vlastného evaluačného skriptu

Model bol najskôr 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

Model bol následne vyhodnotený pomocou frameworku lm-evaluation-harness na slovenských benchmarkových úlohách.

Hodnotený bol PEFT LoRA adaptér pripojený k základnému modelu:

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 neboli dostupné v štandardnej inštalácii lm-evaluation-harness, preto boli doplnené ako custom tasky.

Výsledky lm-evaluation-harness

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:

{
  "instruction_en": "...",
  "input_en": "...",
  "output_en": "...",
  "instruction_sk": "...",
  "input_sk": "...",
  "output_sk": "..."
}

Experiment bol úspešne spustený a vznikla preložená vzorka datasetu s 1000 príkladmi. Táto vzorka je uložená v repozitári v priečinku:

translated_datasets/

Súbor:

alpaca_translated_en_sk_1000.jsonl

Experiment s datasetom Aya Collection

Okrem pôvodného tréningu na datasete saillab/alpaca-slovak-cleaned bol pripravený ďalší experiment s väčším slovenským inštrukčným datasetom:

  • CohereLabs/aya_collection_language_split

Použitá bola iba slovenská časť datasetu:

  • subset: slovak
  • language: slk

Slovenská časť datasetu obsahuje približne 4,15 milióna príkladov. Dataset obsahuje najmä polia:

  • inputs
  • targets
  • language

Pri tréningu boli polia mapované nasledovne:

Pôvodné pole Použitie pri tréningu
inputs prompt / inštrukcia
targets odpoveď
language jazyk príkladu

Cieľom experimentu je dotrénovať slovenský Mistral 7B model na výrazne väčšom množstve slovenských inštrukčných dát.

Tréning na Aya Slovak datasete

Pre experiment s datasetom Aya bol použitý rovnaký základný model:

  • slovak-nlp/mistral-sk-7b

Na rozdiel od predchádzajúceho experimentu s datasetom Alpaca bol tento tréning nastavený ako LoRA fine-tuning bez 4-bit kvantizácie, teda nie ako QLoRA.

Použitá konfigurácia:

Parameter Hodnota
Dataset CohereLabs/aya_collection_language_split
Subset slovak
Jazyk slk
Počet príkladov približne 4 148 000
Fine-tuning metóda LoRA
QLoRA / 4-bit quantization nie
Unsloth áno
GPU 1
Batch size per device 1
Gradient accumulation 4
Effective batch size 4
Max sequence length 1024
Max steps 1 037 000
LoRA rank 16
LoRA alpha 32
LoRA dropout 0.05
Trainable parameters 41 943 040
Compute type fp16

Použité LoRA cieľové moduly:

q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj

Keďže slovenská časť datasetu Aya je veľmi veľká, pri klasickom načítaní datasetu dochádzalo k zaplneniu diskového priestoru počas predspracovania dát. Z tohto dôvodu bol tréning nastavený v režime streamingu:

streaming: true
buffer_size: 16384

Streaming umožňuje čítať dáta postupne počas tréningu bez potreby uložiť celý predspracovaný dataset do cache na disk. Tréning je preto riadený cez počet krokov:

max_steps: 1037000

Táto hodnota približne zodpovedá jednému prechodu cez celý slovenský Aya dataset pri efektívnej veľkosti batchu 4.

Tento experiment je aktuálne spustený. Výsledný adaptér a finálne metriky budú doplnené po dokončení tréningu.