- Format GGUF je nadgradnja formata GGML, optimizirana za hitro in učinkovito nalaganje jezikovnih modelov na domačo strojno opremo.
- Omogoča kvantizacijo uteži, kar zmanjša porabo VRAM-a in CPU-ja, ne da bi pri tem izgubila preveč natančnosti v odgovorih.
- Združljiv je z različnimi arhitekturami in priljubljenimi orodji, kot so llama.cpp, Ollama in LM Studio.
Če ste se poglobili v svet lokalne umetne inteligence, ste verjetno že naleteli na datoteke, ki se končajo na .ggufTa oblika vam omogoča distribucijo in zagon jezikovnih modelov na domačih računalnikih z uporabo orodij, kot so llama.cpp, Ollama, LM Studio ali Jan.
Njegova priljubljenost izhaja iz dejstva, da združuje uteži, arhitekturo in različne metapodatke modela, potrebne za nalaganje v eno ali več datotek. Poleg tega podpira kvantizirane modele, ki Zavzamejo manj prostora in zahtevajo manj pomnilnika kot njihove originalne različice v FP16 ali FP32.
Zahvaljujoč temu lahko model, ki bi prvotno zahteval profesionalni grafični procesor, deluje na prenosniku ali standardnem namiznem računalniku. To ne pomeni, da je kateri koli model združljiv s katero koli napravo: izbrati morate pravo velikost, kvantizacijo in dolžino konteksta.
Tudi hitrost pogona, na katerem so shranjeni podatki, igra pomembno vlogo. Čeprav je GGUF zasnovan za spodbujanje učinkovitega nalaganja s tehnikami, kot je preslikava pomnilnika, lahko počasen disk še vedno vpliva na zagon. Če traja predolgo, je vredno preveriti, ali SSD deluje kot ozko grlo pri nalaganju modelov umetne inteligence.
Kaj je format GGUF in za kaj se uporablja?

GGUF je binarni format, razvit za shranjevanje modelov za sklepanje z GGML in mehanizmi, ki temeljijo na tem projektu. Njegovo ime izvira iz Univerzalna datoteka GGML in je bil ustvarjen kot naslednik prejšnjih formatov, kot so GGML, GGMF in GGJT.
Njegov glavni cilj je zagotoviti obliko raztegljivo, enostavno za distribucijo in hitro nalaganjeDatoteka GGUF lahko vsebuje tenzorje modela skupaj z informacijami o njegovi arhitekturi, besedišču, tokenizatorju, kontekstu in drugih parametrih, potrebnih za pravilno interpretacijo.
Njegove glavne značilnosti vključujejo:
- Shranjevanje uteži in metapodatkov modela.
- Združljivost z različnimi nivoji in metodami kvantizacije.
- Učinkovito nalaganje s preslikavo pomnilnika ali
mmap. - Možnost razširitve metapodatkov brez preoblikovanja celotne oblike.
- Preprosta porazdelitev modelov, pripravljenih za sklepanje.
- Združljivost s številnimi arhitekturami, ki jih podpira llama.cpp.
GGUF ni program, ki bi neposredno poganjal umetno inteligenco. Je vsebnik, kjer je shranjen modelZa njegovo uporabo potrebujete združljiv mehanizem, kot je llama.cpp, ali aplikacijo, zgrajeno na tem ekosistemu.
Razvoj od GGML do GGUF
Da bi razumeli nastanek GGUF-a, se moramo vrniti k GGML, knjižnici, ki jo je ustvaril Georgi Gerganov za učinkovito izvajanje izračunov strojnega učenja, zlasti na procesorjih in napravah z omejenimi viri.
Začetni formati, povezani s projektom, so se razvijali z nastankom novih arhitektur, kvantizacij in parametrov. Težava je bila v tem, da bi nekatere spremembe lahko povzročile nezdružljivosti in prisilile aplikacije k interpretaciji različnih struktur.
GGUF je uvedel jasnejšo strukturo parov ključ-vrednost za metapodatke. To omogoča dodajanje novih informacij, ne da bi nujno motilo delovanje aplikacij, ki jih ne potrebujejo. Rezultat je ... bolj prilagodljiva posoda, pripravljena na razvoj.
Druga prednost je, da se lahko informacije, potrebne za prepoznavanje in nalaganje modela, posredujejo skupaj z njegovimi utežmi. To zmanjšuje težave, ki jih povzročajo manjkajoče zunanje konfiguracije, napačni slovarji ali parametri, ki se ne ujemajo s prenesenim modelom.
Kljub temu združljivost ni zagotovljena za vedno. Če se pojavi nova arhitektura, mora uporabljeni mehanizem vključevati podporo zanjo. Zato novejša datoteka GGUF morda ne bo delovala v starejši različici llama.cpp, Ollama ali LM Studio.
Kako deluje kvantizacija modela GGUF?

Kvantizacija vključuje predstavitev uteži modela z uporabo manj bitov. Izvirni model lahko shrani velik del svojih parametrov v FP16 ali BF16, medtem ko kvantizirana različica uporablja 8, 6, 5, 4, 3 ali celo 2-bitne predstavitve za številne svoje tenzorje.
Zmanjšanje natančnosti zmanjša tako velikost datoteke kot tudi pomnilnik, potreben med sklepanjem. Prav tako lahko izboljša hitrost, če strojna oprema učinkovito obdela to vrsto kvantizacije. Po drugi strani pa Izgubi se del zvestobe modela.
GGUF ne prilagaja kvantizacije samodejno glede na vaš računalnik. Za isti model boste običajno našli različne datoteke in prenesti boste morali tisto, ki najbolj ustreza vašemu RAM-u ali VRAM-u.
To so nekatere najpogostejše možnosti:
- Q4_K_M: Običajno ponuja dobro ravnovesje med velikostjo, porabo pomnilnika in kakovostjo. Za začetek je to razumna izbira.
- Q5_K_M: Ohranja nekoliko večjo natančnost kot Q4_K_M, vendar ustvarja večje datoteke in povečuje porabo pomnilnika.
- V6_K: Zagotavlja visoko kakovost, ko ima oprema dovolj pomnilnika in ni treba toliko zmanjšati modela.
- V8_0: Ohranja kakovost, ki je zelo blizu natančnejšim različicam, čeprav je prihranek pomnilnika manjši.
- IQ4_XS: Prizadeva si zmanjšati velikost pod druge štiribitne alternative, hkrati pa ohraniti razumno kakovost.
- IQ3 in IQ2: Znatno zmanjšajo porabo, vendar je lahko izguba kakovosti bolj očitna.
Ni univerzalno najboljše kvantizacije. Rezultat je odvisen od arhitekture, velikosti modela, naloge in strojne opreme. Velik model, kvantiziran na tri bite, lahko pri Q8_0 preseže veliko manjšega, čeprav lahko povzroči tudi manj stabilne odzive kot štiri- ali petbitna kvantizacija istega modela.
Zato ni vedno pravilno zavreči dvo- ali tribitnih različic. Uporabne so lahko, kadar alternativa ni mogoče naložiti modela. Vendar pa je za delo, kjer je natančnost najpomembnejša, običajno bolje uporabiti dvo- ali tribitne različice. ostanite okoli ravni Q4_K_M, Q5_K_M ali višje.
Koliko pomnilnika potrebuje model GGUF?
Velikost datoteke zagotavlja začetno referenčno točko, vendar ne predstavlja vsega potrebnega pomnilnika. Med sklepanjem je treba rezervirati tudi prostor za predpomnilnik KV, kontekst, računske medpomnilnike in druge komponente mehanizma.
Na primer, datoteka GGUF velikosti 8 GB ne zagotavlja, da bo pravilno delovala na grafičnem procesorju z natanko 8 GB video pomnilnika (VRAM). Program bo potreboval dodaten pomnilnik, in če ga ne bo imel dovolj, bo moral del modela razdeliti med grafični procesor in RAM ali pa ga zagnati z uporabo procesorja.
Za izračun, ali bo model deloval na vašem računalniku, morate upoštevati:
- Velikost datoteke GGUF.
- Razpoložljivi RAM in VRAM.
- Dolžina konfiguriranega konteksta.
- Velikost in kvantizacija predpomnilnika KV.
- Plasti, ki jih bo obdelal grafični procesor.
- Aplikacije, ki ostanejo odprte hkrati.
Praviloma je priporočljivo pustiti nekaj prostora nad velikostjo datoteke. Če model ne ustreza v celoti grafičnemu procesorju, vam llama.cpp in druga orodja omogočajo prilagajanje velikosti datoteke. prenesi le del svojih plasti na grafično kartico in preostale obdelajte s pomočjo CPU-ja.
GGUF v primerjavi z GPTQ, AWQ in drugimi formati
GGUF ni edini način za distribucijo kvantiziranih modelov. Obstajajo tudi metode in formati, kot so GPTQ, AWQ, EXL2 in bitsandbytes, vsak z različnimi mehanizmi, pospeševalniki in primeri uporabe.
Ena glavnih prednosti GGUF-a je njegova sposobnost dela v CPU, GPU ali hibridne konfiguracijeZaradi tega je še posebej uporaben v domačih računalnikih, sistemih z malo VRAM-a, napravah ARM in sistemih, ki uporabljajo poenoten pomnilnik.
GPTQ, AWQ in EXL2 so običajno usmerjeni v izvajanje z uporabo specifičnih grafičnih procesorjev in specializiranih mehanizmov. Čeprav lahko v nekaterih sistemih ponudijo odlično zmogljivost, ne zagotavljajo vedno enake prilagodljivosti pri dodeljevanju virov med procesorjem, glavnim pomnilnikom in grafično kartico.
Izbira je odvisna od aplikacije, ki jo boste uporabljali. Če delate z llama.cpp, Ollama ali LM Studio, je GGUF običajno najbolj praktična možnost. Če imate zmogljivo grafično kartico NVIDIA in uporabljate specializiran mehanizem, lahko druga metoda v določenih konfiguracijah zagotovi boljše rezultate.
Priporočena orodja za uporabo datotek GGUF

Za začetek vam ni treba neposredno upravljati vseh parametrov datoteke llama.cpp. Obstajajo aplikacije, ki poenostavijo prenos, nalaganje in konfiguriranje modelov.
LM Studio
LM Studio Ponuja grafični vmesnik za iskanje razpoložljivih modelov v Hugging Face, prenos različnih kvantizacij in lokalno interakcijo z njimi. Prav tako lahko zažene strežnik s končnimi točkami, ki so združljive z OpenAI API-jem.
Aplikacija vam omogoča, da izberete, koliko konteksta želite uporabiti, koliko plasti želite poslati grafičnemu procesorju in druge parametre mehanizma. Če imate pretirano dolge odzivne čase, lahko uporabite različne prilagoditve za Izboljšajte delovanje, ko LM Studio deluje počasi.
Ollama
Ollama Zasnovan je za prenos, organiziranje in zagon modelov z uporabo preprostih ukazov. Uporablja komponente iz ekosistema llama.cpp in omogoča delo tako z njegovo knjižnico kot z datotekami GGUF iz drugih virov.
Datoteke modela vam omogočajo konfiguriranje osnovnega modela, sistemskega sporočila, predloge in parametrov, kot sta temperatura ali kontekst. Če želite uporabiti svojo datoteko, lahko sledite našemu vodniku za naložite model GGUF z uporabo datoteke Modelfile.
lama.cpp
lama.cpp Je referenčni mehanizem za delo z GGUF. Ponuja terminalska orodja, strežnik HTTP, združljiv z različnimi končnimi točkami OpenAI API, in številne možnosti za optimizacijo porabe procesorja, grafičnega procesorja in pomnilnika.
Uporablja lahko tehnologije pospeševanja, kot so CUDA, Metal, Vulkan, SYCL in HIP, odvisno od sistema in nameščene različice. Omogoča tudi zagon modela z porazdelitvijo njegovih plasti po različnih napravah.
Jan in GPT4All
Aplikacije, kot so Jan in GPT4All Omogočajo tudi prenos ali uvoz združljivih modelov in njihovo uporabo prek grafičnega vmesnika. To so zanimive alternative za tiste, ki iščejo preprosto izkušnjo, ne da bi pri tem žrtvovali lokalno izvajanje.
Metapodatki, tokenizatorji in deljeni modeli
Datoteka GGUF ne vsebuje le kvantiziranih uteži. Shranjuje lahko tudi informacije o arhitekturi, številu plasti, velikosti konteksta, besedišču, posebnih žetonih in predlogi pogovora.
Ti metapodatki omogočajo mehanizmu, da prepozna, kako interpretirati model. Vendar pa lahko napačna predloga ali zastarela različica programa še vedno povzroči nepričakovane odzive, ponovitve ali napake pri nalaganju datoteke.
Čeprav je GGUF zasnovan tako, da omogoča distribucijo v eni sami datoteki, je mogoče velike modele objaviti tudi v več delih. V tem primeru se prikažejo imena, ki označujejo številko fragmenta, na primer:
modelo-Q4_K_M-00001-of-00003.gguf
modelo-Q4_K_M-00002-of-00003.gguf
modelo-Q4_K_M-00003-of-00003.gguf
Vse fragmente morate prenesti, ohraniti njihova imena in jih shraniti v isto mapo. V nasprotnem primeru programska oprema ne bo mogla pravilno obnoviti modela.
GGUF, LoRA in prilagojeni modeli
Modele, uglašene z uporabo tehnik, kot je LoRA, je mogoče pretvoriti ali distribuirati za uporabo znotraj ekosistema GGUF. llama.cpp omogoča uporabo specifičnih adapterjev LoRA med sklepanjem, obstajajo pa tudi orodja za njihovo združevanje z osnovnim modelom pred kvantizacijo.
Vendar je pomembno razlikovati med več koncepti. LoRA in QLoRA sta metodi, povezani z učenjem ali uglaševanjem modelov., medtem ko je GGUF format, ki je primarno usmerjen na shranjevanje in izvajanje.
QLoRA omogoča natančno nastavitev modelov z uporabo kvantizirane predstavitve za zmanjšanje porabe pomnilnika med učenjem. Ko je ta postopek končan, je mogoče rezultat združiti, pretvoriti in kvantizirati, da se ustvari združljiva datoteka GGUF, če je arhitektura podprta.
Podobno povezava z ogrodji, kot je LangChain, ne prihaja neposredno iz GGUF-a. Integracija se izvaja prek mehanizmov in strežnikov, kot so llama.cpp, Ollama ali LM Studio, ki model izpostavijo prek API-ja ali združljive knjižnice.
Kako izbrati pravo datoteko GGUF
V repozitorijih, kot je Hugging Face, je pogosto mogoče najti veliko različic istega modela. Za pravilno izbiro najprej preverite, ali je arhitektura združljiva z različico aplikacije, ki jo boste uporabljali.
Nato preverite te elemente:
- Število parametrov: 14B model potrebuje precej več pomnilnika kot 7B ali 8B model.
- Kvantizacija: Q4_K_M je običajno dobro izhodišče za večino ekip.
- Velikost datoteke: Ujemati se mora z razpoložljivim RAM-om ali kombinacijo RAM-a in VRAM-a.
- Vrsta modela: Preverite, ali gre za osnovno, navodilno, klepetalno, vizijsko ali specializirano različico.
- Sprejet kontekst: Če imate omejen pomnilnik, ne konfigurirajte največje količine samodejno.
- Predloga za pogovor: Uporabite priporočenega, da se izognete slabo oblikovanim odgovorom.
- Odlomki: Preverite, ali je model razdeljen na več datotek.
Če niste prepričani med različicama, začnite s Q4_K_M. Če ima model dovolj prostora v pomnilniku, lahko poskusite s Q5_K_M ali Q6_K, da ohranite nekoliko višjo kakovost. Če se še vedno ne naloži, uporabite nižjo kvantizacijo, zmanjšajte kontekst ali naložite manj plasti na grafični procesor.
GGUF je pripomogel k večji dostopnosti lokalne umetne inteligence. Njegova kombinacija metapodatki, kvantizacija, učinkovito nalaganje in združljivost z različnimi vrstami strojne opreme Omogoča izvajanje modelov, ki bi še pred nekaj leti zahtevali precejšnjo infrastrukturo.
Format ne odpravlja računalniških omejitev niti ne zagotavlja, da bo kateri koli model deloval pravilno. Vendar pa vam izbira ustrezne arhitekture in kvantizacije omogoča eksperimentiranje s čarovniki, programskimi orodji in specializiranimi modeli, ne da bi se morali nenehno zanašati na zunanje storitve.
Sem tehnološki navdušenec, ki je svoja "geek" zanimanja spremenil v poklic. Več kot 10 let svojega življenja sem porabil za uporabo vrhunske tehnologije in premleval najrazličnejše programe iz čiste radovednosti. Zdaj sem se specializiral za računalniško tehnologijo in video igre. To je zato, ker že več kot 5 let pišem za različna spletna mesta o tehnologiji in video igrah ter ustvarjam članke, ki vam želijo dati informacije, ki jih potrebujete, v jeziku, ki je razumljiv vsem.
Če imate kakršna koli vprašanja, moje znanje sega od vsega v zvezi z operacijskim sistemom Windows kot tudi Androidom za mobilne telefone. In moja zaveza je vam, vedno sem pripravljen porabiti nekaj minut in vam pomagati razrešiti kakršna koli vprašanja, ki jih morda imate v tem internetnem svetu.
