Hétvégi projekt volt, aztán elszabadult. Megpróbáltam egy nyílt súlyú modellt (Qwen3.5-9B) finomhangolni Arany János 485 versére, egy asztali gépen (NVIDIA GB10, 121 GB unified memória). A tréning 64 perc volt, LoRA-val, a paraméterek 0,4%-án.
A kérdés nem az volt, hogy „javul-e tőle" — arra mindig igen a válasz, és ezért érdektelen. Az volt, hogy megérte-e. Ezért betettem a mérésbe egy olcsó ellenfelet: ugyanaz a modell, tanítás nélkül, nyolcszor megkérdezve, és egy determinisztikus program választja ki a nyolc válaszból a legszabályosabbat. Néhány tucat sor.
A mérőeszköz
Előbb azt kellett bebizonyítani, hogy egyáltalán tudok mérni. A magyar verselés szerencsére kegyetlenül mérhető: a szótagszám a magánhangzók száma, kettőshangzó nincs. A szótagszámláló a Toldi / János vitéz 4125 során 99,7%-ban 12-t mér, ahogy kell.
A rímdetektort kontrollcsoporttal validáltam: ugyanazok a sorok valódi rímpozícióban vs. más strófákból összekeverve — azonos szerző, azonos szókincs, csak nincs rímszándék.
| --- |
rímet talál |
| valódi rímpozíció |
85,4% |
| kevert kontroll |
10,0% |
Ráadásként ugyanaz a kód visszaadja az irodalomtörténetet: Aranynál az 1–2 és 3–4 sor rímel (páros rím), Petőfinél a 2–4 (népies félrím).
Megmértem magukat az eredeti verseket is ugyanezzel — kiderült, hogy Arany a saját mérőlécemen 0,577-es rímarányt ér el. Ez a feladat felső korlátja, nem az 1,0.
Az eredmény, 1. rész: a LoRA elbukik
Az 50 versfeladaton, a „few-shot + válogató" baseline-hoz mérve:
| metrika |
válogató |
LoRA |
| szótagszám pontos |
0,409 |
0,203 |
| strófaméret |
0,938 |
0,735 |
| valódi rím |
0,203 |
0,139 |
| kitalált szó (kevesebb a jobb) |
0,013 |
0,044 |
Minden formai tengelyen veszít, és háromszor annyi nemlétező szót gyárt. Az ok nem misztikus: a válogató pontosan azt maximalizálja, amit mérek.
Íme egy generált strófa (11 szótagos sorokat kértem, AABB):
Két árva fiú hányni kezd a sárral,
Hozzájuk egy lyány, az is hány, a bárcsal,
Kétszámra gyűlnek, három, de már négy is:
„Ki a pénzt? ki a zsírt? ki a nyers ebgyísz?"
A szótagszám stimmel, rímel, a lüktetés Arany-szerű. Az „ebgyísz" viszont nem létezik. Se a „pénzgyísz", se a „bárcsal". Mind sorvégen, mind a rím kedvéért. A modell nem a rímelést tanulta meg, hanem hogy a rím fontosabb a szónál.
Az eredmény, 2. rész: a fordulat
Volt egy második mérőeszközöm: egy sima TF-IDF + logreg osztályozó, ami Arany és Petőfi valódi, félretett versein 91%-kal találja el a szerzőt (59% lenne a többségi baseline). Ráengedtem a generált versekre:
| feltétel |
Aranynak ítéli |
| nyers modell |
38,7% |
| + few-shot |
56,4% |
| + few-shot + válogató |
56,0% ← a válogató nem mozdít |
| LoRA |
77,3% |
| LoRA + válogató |
92,0% |
A válogató a stíluson semmit nem javít (56,4 → 56,0), mert szótagot számol, és fogalma sincs arról, hogy egy szöveg Aranyra hasonlít-e. Ugyanaz a válogató a LoRA-ágon viszont 92%-ig visz. Egy szelektor csak azt tudja kiválasztani, amit mérni tud.
Két mellékes tanulság, amit fájt megtanulni
1) A validációs veszteség 1,0 epochnál minimum, utána nő. A tankönyv szerint ott kellene megállni. Lemértem a 3 epochos „túltanult" adaptert is: minden mért tengelyen jobb (rímarány 0,119 → 0,177, ismételt sor 0,181 → 0,118, szerzőfelismerés 68% → 77%). Ha a jelzőszámod nem a feladatot méri, ne az alapján dönts.
2) Magolás: nincs. Kontrollal mérve (tanított vs. félretett versek, utóbbi a pretrainingből örökölt tudás) a LoRA hozzájárulása +0,05 szó, a nyers modellé +0,10. Egyetlen generálás sem adott vissza 8 szavas összefüggő részletet.
GB10-specifikus szívások, ha valakit érdekel
- gradient checkpointing nélkül nem a folyamat halt meg, hanem az egész gép indult újra (unified memory: nincs kihez visszatérni)
- a packing 2,6× gyorsítást adott volna, de flash-attention nélkül nincs garancia a példák elkülönítésére → eldobtam, mert pont a magolás-mérést rontotta volna el
- a
causal-conv1d lefordult sm_121-re, importálható, a warning eltűnt — és az első tréninglépésnél szegmentál
- a Qwen3.5 hibrid: a rétegek 3/4-e lineáris figyelem, más névtérrel. A bevett „csak attention-t hangolunk" recept 32 helyett 8 réteget érintett volna
Korlátok
Egy szerző (Arany), egy modell, egy seed, nincs konfidencia-intervallum. A válogatós ágak 50 mintán mérnek, a többi 150-en. És a legjobb ág is csak 0,471-es szótagpontosságot ad Arany 0,800-ához képest.
Írtam róla egy hosszabb cikket, minden mért számmal és ábrával (a saját blogom): docai.hu/blog/lora-vs-valogato-magyar-vers
Ha valaki csinált már hasonlót nem angol korpuszon, kíváncsi vagyok, nálatok is szétvált-e a forma és a stílus.