BlogModele

Sprawdzanie jakości modelu po kwantyzacji

Zanim skwantyzowany model zastąpi oryginał, powtórz te same testy zadania, na podstawie których zatwierdziłeś oryginał, i dodaj testy tego, co kwantyzacja psuje najczęściej: ustrukturyzowane odpowiedzi, najdłuższe wejścia, rzadkie kategorie i języki oraz reguły zachowania, których model musi przestrzegać. Zmierz wydajność serwowania przy docelowym opóźnieniu na własnym ruchu. Zmieniaj model tylko wtedy, gdy jakość utrzymuje się w każdym ważnym wycinku, a oszczędność widać jako mniej GPU albo więcej zapytań na GPU.

Zaktualizowano

Co zmienia kwantyzacja

Kwantyzacja zapisuje wagi, a czasem też aktywacje lub KV cache, na mniejszej liczbie bitów, żeby zmniejszyć zużycie pamięci, starając się przy tym zachować dokładność. Dokumentacja Hugging Face Transformers wymienia wiele metod: niektóre wymagają danych kalibracyjnych, inne kwantyzują w locie, a obsługa zależy od sprzętu. vLLM publikuje tabelę zgodności według generacji GPU, więc format działający na jednej karcie może nie działać na innej.

Kurtic i współautorzy przeprowadzili ponad 500 000 ewaluacji na rodzinie Llama 3.1. Wyszło im, że 8-bitowy format zmiennoprzecinkowy dla wag i aktywacji jest praktycznie bezstratny, dobrze dostrojone 8-bitowe formaty całkowitoliczbowe tracą od 1 do 3 procent, a 4-bitowa kwantyzacja samych wag jest bardziej konkurencyjna, niż się spodziewano. To średnie z benchmarków akademickich i zadań praktycznych dla jednej rodziny modeli. Twój model, zadanie i format mogą zachowywać się inaczej, zwłaszcza na brzegach.

Testy do powtórzenia

Uruchom oryginał i model skwantyzowany obok siebie na identycznych wejściach, z tymi samymi promptami, ustawieniami dekodowania i kodem oceniającym.

  • Odłożony zbiór zadania z pierwotnego zatwierdzenia, oceniany dla każdej klasy i każdego krytycznego wycinka, a nie tylko ogółem
  • Ustrukturyzowane odpowiedzi: odsetek poprawnie parsowanych wyników, zgodność ze schematem i argumenty wywołań narzędzi, gdzie jeden zły token psuje wynik
  • Najdłuższe prawdziwe wejścia, zwłaszcza jeśli kwantyzowany jest też KV cache
  • Rzadkie kategorie i mniej popularne języki, w których drobne przesunięcia prawdopodobieństw zmieniają odpowiedź
  • Testy zachowania, które robisz dla oryginału, na przykład odmowy i pierwszeństwo instrukcji
  • Test zgodności: odsetek przypadków, w których oba modele dają tę samą odpowiedź, przy czym każdą rozbieżność w krytycznym wycinku czyta człowiek

Publiczne benchmarki odsiewają, decydują twoje testy

lm-evaluation-harness od EleutherAI uruchamia dziesiątki standardowych benchmarków i może korzystać z vLLM jako backendu, więc porównanie oryginalnego i skwantyzowanego checkpointu na kilku z nich jest tanie. Wyraźny spadek traktuj jako powód, by wcześnie przerwać. Brak spadku traktuj jako zgodę na uruchomienie własnych testów, a nie jako zatwierdzenie. Standardowe benchmarki rzadko zawierają twoje formaty dokumentów, kategorie czy schemat odpowiedzi.

Przykładowe porównanie z kosztem na GPU

Kwantyzacja się opłaca tylko wtedy, gdy zmienia liczbę GPU albo to, ile każde z nich obsługuje przy docelowym opóźnieniu. Kurtic i współautorzy stwierdzili, że najbardziej opłacalny format zależał od wdrożenia: 4-bitowe wagi przy serwowaniu synchronicznym, 8 bitów dla wag i aktywacji przy ciągłym batchowaniu. Mierz, nie zakładaj. Hipotetyczne zestawienie dla modelu do ekstrakcji:

  • Oryginał, 16 bitów, dwa GPU na replikę: F1 dla pól 0,871, poprawny JSON 99,9 procent, 6 zapytań na sekundę w ramach celu, czyli 3 na GPU
  • 8 bitów dla wag i aktywacji, jedno GPU na replikę: F1 dla pól 0,868, poprawny JSON 99,8 procent, 4 zapytania na sekundę w ramach celu, czyli 4 na GPU
  • Krytyczny wycinek, dane bankowe na zeskanowanych fakturach: w obu przypadkach 97 na 100 poprawnie

Pojemność na GPU rośnie o jedną trzecią, krytyczny wycinek się nie zmienia, a ogólny spadek F1 o 0,003 mieści się w tolerancji 0,005 uzgodnionej przed testem. Według tych kryteriów skwantyzowany model trafia do trybu cienia na ruchu produkcyjnym, a oryginał czeka gotowy do wycofania zmiany. Gdyby przy danych bankowych pomylił się choćby w dwóch przypadkach więcej, odpowiedź brzmiałaby nie, niezależnie od oszczędności.

Kiedy porównanie trzeba powtórzyć

Skwantyzowany checkpoint to nowy model. Powtarzaj porównanie po każdej nowej wersji dostrojonego modelu, po zmianie metody kwantyzacji lub danych kalibracyjnych oraz po aktualizacji serwera inferencji lub jego kerneli, bo vLLM pozwala wybierać backendy kerneli dla skwantyzowanych warstw. Wersjonuj razem zbiór testowy, kod oceniający i wyniki, żeby kolejne porównanie korzystało z tego samego zestawu, zamiast budować go od nowa.

Pytania

Czy 8-bitowa kwantyzacja zmiennoprzecinkowa jest zawsze bezpieczna?

Kurtic i współautorzy w badaniu, które sami określają jako najobszerniejsze tego typu, opisują ją jako praktycznie bezstratną dla rodziny Llama 3.1. To mocny dowód, ale nie dotyczy twojego modelu ani zadania, a obsługa FP8 zależy od generacji GPU. Porównanie i tak zrób. Zwykle szybko potwierdza wynik.

Czy kwantyzować także KV cache?

To zwalnia pamięć na więcej równoczesnych lub dłuższych zapytań, a vLLM oferuje kilka typów danych KV cache o niższej precyzji. Traktuj to jako osobną zmianę z osobnym przebiegiem testów, nastawionym na najdłuższe wejścia, żeby wiedzieć, która zmiana spowodowała ewentualną stratę.

Kto powinien zatwierdzić skwantyzowany model?

Ta sama osoba, która zatwierdziła oryginał, według tych samych kryteriów akceptacji. Cloudsail może przeprowadzić porównanie obu modeli w twoim środowisku i przekazać zbiór testowy oraz skrypty, ale decyzja zostaje po stronie twojego zespołu.

Porozmawiaj z inżynierem

Przyjdź z jednym zadaniem, które chcesz usprawnić. Rozmowa trwa 30 minut i nie wymaga dostępu do twoich systemów ani danych.

Rezerwacja odbywa się w Kalendarzu Google.

Wolisz najpierw napisać? Zostaw adres e-mail i kilka zdań, a odpowiemy, proponując terminy.

Przycisk przygotowuje e-mail w twoim własnym programie pocztowym, a wysyłasz go samodzielnie. Polityka prywatności (wersja robocza)