Czym jest kwantyzacja modeli językowych?

Jest to uproszczenie modelu poprzez zaokrąglenia do mniej dokładnych wartości niż rzeczywiste. A przez to przechowywanie ich za pomocą mniejszych komórek pamięci (na przykład z Float32 do Float 16). Dzięki temu możliwe jest z uruchomienie modelu na słabszym sprzęcie.

A po co to komu?

Większość dzisiejszych modeli językowych wymaga naprawdę mocnego sprzętu – pokroju 64 GB RAM lub więcej i do tego mocnych procesorów graficznych (zobacz tutaj). A umówmy się, większość komputerów nie posiada takich specyfikacji. Stąd zaczęto kwantyzować modele.

Przykład kwantyzacji 2-bitowej

Załóżmy, że mamy pięć wag:

Pierwszą rzeczą którą musimy zrobić jest normalizacja – czyli przedstawienie tych wszystkich wag w zakresie od 0 do 1. Służy do tego formuła:

\text{znormalizowana wartość} = \frac{\text{waga} - \text{najmniejsza waga}}{\text{największa waga} - \text{najmniejsza waga}}

no to lecimy:

0.1  => (0.1 - (-0.4)) / (0.7 - (-0.4)) = 0.5
-0.4 => (-0.4 - (-0.4)) / (0.7 - (-0.4)) = 0
0.7  => (0.7 - (-0.4)) / (0.7 - (-0.4)) = 1
-0.2 => (-0.2 - (-0.4)) / (0.7 - (-0.4)) = 0.2
0.3  => (0.3 - (-0.4)) / (0.7 - (-0.4)) = 0.636

Następnym krokiem będzie wyznaczenie możliwych wartości wag. Z racji tego, że za pomocą 2 bitów można zapisać 4 wartości, to dzielimy sobie nasz przedział od 0 do 1 na cztery:

0 
1/3 (około 0.333)
2/3 (około 0.666)
1

Ostatnią rzeczą do zrobienia będzie zaokrąglenie do najbliższego poziomu:

0.5   => 2/3 (najbliższy poziom to 0.666)
0     => 0
1     => 1
0.2   => 1/3 (najbliższy poziom to 0.333)
0.636 => 2/3 (najbliższy poziom to 0.666)

Warto zajrzeć

  1. https://www.youtube.com/watch?v=srZfFfIBzyE&

Pozostaw komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *