Sariți la conținutul principal

Formatul GGUF: ghid complet pentru inferență locală cu LLM-uri

GGUF împachetează greutățile modelului, datele tokenizer-ului și metadatele într-un singur fișier portabil. Află cum să alegi nivelul corect de cuantizare și cum să începi cu Ollama.
Actualizat 17 iun. 2026  · 15 min. citire

Deci, ai găsit un model de limbaj cu 7B de parametri pe care vrei să-l încerci local. Acum te confrunți cu o problemă: doar greutățile FP16 au aproximativ 14 GB, iar laptopul tău are doar 16 GB de RAM. 

Chiar și înainte de a lua în calcul sistemul de operare, runtime-ul de inferență, cache-ul de context și bufferele temporare, modelul deja împinge la limită hardware-ul tău. Exact această problemă a fost creat GGUF să o rezolve.

GGUF a devenit unul dintre cele mai importante formate pentru rularea locală a modelelor mari de limbaj cu greutăți deschise. În loc să ai nevoie de un GPU enterprise sau de un API în cloud, GGUF face practic posibilă rularea modelelor cuantizate pe laptopuri, desktopuri, mașini Apple Silicon și chiar pe unele dispozitive mobile sau de margine.

În acest articol, îți voi prezenta formatul GGUF și cum funcționează, îți voi spune cum cuantizarea reduce dimensiunea modelului și cum să alegi nivelul corect de cuantizare și, în final, cum să începi cu Ollama și llama.cpp.

Pe scurt

  • GGUF (GGML Unified Format) este un format binar care împachetează greutățile modelului, datele tokenizer-ului, metadatele arhitecturii și informațiile de cuantizare într-un singur fișier portabil
  • A înlocuit vechiul format GGML în 2023 și este acum formatul dominant pentru distribuirea LLM-urilor cuantizate pe Hugging Face
  • GGUF este folosit de llama.cpp, Ollama, LM Studio, GPT4All, KoboldCpp și alte instrumente de inferență locală
  • Cuantizarea este caracteristica-cheie: un model 7B în FP16 are ~14 GB; o versiune Q4_K_M are ~4–5 GB
  • Nivelele comune de cuantizare variază de la Q2_K (cel mai mic, calitate cea mai scăzută) la Q8_0 (cel mai mare, aproape de precizie completă) — Q4_K_M este punctul de pornire standard pentru majoritatea hardware-ului
  • GGUF rulează pe CPU-uri, Apple Silicon (Metal), GPU-uri NVIDIA (CUDA), GPU-uri AMD (ROCm/Vulkan) și altele
  • Alegerea nivelului corect de cuantizare înseamnă echilibrarea memoriei, calității ieșirii, vitezei de inferență și lungimii contextului

Ce este GGUF?

GGUF, prescurtare de la GGML Unified Format, este un format de fișier binar care împachetează greutățile modelului, datele tokenizer-ului, metadatele arhitecturii și informațiile de cuantizare într-un singur fișier portabil pentru inferență cu runtime-uri bazate pe GGML, în special llama.cpp.

GGUF rezolvă o problemă de implementare pentru LLM-uri. Multe formate de model cer utilizatorilor să păstreze laolaltă mai multe fișiere, inclusiv greutăți de model, fișiere pentru tokenizer, fișiere de configurare și cod de încărcare specific arhitecturii. GGUF simplifică acest lucru făcând ca fișierul modelului să fie în mare parte auto-descriptiv.

Un fișier GGUF conține de obicei:

  • Tensori ai modelului
  • Greutăți cuantizate sau necuantizate
  • Vocabularul tokenizer-ului
  • Configurația tokenizer-ului
  • Metadate despre arhitectura modelului
  • Setări pentru lungimea contextului
  • Dimensiunile embedding-urilor
  • Numărul de head-uri de attention
  • Configurația RoPE
  • Numele tensorilor, formele și tipurile de date

Ideea-cheie este că fișierul se descrie singur. Runtime-ul poate inspecta metadatele, înțelege arhitectura, încărca tokenizer-ul și mapa tensorii fără a se baza pe un config.json separat sau pe un folder pentru tokenizer.

Asta nu înseamnă că fiecare fișier GGUF este universal compatibil cu orice runtime pentru totdeauna. Runtime-ul tot trebuie să suporte arhitectura modelului și tipurile de tensori folosite în fișier. Totuși, GGUF face această compatibilitate mult mai ușoară decât formatele mai vechi, deoarece fișierul poartă mult mai multe informații structurate.

Patru caracteristici definitorii ale GGUF sunt:

  1. Implementare într-un singur fișier
  2. Suport pentru memory mapping pentru încărcare eficientă
  3. Metadate extensibile, tipizate, de tip cheie–valoare
  4. Suport pentru multe tipuri de cuantizare, de la formate agresive low-bit la precizie completă

GGUF a fost introdus ca parte a ecosistemului llama.cpp și GGML în 2023. Acum este formatul dominant pentru distribuirea LLM-urilor locale cuantizate pe Hugging Face.

GGUF vs. GGML

Formatul GGML (Georgi Gerganov Machine Learning) a fost predecesorul lui GGUF. A fost important pentru că a ajutat la posibilitatea inferenței locale timpurii. Totuși, avea limitări practice pe măsură ce ecosistemul s-a extins dincolo de modelele LLaMA originale.

Puncte dureroase comune ale GGML includeau:

  • Gestionarea mai puțin flexibilă a metadatelor
  • Mai multe presupuneri specifice arhitecturii la încărcare
  • Gestionare a tokenizer-ului și a configurației mai puțin auto-conținută
  • Extensibilitate mai dificilă pe măsură ce apăreau noi familii de modele

GGUF a abordat aceste limitări cu un format mai structurat. A introdus metadate tipizate, embedding-uri de tokenizer mai bune și un layout de fișier mai clar. Asta a făcut mai ușor pentru llama.cpp și instrumentele înrudite să suporte mai multe arhitecturi fără a redesena constant pipeline-ul de încărcare.

Pentru utilizatori, diferența importantă este simplă: GGUF este formatul modern. Dacă descarci modele astăzi, aproape întotdeauna ar trebui să alegi GGUF în locul fișierelor GGML mai vechi.

GGUF vs. GPTQ și AWQ

În documentarea ta despre formate de fișiere, probabil ai dat peste GGUF, GPTQ (Generative Post-Training Quantization) și AWQ (Activation-Aware Weight Quantization). Le văd adesea discutate împreună pentru că toate trei sunt folosite pentru a face inferența LLM mai eficientă. Totuși, nu sunt categorii identice.

GGUF este în primul rând un format de fișier și un container de implementare. Suportă multe tipuri de cuantizare și este strâns asociat cu inferența locală în stil llama.cpp.

GPTQ și AWQ sunt metode de cuantizare și ecosisteme folosite frecvent pentru inferență optimizată pe GPU, în special pe hardware NVIDIA prin framework-uri precum Transformers, ExLlama, AutoGPTQ și fluxuri de lucru compatibile cu vLLM.

Caracteristică

GGUF

GPTQ

AWQ

Ținta principală

Inferență locală portabilă

Inferență pe GPU

Inferență pe GPU

Hardware obișnuit

CPU, Apple Silicon, NVIDIA, AMD, Vulkan, mobil

GPU-uri NVIDIA

GPU-uri NVIDIA

Suport CPU

Puternic

Limitat

Limitat

Portabilitate

Foarte ridicată

Moderată

Moderată

Ecosistem tipic

llama.cpp, Ollama, LM Studio, GPT4All

Transformers, ExLlama, AutoGPTQ

Transformers, fluxuri în stil TensorRT-LLM

Debit GPU

Bun, mai ales cu offload

Adesea foarte puternic

Adesea foarte puternic

Caz de utilizare ideal

Inferență locală și pe hardware mixt

Servire pe GPU cu debit ridicat

Servire pe GPU cu debit ridicat

Dacă obiectivul tău este compatibilitate maximă între laptopuri, desktopuri, Apple Silicon și hardware mixt, GGUF este de obicei alegerea mai sigură.

Dacă obiectivul tău este debit maxim pe servere de inferență NVIDIA dedicate, GPTQ, AWQ, FP8 sau alte formate de servire optimizate pentru GPU pot fi mai potrivite.

De ce să folosești GGUF?

GGUF a devenit popular pentru că rezolvă probleme practice de implementare. Și eu le-am găsit extrem de comode când implementez local fără tot haosul de configurare.

Rularea locală a LLM-urilor presupunea cândva toolchain-uri fragmentate, greutăți mari necomprimate, formate de model incompatibile și pași complicați de configurare. GGUF te poate ajuta acum să standardizezi o mare parte din acest flux.

În loc să te gândești la multe fișiere separate și scripturi de încărcare, te poți concentra pe selectarea modelului potrivit, alegerea unui nivel de cuantizare și rularea inferenței.

Rulează modele local

GGUF îți permite să rulezi LLM-uri pe propria ta mașină. Asta înseamnă:

  • Fără cost pe token pentru API
  • Fără dependență de un furnizor de inferență găzduit
  • Nu trebuie să trimiți prompturi către un API terț
  • Inferența offline este posibilă după descărcarea modelului

Acest lucru este deosebit de util pentru fluxuri de lucru sensibile la confidențialitate. Dezvoltatorii pot să nu dorească să trimită cod proprietar, documente interne, înregistrări ale clienților sau prompturi confidențiale către un API extern.

Inferența locală nu este automat sigură de la sine. Tot trebuie să îți gestionezi corect mașina, jurnalele, aplicațiile și controlul accesului. Dar GGUF face implementarea privată locală mult mai accesibilă.

Pentru exercițiu practic de rulare locală a modelelor, vezi tutorialele noastre despre servirea Mistral Medium 3.5 cu SGLang, rularea locală a DeepSeek V4 Flash, rularea modelului eficient Bonsai 1-bit pe un laptop vechi și rularea locală a MiniMax M2 ca asistent de cod.

Flexibilitate hardware

GGUF este util pentru că funcționează pe multe configurații hardware.

În funcție de runtime și backend, modelele GGUF pot rula pe:

  • Mașini doar cu CPU
  • GPU-uri NVIDIA prin CUDA
  • Apple Silicon prin Metal
  • GPU-uri AMD prin HIP sau Vulkan
  • GPU-uri Intel prin SYCL sau Vulkan
  • Anumite medii ARM și mobile

Această flexibilitate este un motiv major pentru care llama.cpp a devenit influent. Nu a fost proiectat doar pentru GPU-uri de server high-end. A fost conceput pentru a face inferența locală posibilă pe o gamă largă de hardware.

De exemplu, un utilizator de Mac poate folosi accelerare Metal, în timp ce un utilizator de desktop Linux poate folosi CUDA sau Vulkan. Un utilizator doar cu CPU poate totuși rula modele cuantizate mai mici, deși viteza de generare va fi mai mică.

Suport larg în ecosistem

GGUF este suportat de multe instrumente de inferență locală. Exemple includ:

  • llama.cpp pentru inferență în linia de comandă și server
  • Ollama pentru management de modele orientat pe CLI și acces API
  • LM Studio pentru o interfață grafică desktop
  • GPT4All pentru chat local axat pe confidențialitate
  • KoboldCpp pentru roleplay local și fluxuri de generare de text
  • Jan și Open WebUI pentru interfețe AI locale

Asta contează pentru că utilizatorii nu sunt blocați într-o singură interfață. Același format general de model poate fi folosit în fluxuri de lucru diferite.

Un dezvoltator ar putea face benchmark unui model cu llama.cpp, să stea de vorbă cu el în LM Studio, să-l servească prin Ollama și să-l conecteze la o interfață în browser prin Open WebUI.

Distribuție pe Hugging Face

Hugging Face a devenit un hub major de distribuție pentru modelele GGUF.

Sursă: Hugging Face

Multe modele populare cu greutăți deschise primesc variante GGUF încărcate de comunitate la scurt timp după lansare. Aceste depozite includ adesea mai multe opțiuni de cuantizare, astfel încât utilizatorii să poată alege un model care se potrivește hardware-ului lor.

Variantele încărcate frecvent includ:

  • Q4_K_M
  • Q5_K_M
  • Q6_K
  • Q8_0
  • IQ4_XS
  • IQ3_M
  • IQ2_XXS

Asta înseamnă că conversia manuală este adesea inutilă. Pentru modelele cele mai populare, cineva din comunitate a creat deja fișiere GGUF pentru niveluri comune de cuantizare.

Control granular al raportului dimensiune–calitate

GGUF le oferă utilizatorilor control fin asupra compromisului dimensiune–calitate. Poți alege:

  • Cuantizări mai mici pentru mașini cu memorie redusă
  • Cuantizări medii pentru uz zilnic echilibrat
  • Cuantizări cu mai mulți biți pentru coding, raționare sau ieșiri structurate
  • Precizie completă sau aproape completă atunci când memoria nu e o constrângere

Această flexibilitate este unul dintre marile avantaje ale formatului. În loc de o singură țintă fixă de implementare, GGUF permite adaptarea aceleiași familii de modele la multe trepte de hardware.

Cum funcționează GGUF?

Un fișier GGUF este organizat în trei părți majore:

  1. Header
  2. Metadate și informații despre tensori
  3. Datele tensorilor

Structura exactă este definită de specificația GGUF. Ideea importantă este că metadatele și informațiile despre tensori apar înaintea datelor brute ale tensorilor, permițând unui runtime să înțeleagă ce urmează să încarce.

Headerul

Headerul identifică fișierul ca GGUF și spune runtime-ului cum să parseze restul fișierului. Include:

  • Numărul magic pentru GGUF
  • Versiunea formatului
  • Numărul de tensori
  • Numărul de perechi cheie–valoare în metadate

Fișierele GGUF moderne folosesc frecvent versiunea 3.

Motoarele de inferență verifică mai întâi numărul magic. Dacă fișierul nu începe cu identificatorul GGUF așteptat, runtime-ul îl poate respinge înainte de a încerca să parseze tensori sau să aloce memorie.

Acesta este un pas simplu, dar important, pentru siguranță și fiabilitate. Previne ca un runtime să trateze accidental un fișier binar fără legătură ca pe un model.

Perechi cheie–valoare în metadate

Metadatele GGUF sunt un store tipizat cheie–valoare. Aceste metadate pot descrie:

  • Informații generale despre model
  • Familia arhitecturii
  • Lungimea contextului
  • Dimensiunea embedding-urilor
  • Numărul de layere
  • Numărul de head-uri de attention
  • Parametrii RoPE
  • Vocabularul tokenizer-ului
  • Tokeni speciali
  • Informații de cuantizare

Cheile sunt de obicei namespace-uite. Exemple includ:

  • general.architecture
  • general.alignment
  • llama.context_length
  • tokenizer.ggml.tokens

Namespace-urile sunt importante pentru că permit GGUF să suporte multe arhitecturi fără a schimba întregul format al fișierului. Un model din familia LLaMA poate folosi chei llama.*, în timp ce alte familii de modele pot folosi propriile metadate specifice arhitecturii.

Acesta este unul dintre motivele pentru care GGUF s-a adaptat bine la modele dincolo de familia LLaMA originală, inclusiv arhitecturi precum Qwen, Mistral, Gemma, DeepSeek, Phi și altele.

Informații despre tensori și datele tensorilor

După metadate, fișierul stochează informațiile despre tensori și datele tensorilor.

Informațiile despre tensori descriu:

  • Numele tensorului
  • Forma
  • Tipul de date
  • Offsetul în secțiunea de date a tensorilor

Secțiunea de date a tensorilor conține greutățile efective ale modelului. Aceste greutăți pot fi stocate la precizie completă sau într-unul dintre tipurile de tensori cuantizați suportați de GGUF.

GGUF folosește o valoare de aliniere definită în metadate, frecvent general.alignment. Multe fișiere GGUF folosesc aliniere pe 32 de byți, dar modul corect de a descrie asta este că alinierea este controlată de metadate, nu hardcodată permanent.

Alinierea contează pentru că permite runtime-urilor să acceseze eficient blocurile de tensori.

Memory mapping

Unul dintre avantajele practice ale GGUF este memory mapping-ul, adesea numit mmap.

Cu memory mapping, sistemul de operare poate mapa fișierul modelului în memoria virtuală în loc să forțeze runtime-ul să copieze întregul fișier în RAM din start.

Asta poate face pornirea modelului să pară mult mai rapidă, mai ales pe SSD-uri. De asemenea, permite sistemului de operare să pagineze datele modelului după nevoie.

Totuși, memory mapping nu este magie. Modelul are tot nevoie de lățime de bandă de memorie practică și de suficientă RAM sau VRAM pentru a rula bine. Dacă sistemul tău face paging constant de pe disc, inferența poate deveni lentă.

Un mod mai bun de a te gândi la mmap este acesta:

  • Îmbunătățește eficiența încărcării
  • Reduce copierea inutilă
  • Permite OS-ului să gestioneze paging-ul
  • Nu elimină cerințele de memorie ale inferenței

Înțelegerea tipurilor de cuantizare GGUF

Cuantizarea comprimă greutățile modelului în reprezentări cu precizie mai mică.

În loc să stocheze fiecare greutate ca o valoare în virgulă mobilă pe 16 biți, un model cuantizat stochează valori aproximative folosind mai puțini biți. Asta reduce dimensiunea pe disc, utilizarea RAM și VRAM, și presiunea pe lățimea de bandă a memoriei.

Intuiția-cheie este că multe greutăți din rețelele neuronale nu au nevoie de precizie completă în virgulă mobilă în timpul inferenței. Un model cuantizat cu grijă poate păstra mult din comportamentul original al modelului, devenind în același timp dramatic mai mic.

Denumierea cuantizărilor GGUF

Numele cuantizărilor GGUF urmează de obicei acest tipar:

  • Q înseamnă cuantizat
  • Numărul sugerează biții aproximativi per greutate
  • K se referă la familia k-quant
  • S, M și L înseamnă de obicei variante small, medium și large

Exemple includ:

  • Q4_K_M
  • Q5_K_M
  • Q6_K
  • Q8_0

Numele este un ghid util, dar nu este întotdeauna o declarație exactă a dimensiunii totale a fișierului. Dimensiunea reală depinde de amestecul de tensori, arhitectură, metadate, dimensiunea tokenizer-ului și dacă unii tensori rămân la precizie mai mare.

Tipuri comune de cuantizare GGUF

Cuantizare

Comportament aproximativ

Dimensiune aproximativă fișier 7B

Notă de calitate

Q2_K

Cuantizare cu biți foarte puțini

Aproximativ 2,5–3 GB

Mic, dar pierderea de calitate este adesea evidentă

Q3_K_M

Cuantizare echilibrată low-bit

Aproximativ 3,5–4 GB

Util pentru chat ușor, dar nu ideal pentru raționare

Q4_K_M

Cuantizare echilibrată pe 4 biți

Aproximativ 4–5 GB

Implicit puternic pentru majoritatea utilizatorilor locali

Q5_K_M

Cuantizare pe 5 biți, de calitate mai ridicată

Aproximativ 5,5–6,5 GB

Mai bun pentru coding, raționare și sarcini structurate

Q6_K

Cuantizare de înaltă calitate

Aproximativ 7–8 GB

Adesea aproape de comportamentul cu precizie mai înaltă

Q8_0

Cuantizare pe 8 biți

Aproximativ 8–9 GB

Calitate înaltă, dar mult mai mare decât Q4/Q5

Aceste numere sunt aproximații pentru modele dense din clasa 7B. Arhitecturi mai noi, modele mixture-of-experts, tokenizer-e mai mari și layout-uri diferite ale tensorilor pot schimba dimensiunea efectivă a fișierului.

În practică, Q4_K_M a devenit un implicit popular pentru că oferă un echilibru puternic între dimensiune și calitate. Mulți utilizatori îl consideră suficient de bun pentru chat general, sumarizare, rescriere și lucru exploratoriu cu AI local.

Q5_K_M și Q6_K sunt adesea alegeri mai bune pentru sarcini mai solicitante, precum coding sau urmărirea instrucțiunilor în mai mulți pași

Motivul este simplu: aceste sarcini sunt mai sensibile la degradări mici de calitate.

K-quants vs. I-quants

K-quants sunt familia de cuantizări utilizată pe scară largă în spatele formatelor precum Q4_K_M, Q5_K_M și Q6_K.

Folosesc scheme de cuantizare pe grupuri, cu informații de scalare care ajută la păstrarea comportamentului modelului reducând în același timp cerințele de memorie. Sunt populare deoarece sunt fiabile, larg suportate și ușor de găsit în release-urile GGUF ale comunității.

I-quants, scrise adesea ca formate IQ, sunt tipuri de cuantizare mai noi, precum:

  • IQ4_XS
  • IQ3_M
  • IQ2_XXS
  • IQ1_S

I-quants sunt concepute pentru a obține o calitate mai bună la dimensiuni foarte mici. Pot folosi tehnici precum cuantizarea conștientă de importanță și codebook-uri de cuantizare neliniare. Unele fluxuri de lucru folosesc o matrice de importanță, adesea numită imatrix, pentru a ajuta la păstrarea greutăților mai importante în timpul cuantizării.

K quants vs I quants

Compromisul este complexitatea. I-quants pot produce rezultate excelente în raport dimensiune–calitate, mai ales la rate de biți foarte mici, dar pot necesita fluxuri de cuantizare și suport la runtime mai atente.

Pentru majoritatea începătorilor, K-quants rămân cel mai ușor punct de pornire.

Alegerea unui nivel de cuantizare pentru hardware-ul tău

Tabelul următor oferă puncte de pornire practice. Tratează-le ca reguli empirice, nu garanții stricte. Lungimea contextului, overhead-ul sistemului de operare, offload-ul pe GPU, dimensiunea KV cache și arhitectura specifică a modelului pot schimba toate cerințele de memorie.

Clasă de hardware

Modele 7B/8B

Modele 13B/14B

Modele 30B/34B

Modele clasa 70B

8 GB RAM/VRAM

Q4_K_M sau mai mic

Q2_K/Q3_K pot rula lent

Nepractic

Nepractic

16 GB RAM/VRAM

Q5_K_M sau Q6_K

Q4_K_M

Nepractic sau foarte constrâns

Nepractic

24 GB RAM/VRAM

Q8_0 sau Q6_K

Q5_K_M/Q6_K

Q3_K/Q4_K cu constrângeri

Nepractic pentru majoritatea utilizatorilor

32 GB RAM/VRAM

Q8_0

Q6_K/Q8_0

Q4_K_M/Q5_K_M

Q2_K/Q3_K doar pentru experimente

48 GB+ RAM/VRAM

Q8_0 sau FP16/BF16 unde sunt suportate

Q8_0

Q5_K_M/Q6_K

Q4_K_M posibil cu constrângeri

64 GB+ RAM/VRAM

Precizie înaltă

Precizie înaltă

Q6_K/Q8_0

Q4_K_M/Q5_K_M mai practice

Reguli generale empirice:

  • Folosește Q4_K_M ca implicit sigur pentru majoritatea inferenței locale.
  • Folosește Q5_K_M când calitatea contează mai mult decât economisirea fiecărui gigabyte.
  • Folosește Q6_K sau Q8_0 când ai memorie disponibilă și vrei fidelitate mai bună.
  • Evită Q2_K pentru lucru serios, decât dacă testezi scenarii extrem de constrânse de memorie.
  • Lasă memorie suplimentară pentru KV cache, mai ales când folosești ferestre de context lungi.

KV cache este ușor de trecut cu vederea. Un model poate încăpea în RAM la o lungime scurtă a contextului, dar să eșueze sau să încetinească la o lungime mult mai mare pentru că cache-ul crește odată cu lungimea secvenței.

Ecosistemul GGUF

Adopția GGUF este impulsionată la fel de mult de uneltele din jurul lui cât de formatul în sine.

Un format devine util doar când utilizatorii pot descărca, rula, inspecta, converti și servi modele cu ușurință. GGUF beneficiază de un ecosistem puternic de instrumente în linia de comandă, aplicații desktop, API-uri și depozite de modele găzduite.

1. llama.cpp

llama.cpp este runtime-ul GGUF original și cel mai important. Este un motor de inferență ușor, în C/C++, creat de Georgi Gerganov și întreținut de comunitatea GGML. Obiectivul său principal este să permită inferență eficientă cu LLM cu setup minim pe multe platforme hardware.

Versiunile moderne de llama.cpp suportă multe backend-uri, inclusiv:

  • CPU
  • CUDA pentru GPU-uri NVIDIA
  • Metal pentru dispozitive Apple
  • Vulkan
  • HIP pentru GPU-uri AMD prin ROCm
  • SYCL pentru GPU-uri Intel
  • OpenCL în medii selectate
  • Alte backend-uri specializate precum CANN, OpenVINO și WebGPU, în funcție de suportul platformei

Include, de asemenea, instrumente pentru conversie, cuantizare, servire, benchmark și inferență în linia de comandă. Instrumente comune includ:

  • convert_hf_to_gguf.py
  • llama-quantize
  • llama-cli
  • llama-server
  • llama-bench

Comenzile pentru a crea un build CMake de bază pe CPU sunt:

cmake -B build
cmake --build build --config Release

Pentru unele configurații, anumite flaguri trebuie adăugate la prima dintre cele două comenzi:

  • Dezactivează Apple Metal pe macOS (activat implicit): -DGGML_METAL=OFF
  • Build Vulkan: -DGGML_VULKAN=1
  • Build CUDA pentru GPU-uri NVIDIA: -DGGML_CUDA=ON

Reține că build-urile curente folosesc opțiuni CMake GGML_*, precum GGML_CUDA, GGML_VULKAN și GGML_HIP.

2. Ollama

Ollama este una dintre cele mai simple modalități de a rula modele locale. Oferă:

  • Un CLI simplu
  • Descărcare și management de modele
  • Un API REST local
  • Biblioteci oficiale pentru Python și JavaScript
  • Integrare cu multe front-end-uri AI locale

Ollama stochează și gestionează modelele pentru tine, astfel că utilizatorul, de obicei, nu interacționează direct cu fișiere .gguf. Totuși, Ollama este construit în jurul inferenței locale compatibile cu llama.cpp și poate importa fișiere GGUF printr-un workflow Modelfile.

Ollama expune un API local la:

http://localhost:11434/api

Două endpoint-uri utilizate frecvent sunt:

  • /api/generate pentru completarea prompturilor
  • /api/chat pentru mesaje de tip chat

Pentru începători, Ollama este adesea cel mai rapid drum de la zero la inferență locală.

3. LM Studio

LM studio

Sursă: LM Studio

LM Studio este o aplicație desktop pentru descoperirea, descărcarea și conversația cu modele locale. Este utilă pentru utilizatorii care preferă o interfață grafică în locul instrumentelor în linia de comandă.

4. GPT4All

gpt4all

Sursă: GPT4All

GPT4All este o altă aplicație AI locală, cross-platform, axată pe fluxuri de lucru de chatbot private, locale. Suportă modele GGUF și oferă un mediu prietenos pentru începători pentru inferența locală.

Aceste instrumente fac GGUF accesibil nespecialiștilor. Utilizatorii nu trebuie să înțeleagă CMake, layout-urile tensorilor sau internalele cuantizării doar ca să încerce un model local.

Cum să începi cu modelele GGUF

Există două moduri practice de a începe:

  1. Folosește Ollama pentru cea mai simplă experiență.
  2. Folosește direct llama.cpp pentru mai mult control.

Rularea unui model cu Ollama

Cel mai simplu flux este să descarci modelul și să pornești o sesiune de chat interactiv:

ollama pull llama3.3
ollama run llama3.3

Pentru a apela modelul din Python folosind REST API:

import requests

payload = {
    "model": "llama3.3",
    "prompt": "Give me three practical use cases for GGUF.",
    "stream": False
}

response = requests.post(
    "http://localhost:11434/api/generate",
    json=payload
)

print(response.json()["response"])

Pentru aplicații de tip chat, folosește /api/chat:

import requests

payload = {
    "model": "llama3.3",
    "messages": [
        {"role": "user", "content": "What is GGUF used for?"}
    ],
    "stream": False
}

response = requests.post(
    "http://localhost:11434/api/chat",
    json=payload
)

print(response.json()["message"]["content"])

Câmpul stream: false este important pentru scripturi simple. Fără el, Ollama returnează un flux de obiecte JSON, nu un singur răspuns JSON final.

Poți folosi, de asemenea, biblioteca oficială Python a Ollama:

from ollama import chat

response = chat(
    model="llama3.3",
    messages=[
        {"role": "user", "content": "Explain GGUF quantization simply."}
    ]
)

print(response.message.content)

Rularea unui fișier GGUF cu llama.cpp

Dacă ai deja un fișier .gguf, îl poți rula direct cu llama.cpp după ce ai construit proiectul.

Exemplu:

./build/bin/llama-cli \
  -m models/model.Q4_K_M.gguf \
  -p "Explain the difference between GGUF and GPTQ." \
  -n 256

Dacă ai activat suportul pentru GPU, poți offloada layere pe GPU:

./build/bin/llama-cli \
  -m models/model.Q4_K_M.gguf \
  -p "Summarize GGUF in five bullet points." \
  -n 256 \
  -ngl 99

Flagul -ngl controlează numărul de layere offloadate pe GPU. O valoare mare precum 99 este folosită frecvent pentru a offloada cât mai mult posibil, presupunând că modelul încape în VRAM.

Pentru servire prin API, folosește llama-server:

./build/bin/llama-server \
  -m models/model.Q4_K_M.gguf \
  -ngl 99 \
  --host 127.0.0.1 \
  --port 8080

Asta îți oferă o interfață de server locală pentru a integra llama.cpp în aplicații.

Conversia unui model Hugging Face la GGUF

Majoritatea utilizatorilor nu trebuie să convertească manual modelele, deoarece release-urile GGUF din comunitate sunt larg disponibile.

Totuși, conversia manuală este utilă atunci când:

  • Ți-ai fine-tunat propriul model
  • Nu există încă o versiune GGUF
  • Vrei să controlezi singur procesul de cuantizare
  • Ai nevoie de un tip specific de cuantizare

Un flux tipic este:

  1. Descarcă un model Hugging Face.
  2. Convertește-l la GGUF.
  3. Cuantizează fișierul GGUF.

Exemplu:

huggingface-cli download mistralai/Mistral-7B-Instruct-v0.3 \
  --local-dir mistral-7b

Apoi convertește la GGUF:

python convert_hf_to_gguf.py mistral-7b \
  --outfile mistral-f16.gguf \
  --outtype f16

Apoi cuantizează:

./build/bin/llama-quantize \
  mistral-f16.gguf \
  mistral-q4_k_m.gguf \
  Q4_K_M

În fluxurile curente cu llama.cpp, convert_hf_to_gguf.py și llama-quantize sunt instrumentele relevante. Tutorialele mai vechi pot face referire la scripturi de conversie învechite sau nume de binare mai vechi.

Avantajele și limitările formatului GGUF

GGUF este optimizat pentru inferență locală practică. Nu este un înlocuitor universal pentru fiecare format de model sau stack de serving.

Avantaje

Limitări

Implementare a modelului într-un singur fișier

Nu este conceput pentru antrenare de la zero

Ecosistem puternic pentru inferență locală

Cuantizarea cu biți foarte puțini poate afecta calitatea

Funcționează pe multe backend-uri hardware

Modelele mari au totuși nevoie de memorie semnificativă

Suportă memory mapping

Debit GPU posibil mai mic decât stack-urile specializate pentru servire pe GPU

Multe opțiuni de cuantizare

Runtime-ul trebuie totuși să suporte arhitectura modelului și tipurile de tensori

Distribuție ușoară pe Hugging Face

Lungimea contextului poate crește utilizarea memoriei prin KV cache

Pentru CPU-first, Apple Silicon, hardware mixt și inferență axată pe confidențialitate, GGUF este adesea o alegere excelentă.

Pentru implementare pe servere NVIDIA cu debit ridicat, alte formate și motoare pot fi mai rapide în funcție de model, mărimea batch-ului, metoda de cuantizare și framework-ul de servire.

Gânduri finale

GGUF face inferența locală cu LLM-uri practică, împachetând tot ce are nevoie un runtime (greutăți, tokenizer, metadate, informații de cuantizare) într-un singur fișier portabil. Adevărata sa forță este ecosistemul din jur: llama.cpp, Ollama, LM Studio și Hugging Face l-au transformat în formatul implicit pentru implementare AI locală.

Pentru majoritatea utilizatorilor, drumul este simplu: instalează Ollama, descarcă un model și rulează-l. Q4_K_M este un implicit solid; treci la Q5_K_M sau Q6_K când ai nevoie de raționare sau ieșiri de coding mai bune și ai memorie disponibilă.

Dacă vrei să aprofundezi implementarea LLM, optimizarea modelelor și fluxurile de inferență locală, ar trebui să explorezi traseul de carieră Associate AI Engineer for Data Scientists sau Associate AI Engineer for Developers.

Întrebări frecvente despre formatul GGUF

Ce înseamnă GGUF?

GGUF înseamnă GGML Unified Format. Este un format de fișier binar conceput pentru stocarea și rularea locală a modelelor mari de limbaj. GGUF împachetează tensori, datele tokenizer-ului, metadate și informații despre arhitectură într-un singur fișier portabil, făcând implementarea locală mult mai simplă comparativ cu fluxurile de lucru vechi, cu mai multe fișiere.

Este GGUF mai bun decât GPTQ sau AWQ?

GGUF nu este neapărat „mai bun” decât GPTQ sau AWQ în orice scenariu. GGUF este optimizat pentru portabilitate și compatibilitate largă cu hardware-ul, în special pentru inferență pe CPU, Apple Silicon și hardware mixt prin instrumente precum llama.cpp și Ollama. GPTQ și AWQ sunt de obicei mai optimizate pentru inferență pe GPU-uri NVIDIA cu debit ridicat în medii de server.

Ce cuantizare GGUF ar trebui să folosească începătorii?

Pentru majoritatea utilizatorilor, Q4_K_M este punctul de pornire cel mai sigur. Oferă un echilibru puternic între calitatea modelului, utilizarea RAM și viteza de inferență. Utilizatorii cu mai multă memorie care doresc performanță mai bună la raționare sau coding pot prefera Q5_K_M sau Q6_K, în timp ce formatele cu mai puțini biți, precum Q2_K, sunt de obicei potrivite doar pentru experimentare.

Pot modelele GGUF rula fără GPU?

Da. Unul dintre cele mai mari avantaje ale GGUF este suportul puternic pentru CPU. Instrumente precum llama.cpp pot rula modele GGUF în întregime pe CPU-uri, deși viteza de inferență va fi, de obicei, mai mică decât cu accelerare pe GPU. Modelele cuantizate mai mici, precum variantele 7B sau 8B Q4_K_M, sunt adesea practice pe CPU-uri moderne pentru consumatori.

Trebuie să convertesc manual modelele în GGUF?

De obicei nu. Majoritatea modelelor populare cu greutăți deschise au deja versiuni GGUF încărcate de comunitate pe Hugging Face. Conversia manuală este utilă în principal dacă ți-ai fine-tunat propriul model, ai nevoie de un tip specific de cuantizare sau vrei control mai strict asupra procesului de conversie și cuantizare folosind llama.cpp.

Subiecte

Cursuri AI de top

track

Fundamentele AI

10 oră
Descoperă fundamentele AI, învață să folosești AI eficient la muncă și aprofundează modele precum ChatGPT pentru a naviga peisajul dinamic al AI.
Vezi detaliiRight Arrow
Începeți cursul
Vezi mai multRight Arrow