AI na urządzeniu · 8 min czytania
Jak model językowy mieści się w telefonie
Lokalne aplikacje AI proszą o zaskakująco dużo miejsca, a powodem nie jest przerost. Zrozumienie, gdzie znikają te gigabajty, tłumaczy też, dlaczego model jest szybki na nowym telefonie, a ociężały na starym — i co właściwie mówi ci nazwa pliku
Q3_K_S .
Model to wielka sterta liczb
Model językowy to zbiór wyuczonych parametrów — wag. Każda jest liczbą, a jest ich miliardy. „2B” w nazwie modelu oznacza mniej więcej dwa miliardy parametrów.
Przechowywana z pełną precyzją każda waga zajmuje 4 bajty. Dwa miliardy wag po 4 bajty to około 8 GB — i to dla jednego z mniejszych modeli. Oto problem w jednym zdaniu: plik jest duży, bo liczb jest mnóstwo i każda przechowywana jest precyzyjnie.
Kwantyzacja: mniej bitów na liczbę
Kwantyzacja przechowuje każdą wagę na mniejszej liczbie bitów. Zamiast 32 bitów na wagę używasz 8, 4 albo 3 — ze współczynnikami skalującymi na blok wag, żeby przybliżenie trzymało się blisko oryginału.
Redukcja rozmiaru jest z grubsza liniowa:
- 32 bity — ~8 GB dla modelu 2B. Pełna precyzja, dla telefonu nie do udźwignięcia.
- 8 bitów — ~2 GB. Bardzo blisko oryginalnej jakości.
- 4 bity — ~1,1 GB. Zwykły złoty środek.
- 3 bity — ~800 MB. Zauważalnie bardziej stratne, wciąż użyteczne.
- 2 bity — jeszcze mniej, a jakość spada gwałtownie.
To kompresja stratna, jak JPEG. Posuń ją dostatecznie daleko, a zobaczysz artefakty — w modelu językowym objawiają się jako mgliste odpowiedzi, powtórzenia albo odpływanie od pytania.
Kwantyzacja nie ogłupia modelu równomiernie. Czyni go mniej precyzyjnym, a nieprecyzyjność ujawnia się najpierw przy najtrudniejszych danych wejściowych.
Jak czytać nazwę pliku
Nazwa taka jak Q4_K_M albo Q3_K_S to przepis, a nie numer wersji:
- Q4 / Q3 — z grubsza ile bitów na wagę.
- _K — schemat „k-quant”, który wydaje swój budżet bitów nierówno, zachowując więcej precyzji tam, gdzie model jest najbardziej wrażliwy.
- _S, _M, _L — mały, średni albo duży w obrębie tego schematu. Większy zachowuje więcej jakości i więcej bajtów.
Zatem Q3_K_S to mały 3-bitowy k-quant: skompresowany agresywnie, wybierany wtedy, gdy zmieszczenie się na urządzeniu liczy się bardziej niż ostatnie kilka procent jakości.
GGUF: pojemnik
GGUF to format pliku, który mieści skwantyzowane wagi plus metadane potrzebne środowisku uruchomieniowemu — tokenizator, architekturę, szablon zapytania. Jeden plik, bez towarzyszącego katalogu konfiguracji.
Dla telefonów ma znaczenie, bo GGUF jest zaprojektowany tak, by dało się go zmapować w pamięci. Zamiast wczytywać 1,7 GB do RAM-u, środowisko uruchomieniowe mapuje plik w swojej przestrzeni adresowej, a system operacyjny sprowadza te fragmenty, które są faktycznie używane. Dlatego model większy niż wolny RAM telefonu wciąż może działać i dlatego pierwsza odpowiedź po otwarciu aplikacji jest wolniejsza od kolejnych — strony są jeszcze sprowadzane.
Dlaczego telefon się grzeje
Wygenerowanie słowa — tokenu — oznacza przepuszczenie wejścia przez te miliardy parametrów. A potem zrobienie tego jeszcze raz dla następnego tokenu. Stuwyrazowa odpowiedź to sto przebiegów.
To ciągła arytmetyka na procesorze albo akceleratorze neuronowym, czyli dokładnie to obciążenie, z którym telefony radzą sobie termicznie najgorzej. Urządzenia zbijają taktowanie, gdy się nagrzeją, więc długie, nieprzerwane generowanie zwalnia w trakcie. Dobrze zrobione aplikacje lokalne rozkładają pracę — rozsuwają zadania, żeby układ mógł ostygnąć — zamiast ustawiać wszystko jedno za drugim.
Dlaczego stare telefony sobie nie radzą
Trzy ograniczenia, wszystkie twarde:
- Przepustowość pamięci. Każdy token oznacza przepuszczenie dużej części wag. Szybkość generowania często ogranicza to, jak szybko da się czytać pamięć, a nie surowa moc obliczeniowa.
- RAM. Mapowanie w pamięci pomaga, ale urządzenie, które i tak jest na styk, będzie stale stronicować, a system może po prostu zabić aplikację.
- Akceleratory. Nowsze układy mają sprzęt przystosowany do tej arytmetyki. Starsze cofają się do rdzeni ogólnego przeznaczenia i działają kilka razy wolniej.
Dlatego lokalne aplikacje AI podają minimalne urządzenie, zamiast próbować obsłużyć wszystko. Poniżej pewnego progu doświadczenie nie jest pogorszone — jest nieużywalne.
Wymiana, na którą się godzisz
Skwantyzowany model wielkości telefonu nie dorówna dużemu modelowi chmurowemu w trudnym rozumowaniu. Do ograniczonego zadania — co znaczy to słowo w tym zdaniu, przetłumacz tę frazę — jest w zupełności wystarczający i przychodzi z trzema właściwościami, których model chmurowy dać nie może: działa bez połączenia, nie kosztuje nic za użycie, a tekst nigdy nie opuszcza urządzenia.
Na tym polega cały układ z AI na urządzeniu. Rezygnujesz z największego możliwego modelu, a dostajesz prywatność, działanie offline i brak liczników.
Jak robi to ClickBook
ClickBook dostarcza skwantyzowany model GGUF i uruchamia go przez llama.cpp na twoim urządzeniu. Na iOS jest wbudowany w aplikację, więc nie ma czego pobierać. Przeczytaj więcej o czytnikach z lokalną AI, albo zobacz, jak działa ClickBook.