Koniec z kompromisami! DFloat11 ratuje dokładność modeli AI, czyli kompresja, na którą czekałem

Koniec z kompromisami! DFloat11 ratuje dokładność modeli AI, czyli kompresja, na którą czekałem

Od kiedy na dobre zanurzyłem się w świat modeli językowych, jedna rzecz nie dawała mi spokoju. Z jednej strony mamy potężne, ale gigantyczne modele w formacie 16-bitowym (jak BFloat16), które oferują niemal bezstratną jakość, ale wymagają do tego serwerowni i fortuny na sprzęt a nawet małe modele wchodzą z trudem w domowe GPU bez utraty jakości. Z drugiej – popularne techniki kwantyzacji do 8, 4, a nawet 1 bitu, które drastycznie zmniejszają rozmiar modelu, ale robią to kosztem tego, co najważniejsze: dokładności.

Zawsze irytowała mnie ta przepaść. Dlaczego mielibyśmy poświęcać precyzję, na którą pracowały tysiące inżynierów i która kosztowała miliony dolarów w treningu, tylko po to, by upchnąć model w mniejszej pamięci? Modele i tak zmagają się z halucynacjami i błędami logicznymi, a my dodatkowo ograniczamy ich potencjał stratną kompresją. Czułem, że musi istnieć złoty środek – sposób na znaczną redukcję rozmiaru bez utraty choćby jednego bita informacji. I w końcu, ku mojej wielkiej radości, naukowcy udowodnili, że miałem rację.

Problem z kwantyzacją „wszystko albo nic”

Większość obecnych dużych modeli językowych (LLM) używa 16-bitowego formatu zmiennoprzecinkowego BFloat16 (BF16). Jest to format precyzyjny, ale pamięciożerny. Llama-3.1-405B, na przykład, wymaga aż 810 GB pamięci.

Aby temu zaradzić, powszechnie stosuje się kwantyzację, czyli konwersję wag modelu do reprezentacji o niższej precyzji, np. 8-bitowej (INT8). Choć często określa się ją jako „względnie bezpieczną” , jest to z natury technika stratna. Oznacza to, że nieodwracalnie zmienia ona wagi modelu, co wpływa na jego dokładność i niezawodność.

I nie są to tylko teoretyczne obawy. Badania pokazują, że nawet 8-bitowa kwantyzacja może prowadzić do zauważalnego spadku wydajności w zadaniach wymagających precyzji, takich jak kodowanie, odpowiadanie na długie zapytania czy, co najważniejsze, rozumowanie. Kwantyzacja modelu DeepSeek-R1-Distill-Llama-70B do 8 bitów spowodowała spadek dokładności w teście GPQA aż o 23,7%. To dokładnie ten kompromis, którego chciałem uniknąć.

Przełom: DFloat11 – bezstratna kompresja z wydajnością GPU

Odpowiedzią na moje frustracje jest praca naukowa zespołu badaczy z Rice University i Case Western Reserve University, zatytułowana „70% Size, 100% Accuracy: Lossless LLM Compression for Efficient GPU Inference via Dynamic-Length Float”. Wprowadzają w niej nowatorską metodę kompresji, którą nazwali Dynamic-Length Float (DFloat11).

Kluczowe odkrycie badaczy jest genialne w swojej prostocie: format BFloat16 jest nieefektywny informacyjnie. Każda liczba w tym formacie składa się z trzech części: znaku (1 bit), wykładnika (8 bitów) i mantysy (7 bitów). Analizując wagi popularnych modeli LLM, naukowcy zauważyli, że o ile znak i mantysa wykorzystują niemal całą swoją pojemność informacyjną , o tyle wykładnik jest niezwykle marnotrawny. Z 8 bitów, które ma do dyspozycji, realnie wykorzystuje informację o wartości zaledwie około 2.6 bita. Oznacza to, że ponad 5 bitów na każdą pojedynczą wagę w modelu jest po prostu niewykorzystanych!

DFloat11 wykorzystuje tę obserwację, stosując kodowanie entropijne (znane jako kodowanie Huffmana) wyłącznie do części wykładnika. Rzadziej występującym wartościom wykładnika przypisuje dłuższe kody, a częstszym – krótsze. Znak i mantysa pozostają nietknięte.

Wynik? Model skompresowany do około 70% swojego pierwotnego rozmiaru, co odpowiada efektywnej szerokości około 11 bitów , przy jednoczesnym zachowaniu wyników, które są bit w bit identyczne z oryginalnym modelem. To nie jest „prawie” bezstratna kompresja. To jest w 100% bezstratna kompresja, która działa.

Jak to działa w praktyce? Magia na poziomie GPU

Sama kompresja to jedno, ale największym wyzwaniem była dekompresja w locie podczas inferencji na GPU. Tradycyjne metody dekodowania Huffmana są sekwencyjne, co jest koszmarem dla masowo równoległej architektury GPU.

Tutaj właśnie badacze dokonali cudu inżynierii, tworząc niestandardowe jądro (kernel) CUDA, które opiera się na trzech filarach:

  1. Kompaktowe tablice LUT: Zamiast jednej gigantycznej tabeli do dekodowania, która nie zmieściłaby się w ultraszybkiej pamięci SRAM karty graficznej, stworzyli system mniejszych, połączonych tablic.
  2. Dwufazowy kernel: Sprytny, dwuetapowy proces, w którym wątki GPU najpierw obliczają, ile danych zdekodują, a dopiero potem, po synchronizacji, zapisują wyniki w odpowiednich miejscach w pamięci.
  3. Dekompresja na poziomie bloku transformera: Zamiast dekompresować każdą macierz osobno, grupują je i dekompresują wszystkie wagi potrzebne dla całego bloku transformera naraz. To maksymalizuje wykorzystanie GPU i ukrywa opóźnienia.

Realne korzyści, które zmieniają zasady gry

Wyniki eksperymentów mówią same za siebie:

  • Uruchamianie gigantów na zwykłym sprzęcie: DFloat11 umożliwił uruchomienie modelu Llama-3.1-405B (810 GB) na pojedynczym serwerze z 8 kartami po 80 GB GPU. Bez kompresji byłoby to niemożliwe.
  • Ogromny wzrost przepustowości: W porównaniu do alternatywy, czyli przenoszenia części nieskompresowanego modelu do pamięci CPU, DFloat11 zapewnia od 1.9x do nawet 38.8x wyższą przepustowość w generowaniu tokenów.
  • Znacznie dłuższy kontekst: Zaoszczędzona pamięć GPU może być wykorzystana na przechowywanie tzw. KV cache, co pozwala modelom na obsługę od 5.3x do 13.17x dłuższego kontekstu (dłuższych zapytań i odpowiedzi) na tym samym sprzęcie.

Co więcej, korzyści te nie dotyczą tylko ogromnych, chmurowych modeli. Ta technologia zmienia zasady gry także w mniejszej skali. Wyobraźmy sobie model klasy 11B, taki jak nasz polski „Bielik”. W pełnym formacie BF16 jego użycie na karcie z 24 GB VRAM byłoby praktycznie niemożliwe bez stratnej kwantyzacji. Dzięki bezstratnej kompresji DFloat11 jego rozmiar spada o ~30%, co sprawia, że bez problemu zmieści się na karcie takiej jak RTX 3090 czy 4090. To otwiera drzwi do korzystania z wysokiej jakości modeli lokalnie, bez żadnych kompromisów w dokładności, dla znacznie szerszego grona użytkowników.

Podsumowanie

Praca nad DFloat11 to dla mnie olbrzymi przełom w AI. Nie musimy godzić się na kompromis między wydajnością a dokładnością. Możliwe jest inteligentne zredukowanie zapotrzebowania na zasoby bez poświęcania jakości, która jest fundamentem użyteczności tych modeli. To krok w stronę demokratyzacji dostępu do najpotężniejszych modeli AI, czyniąc je bardziej dostępnymi dla badaczy, mniejszych firm i entuzjastów, którzy nie dysponują nieograniczonymi budżetami na sprzęt.

Osobiście liczę też, że mistrzowie optymalizacji treningu, tacy jak zespół unsloth.ai, wykorzystają ten format w swoich metodach dostrajania modeli. Połączenie ich technik z DFloat11 mogłoby jeszcze bardziej obniżyć próg wejścia do tworzenia własnych, wyspecjalizowanych modeli, co byłoby kolejnym wielkim krokiem naprzód.


Źródło:

  • Zhang, T., Sui, Y., Zhong, S., Chaudhary, V., Hu, X., & Shrivastava, A. (2025). 70% Size, 100% Accuracy: Lossless LLM Compression for Efficient GPU Inference via Dynamic-Length Float. arXiv preprint arXiv:2504.11651. Dostępne na: https://arxiv.org/abs/2504.11651.

Dodaj komentarz

19 + 1 =

BLOG TECHNOLOGICZNY Gadzety360.pl
Przegląd prywatności

Ta strona korzysta z ciasteczek, aby zapewnić Ci najlepszą możliwą obsługę. Informacje o ciasteczkach są przechowywane w przeglądarce i wykonują funkcje takie jak rozpoznawanie Cię po powrocie na naszą stronę internetową i pomaganie naszemu zespołowi w zrozumieniu, które sekcje witryny są dla Ciebie najbardziej interesujące i przydatne.