LoRA fine-tune svaki dan u 3 ujutro: kako AI uči iz vlastitih razgovora
U svijetu gdje većina AI sustava miruje nakon inicijalnog treninga, mi smo odlučili raditi suprotno. Svako jutro u tri sata, naš Qwen 7B model prolazi kroz LoRA fine-tuning sesiju koristeći dnevne konverzacijske podatke. Ovo nije znanstvena fantastika, već rutina koja traje mjesecima. Ideja je banalna: ako model svakodnevno komunicira s korisnicima, zašto ne bi učio iz tih interakcija u stvarnom vremenu? LoRA, ili Low-Rank Adaptation, omogućava nam da fino podesimo model bez potrebe za potpunim retrainingom, koristeći samo mali broj dodatnih parametara. U našem slučaju, rank 16 i alpha 32 pokazali su se kao optimalni balans između brzine konvergencije i očuvanja postojećeg znanja.
Proces počinje u 02:55 kada cron job pokreće skriptu koja prikuplja sve konverzacije iz protekla 24 sata. Filtriramo samo one gdje je model dao odgovor, a korisnik ga je ocijenio ili ga je naš interni evaluator označio kao relevantan. Ovo nije masovno prikupljanje podataka – prosječno dnevno dobijemo između 200 i 500 validnih parova pitanje-odgovor. Dovoljno za jednu LoRA iteraciju koja traje otprilike 45 minuta na jednom A100 GPU-u. Ključni dio je kategorizacija. Svaki par se automatski tagira prema domeni, tonu, i vrsti zahtjeva. Za potrebe fine-tuninga, najzanimljivija kategorija je "budget" – sve što se tiče financijskih pitanja, proračuna, i troškovnih analiza.
LoRA tier 0 za kategoriju "budget" je naša najuspješnija eksperimentalna postavka. Nakon tri mjeseca svakodnevnog treniranja, točnost modela na test setu od 5000 ručno označenih primjera dosegla je 92.7%. To je za 14 postotnih bodova više od osnovnog Qwen 7B modela bez adaptacije. Kako to funkcionira tehnički? LoRA uvodi dvije male matrice A i B koje se množe da bi se dobila promjena u težinskim matricama originalnog modela. Rank 16 znači da A ima dimenzije (d × 16), a B (16 × k), gdje su d i k dimenzije originalne matrice. Alpha 32 je skalirajući faktor koji kontrolira koliko ova promjena utječe na izlaz. U praksi, to znači da dnevno treniranje modificira samo 0.1% ukupnih parametara modela, ali u specifičnim domenama efekt je dramatičan.
Auto-eval prije promote-a je apsolutni minimum koji smo morali uvesti nakon dva gotovo katastrofalna incidenta. Evaluacija se pokreće automatski nakon svakog fine-tuninga, koristeći set od 200 benchmark pitanja za svaku kategoriju. Ako model padne ispod 90% točnosti na bilo kojoj kategoriji, LoRA se ne promovira u produkciju. Umjesto toga, dobivamo alert i prethodna verzija ostaje aktivna. Ovo zvuči jednostavno, ali implementacija je zahtijevala izgradnju vlastitog evaluacijskog frameworka koji može usporediti izlaze prije i poslije treniranja u stvarnom vremenu. Koristimo kombinaciju BLEU skora za fluentnost, specifične regex evaluatore za točnost brojki, i LLM-as-a-judge metodu za semantičku konzistentnost.
Ovaj pristup razvijamo na rinet.one — za detalje slobodno se javi.
Što se desi ako preskočiš eval? Imamo dva dokumentirana slučaja koja su nas skupo koštala. Prvi put, model je nakon tjedan dana kontinuiranog fine-tuninga počeo generirati odgovore koji su bili statistički točni, ali potpuno besmisleni u kontekstu. Na pitanje "Koji je budžet za infrastrukturni projekt?" odgovorio je s "42.7 milijuna kuna, ali samo ako se koristi u utorak." Drift je bio suptilan – model je naučio da se određeni brojevi pojavljuju često s danima u tjednu, pa je stvorio lažnu korelaciju. Bez evaluacije, nismo primijetili dok korisnici nisu počeli prijavljivati čudne odgovore. Drugi incident je bio ozbiljniji: model je počeo davati previše optimistične procjene, jer je tijekom treninga favorizirao odgovore koji su dobivali pozitivne reakcije, čak i kad su bili netočni.
Drift je podmukao neprijatelj svakog kontinuiranog učenja. Ne dolazi kao eksplozija, već kao polagana erozija. U prvih nekoliko dana, promjene su gotovo neprimjetne – model postaje malo brži, malo precizniji, malo samouvjereniji. Onda, oko desetog dana bez evaluacije, počinješ primjećivati da odgovori postaju šablonski. Model ponavlja fraze koje su se pokazale uspješnima, čak i kad nisu relevantne. Do dvadesetog dana, drift je već ozbiljan – točnost pada na ispod 70%, ali korisnici to ne prijavljuju jer odgovori i dalje zvuče uvjerljivo. To je najopasniji dio: model koji griješi sa samopouzdanjem. Zato smo uveli pravilo da se svaki LoRA fine-tune mora evaluirati prije promote-a, bez iznimke.
Naš auto-eval sustav koristi tri sloja provjere. Prvi sloj je brza evaluacija na 50 benchmark pitanja koja se pokreće odmah nakon treniranja. Ako model prođe, ide na drugi sloj – 200 pitanja specifičnih za kategoriju "budget". Ovdje mjerimo ne samo točnost, već i konzistentnost. Model mora dati taj odgovor na isto pitanje u tri uzastopna pokretanja. Treći sloj je najzahtjevniji: uspoređujemo vektorske embeddinge novih odgovora s embeddingima iz prošlih tjedana. Ako se novi embedding značajno razlikuje od povijesnog prosjeka, to je crvena zastava. Ovaj sustav nas je spriječio od najmanje pet potencijalno katastrofalnih deployeva u zadnjih šest mjeseci.
LoRA fine-tuning svako jutro u tri sata nije luksuz, već nužnost za sustav koji mora odgovarati na pitanja iz stvarnog svijeta. Svijet se mijenja, proračuni se mijenjaju, propisi se mijenjaju – model koji ne uči svakodnevno brzo postaje zastario. Ali bez strogog evaluacijskog procesa, to učenje je opasnije od neznanja. Zato smo izgradili sustav koji ne samo da trenira, već i provjerava svaki korak. Rank 16, alpha 32, 92.7% točnosti, i noćni cron job koji ne spava – to je cijena održavanja AI sustava koji stvarno funkcionira u produkciji. Iako se svaki dan budi u tri ujutro, mi smo ti koji ne spavamo mirno dok evaluacija ne pokaže zeleno svjetlo.
Ako te zanima ovakva arhitektura ili gradiš nešto slično za svoju instituciju — javi se preko rinet.one.
Zanima vas ovakva AI tehnologija?
RiNET gradi sovereign AI rjesenja za javni sektor i poduzeca - od civic intelligence do automatizacije nabave.
Kontaktirajte nas →
Komentari