Vsake toliko kdo vpraša, zakaj bi se človek ukvarjal z lokalnimi jezikovnimi modeli, če pa je mogoče do odličnega AI-ja priti kar prek spletnega vmesnika ali namizne aplikacije.
Odgovor ni, da je lokalno vedno boljše. Ker ni.
Mene pri vsem skupaj žene predvsem radovednost. Rad vem, kaj se dogaja v ozadju, kako stvari delujejo in predvsem, koliko lahko iz določene strojne opreme dejansko iztisnem. Če se pri tem kaj pokvari, je to pač del zgodbe. Včasih celo najbolj zanimiv del.
Računalnik kot ‘laboratorij’
Doma eksperimentiram s sistemom, ki sem ga poimenoval Beast AI. Ime se mi je zdelo kar primerno glede na to, kaj je v njem in koliko sem uspel sestaviti v okviru svojega proračuna.
Pod pokrovom se skriva:
- Procesor: AMD Ryzen 9 5950X (16 jeder, 32 niti)
- Delovni pomnilnik: 128 GB DDR4, deklarirano 3200 MHz
- Grafični kartici: 2 × Sapphire Pulse Radeon RX 7900 XTX, vsaka s 24 GB VRAM
- Matična plošča: Gigabyte X570 AORUS PRO
- Shramba: 2 × NVMe SSD
- Napajalnik: 2000 W
- Hlajenje procesorja: Arctic Liquid Freezer III Pro
Grafični kartici imata skupaj 48 GB fizičnega grafičnega pomnilnika, kar pa še ne pomeni, da ga lahko vsak model ali program uporablja kot eno celoto. Ravno takšne stvari so del eksperimentiranja.
To ni opis idealne konfiguracije za vsakogar. Je moj domači poligon, na katerem preverjam, kako se modeli obnašajo, kje so ozka grla in kaj se zgodi, ko teorija trči ob gonilnike, pomnilnik in operacijski sistem.
Beast pa ni moj prvi takšen računalnik.
Pred njim je bil, pravzaprav je še vedno, Monster. Starejši, več kot šest let star sistem, danes precej manj zmogljiv, na katerem sem začel spoznavati svet lokalnih jezikovnih modelov. In tam se je pravzaprav vse začelo.
Danes na Beastu preizkušam tako Linux kot Windows, različne lokalne strežnike za modele, ROCm in načine, kako čim bolje izkoristiti obe grafični kartici.
Nekateri preizkusi so hitri in spodbudni. Pri drugih človek nekaj ur išče razlog, zakaj sistem zmrzne ravno takrat, ko bi moral končno delovati.
Ampak tudi to je del razvoja. Če znaš ugotoviti, zakaj nekaj ne deluje, si se pogosto naučil več kot pri preizkusu, ki je uspel v prvem poskusu.
Zakaj sploh lokalni AI?
Največja prednost zame je nadzor.
Sam odločam, kateri model bom uporabil, kako bo konfiguriran, koliko pomnilnika mu namenim in katere podatke mu dam na voljo. Spremljam lahko porabo sistemskih virov, merim hitrost izvajanja in poskušam ponoviti enak preizkus pod enakimi pogoji.
Všeč mi je tudi dejstvo, da lahko ustrezno pripravljen lokalni sistem deluje povsem brez internetne povezave.
Pa zasebnost? Tudi ta je pomembna. Podatkov mi ni treba pošiljati zunanjemu ponudniku, če jih obdelujem izključno lokalno. Seveda to še ne pomeni, da je takšen sistem avtomatično varen. Napačno nastavljene storitve, dnevniki in povezani programi lahko hitro pokvarijo sicer dobro idejo.
Potem so tukaj še stroški.
Začetna investicija v strojno opremo vsekakor ni zanemarljiva. Ko pa je računalnik enkrat sestavljen, lahko z brezplačnimi oziroma odprtokodnimi orodji in ustreznimi modeli eksperimentiram brez plačevanja vsake zahteve posebej.
Če gledam zgolj neposredno uporabo že obstoječega sistema, mi največji dodatni tekoči strošek predstavlja elektrika. Seveda je treba pri celotni ekonomiki upoštevati tudi obrabo opreme, vzdrževanje in prihodnje nadgradnje.
Ali se takšna investicija finančno splača? Odvisno od tega, kaj z računalnikom počneš. Če gre samo za občasna vprašanja AI-ju, skoraj zagotovo obstajajo precej bolj racionalne možnosti.
Če pa rad razvijaš, raziskuješ in uporabljaš modele za različne projekte, začne zgodba dobivati drugačen smisel.
Lokalno ali v oblaku? Zakaj ne oboje?
Kljub vsemu napisanemu redno uporabljam tudi plačljiva AI-orodja in modele.
Nekateri veliki modeli so preprosto zmogljivejši pri določenih nalogah. Prav tako ni vedno smiselno porabiti več ur za lokalno rešitev nečesa, kar lahko zunanji model opravi v nekaj minutah.
Zato trenutno prisegam na hibridni pristop.
Lokalno izvajam tisto, pri čemer mi največ pomenijo nadzor, prilagodljivost, zasebnost ali možnost eksperimentiranja. Zunanje modele uporabljam tam, kjer mi prinesejo boljši rezultat oziroma prihranijo čas.
Zame ni bistveno, ali model teče doma ali nekje v podatkovnem centru. Bistveno je, da izberem pravo orodje za pravo nalogo.
Od delujočega modela do uporabnega sistema
Med tem, da model odgovori na vprašanje, in tem, da imaš res uporaben sistem, je precejšnja razlika.
Model lahko deluje odlično pri enem preizkusu, nato pa odpove pri nekoliko zahtevnejši nalogi. Lahko je hiter, vendar porabi preveč pomnilnika. Lahko se dobro odreže na eni grafični kartici, na dveh pa zaradi programske podpore sploh ne doseže pričakovanega izboljšanja.
Prav zato me zanimajo dejanske meritve, ponovljivost in razumevanje omejitev.
Posebno zanimiva je tudi možnost prilagajanja obstoječih modelov lastnim potrebam, na primer s postopki fine-tuninga. To ni isto kot učenje velikega modela od začetka, je pa eno od področij, ki jih želim podrobneje raziskovati.
In to je tudi eden od razlogov za nastanek tega bloga.
Ne nameravam objavljati samo stvari, ki so uspele. Pisal bom tudi o napačnih odločitvah, nenavadnih napakah, neuspelih eksperimentih in rešitvah, do katerih sem se dokopal.
Kadar bom imel konkretne meritve, jih bom predstavil. Kadar bo nekaj samo moj vtis ali ugibanje, bom to tudi povedal.
Lokalni AI zame ni čarovnija in ni nujno najboljša rešitev za vsakogar. Je pa odlična delavnica za nekoga, ki rad razume svoja orodja in občasno preizkusi tudi meje svojih zmožnosti.
Kako se je vse skupaj začelo s precej skromnejšim Monsterjem, pa v enem od naslednjih zapisov.

