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.
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.