Tréning vlastného modelu s malým datasetom: Postupy pre slovenské dáta

Tréning vlastného modelu s malým datasetom: Postupy pre slovenské dáta
Ilustračné foto: vytvorené umelou inteligenciou (AZOIA)

Máte 3 000 recenzií slovenských e-shopov, 500 faktúr v PDF alebo 200 nahrávok z call centra.

Všade sa píše o „veľkých jazykových modeloch“, ale vy tušíte, že s malým množstvom vlastných dát môžete získať konkurenčnú výhodu. Otázka neznie, či to ide. Otázka znie: ako na to, aby ste nevyhodili peniaze a čas.

Prečo malý dataset nie je hendikep, ale výhoda

Väčšina firiem rieši problém, že model „nechápe“ ich špecifickú doménu – slovenskú legislatívu, názvoslovie, formát faktúr či dialekt. Generický model (napríklad GPT-4o alebo Llama 3.1) síce ovláda slovenčinu, ale nepozná vaše interné kódy produktov. Dolaďovanie (fine-tuning) na úzko zameranom datasete s 1 000 až 5 000 príkladmi dokáže výrazne zlepšiť presnosť v doméne, často bez straty všeobecných schopností. Kľúčom je kvalita a správna štruktúra dát, nie ich objem.

Prvý krok: Vyčistite si dáta a vytvorte šablóny

Slovenské dáta majú špecifikum: diakritika, skloňovanie a tvrdé Y. Model musí vedieť, že „cena s DPH“ a „cena bez DPH“ nie je to isté. Začnite s formátom inštrukcia-vstup-výstup. Napríklad:

  • Inštrukcia: „Rozpoznaj číslo faktúry z textu.“
  • Vstup: „Faktúra č. 2026/045, dodávateľ: Firma s.r.o., IČO: 45 123 456...“
  • Výstup: „2026/045“

Ak máte dáta v neštruktúrovanej podobe (PDF, skeny), najprv ich preveďte na text. Na to použite OCR (optické rozpoznávanie znakov), no pozor – chyby v OCR (napríklad „0“ namiesto „O“) znižujú kvalitu tréningu. Odporúčam manuálnu kontrolu aspoň 10 % vzoriek. Tento krok je nepríjemný, ale rozhoduje o výsledku.

Druhý krok: Vyberte správnu metódu – LoRA, nie plný tréning

Trénovať celý model s miliardami parametrov na 2 000 vetách je recept na katastrofu – model sa „preučí“ a zabudne všeobecnú slovenčinu. Namiesto toho použite metódu LoRA (Low-Rank Adaptation). Táto technika, opísaná v práci Hu a kol., 2021, zamrazí pôvodné váhy modelu a trénuje len malú maticu adaptérov. Výsledok? Náklady na tréning klesnú o 90 % a model si zachová všeobecné schopnosti. V praxi to znamená, že s jednou grafickou kartou s 24 GB VRAM (napríklad RTX 4090) zvládnete dolaďovanie modelu veľkosti 7B parametrov (napríklad Mistral 7B alebo Llama 3.1 8B).

Technický postup krok za krokom

  1. Príprava dát: Uložte dáta do formátu JSONL (jeden riadok = jeden príklad). Každý riadok obsahuje polia instruction, input, output.
  2. Výber modelu: Začnite s menším modelom (7B) a až potom skúšajte väčší (13B), ak výsledky nebudú postačujúce. Pre slovenčinu je dobrá voľba slovakbert alebo Mistral-7B-Instruct, ktorý má dobrú znalosť jazykov východnej Európy.
  3. Tréning: Použite knižnicu transformers a peft od Hugging Face. Nastavte parametre: learning_rate na 2e-4, batch_size na 4–8 a počet epoch na 3–5. Pri malom datasete je 10 epoch už preučenie.
  4. Validácia: Rozdeľte dáta na tréningovú (80 %) a validačnú (20 %) časť. Po každej epoche sledujte stratovú funkciu na validačnej sade. Ak sa zvyšuje, tréning zastavte – toto je prvý signál preučenia.

Konkrétny príklad: Rozpoznávanie slovenských adries

Predstavme si, že máte 1 500 adries z e-shopu a chcete model, ktorý z textu „Doručte na Hlavná 12, 811 01 Bratislava“ extrahuje ulicu, číslo domu a PSČ. S modelom bez dolaďovania dosiahnete presnosť okolo 60 %. Po dolaďovaní s LoRA na 1 500 príkladoch môžete očakávať presnosť 90–95 % – samozrejme, závisí to od konzistentnosti vašich dát. Dôležité je, že model sa naučí aj skratky („Hl.“, „č.“) a rôzne formáty PSČ („811 01“ vs. „81101“).

Pasca, na ktorú treba upozorniť: Nerovnováha tried

Ak máte 1 400 adries z Bratislavy a 100 z Košíc, model sa naučí predikovať „Bratislava“ takmer vždy. Riešenie? Použite augmentáciu dát – vytvorte syntetické variácie existujúcich vzoriek (napríklad zmeňte poradie slov, pridajte synonymá). Ďalšou možnosťou je váhovanie straty (loss weighting), kde vzácnejšie triedy dostanú väčšiu váhu. Bez tohto kroku bude váš model skvelý na demonštráciu, ale nepoužiteľný v praxi.

Náklady a časový rámec

Tréning na jednej RTX 4090 s modelom 7B a datasetom 2 000 príkladov trvá 30 – 60 minút. Náklady na elektrickú energiu sú zanedbateľné (cca 2 – 3 €). Ak nemáte GPU, cloudové riešenia ako RunPod alebo Lambda Labs ponúkajú RTX 4090 za približne 0,50 € za hodinu. Celkové náklady na experiment (vrátane času na prípravu dát) sa pohybujú v stovkách eur, nie v tisíckach.

Ceny cloudových služieb sa môžu meniť, preto si ich pred začatím overte u poskytovateľov.

Čo si vybrať: Dolaďovanie vs. RAG

Ak máte dáta, ktoré sa menia (napríklad cenník), dolaďovanie nie je správna cesta. Vtedy siahnite po RAG (Retrieval-Augmented Generation) – systéme, ktorý vyhľadá relevantné časti dokumentov a vloží ich do kontextu modelu. Dolaďovanie je vhodné na stabilné formáty a štýly (faktúry, recenzie, právne texty). Pre slovenské dáta kombinácia oboch prístupov často prináša najlepšie výsledky: model dolaďujete na štýl, RAG dodáva aktuálne údaje.

Verdikt: Malý dataset, veľký efekt – ale s rozumom

Dolaďovanie vlastného modelu na malom slovenskom datasete je dnes dostupné aj pre malú firmu. Nie je to zázrak – vyžaduje to čisté dáta, správnu metódu (LoRA) a trochu experimentovania. Výsledky v podobe presnosti 90 %+ v špecifickej doméne však ospravedlnia investíciu. Začnite s menším modelom, kontrolujte preučenie a pamätajte: kvalita dát je dôležitejšia ako ich kvantita. Ak máte 500 naozaj dobrých príkladov, dokážete viac ako s 5 000 chaotickými.

Technický záver pre ai.ezin.sk: LoRA a čisté dáta – recept na úspech s malým datasetom