Plik GGUF składa się z nagłówka z liczbą magiczną i wersją formatu, sekcji par klucz-wartość z metadanymi (architektura, hiperparametry, konfiguracja tokenizera), tablicy informacji o tensorach (nazwa, kształt, typ danych/kwantyzacji, przesunięcie) oraz właściwych danych tensorów zapisanych jako bloki skwantyzowane lub w pełnej precyzji. Silnik inferencyjny (np. llama.cpp) mapuje plik do pamięci, odczytuje metadane, rekonstruuje graf modelu i wykonuje obliczenia bezpośrednio na skwantyzowanych blokach, dekwantyzując wartości w locie na CPU lub GPU.
Wcześniejsze formaty (GGML/GGMF/GGJT) były niestabilne i wymagały zewnętrznych plików oraz ręcznego podawania hiperparametrów, co utrudniało dystrybucję i zachowanie kompatybilności. GGUF konsoliduje wagi, metadane i tokenizer w jednym samoopisującym się pliku, zapewniając stabilność, rozszerzalność oraz proste, przenośne wdrażanie skwantyzowanych modeli.
Początek pliku z liczbą magiczną 'GGUF' i numerem wersji formatu, identyfikujący plik i jego strukturę.
Standaryzowany zestaw par klucz-wartość opisujących architekturę, hiperparametry i konfigurację tokenizera modelu.
Tablica opisująca każdy tensor: nazwę, kształt, typ danych/kwantyzacji oraz przesunięcie w pliku.
Właściwe wagi modelu zapisane jako bloki skwantyzowane lub w pełnej precyzji, wyrównane dla mapowania pamięci.
Bardzo niska precyzja (np. Q2_K, Q3_K) mocno redukuje rozmiar pliku, ale zauważalnie pogarsza jakość generacji, zwłaszcza dla mniejszych modeli.
Pliki GGUF utworzone nowszą wersją llama.cpp mogą zawierać metadane nieobsługiwane przez starsze wersje silnika, co uniemożliwia wczytanie modelu.
Jeśli plik nie zawiera poprawnego szablonu promptu lub konfiguracji tokenizera, model może otrzymywać źle sformatowane wejście i generować gorsze odpowiedzi.
Georgi Gerganov tworzy bibliotekę tensorową ggml, na której opierają się wczesne formaty plików (GGML/GGMF/GGJT) do inferencji na CPU — bezpośredni poprzednik GGUF.
GGUF zastąpił formaty GGML/GGMF/GGJT w llama.cpp, wprowadzając samoopisujący się, rozszerzalny plik binarny.
Poziom i schemat kwantyzacji wag decydujący o kompromisie między rozmiarem pliku, zużyciem pamięci a jakością modelu.
GGUF i llama.cpp powstały z myślą o wydajnej inferencji na CPU z wykorzystaniem instrukcji wektorowych i mapowania pamięci.
Silniki oparte na GGML obsługują akcelerację GPU (offloading warstw), co przyspiesza inferencję modeli GGUF.