FreeToken kontra Ollama, czyli jak naprawiono największy problem lokalnej sztucznej inteligencji. Artykuł na podstawie materiału kanału Better Stack.
Zacznijmy od obietnicy, bo jest bardzo śmiała. Modele typu mieszanka ekspertów mają działać trzy razy szybciej niż na Ollamie, i to na dokładnie tym samym sprzęcie. Brzmi zbyt pięknie, więc autor postanowił sprawdzić to na własnej stacji roboczej.
Najpierw wyjaśnijmy, czym w ogóle jest FreeToken. To otwartoźródłowy silnik wnioskowania. Możesz o nim myśleć jak o alternatywie dla Lamy c p p albo Ollamy. Różnica polega na tym, że został zbudowany konkretnie do obsługi modeli typu mieszanka ekspertów na zwykłym, domowym sprzęcie. Stoi za nim zespół badaczy z Berkeley i z Uniwersytetu Teksańskiego, a całość opiera się na ich niedawno opublikowanej pracy naukowej.
Teraz sedno sprawy, czyli na czym polega problem.
Weźmy model DeepSeek V cztery Flash. Ma dwieście osiemdziesiąt cztery miliardy parametrów, ale na jeden token aktywuje tylko trzynaście miliardów. Te trzynaście miliardów spokojnie zmieściłoby się na karcie graficznej. Tyle że to przyspiesza jedynie same obliczenia. Pozostaje problem pamięci, bo wszystkie dwieście osiemdziesiąt cztery miliardy parametrów muszą gdzieś leżeć.
Do tego dochodzi druga trudność. Nie wiadomo z góry, których ekspertów model będzie potrzebował przy następnym tokenie. Więc cały model musi siedzieć w zwykłej pamięci operacyjnej, a karta graficzna musi w locie ściągać tych ekspertów, których akurat wybrano. Ściąga ich przez magistralę P C I Express, która łączy kartę z resztą komputera.
Jak radzą sobie z tym dotychczasowe narzędzia? Lama c p p przy ładowaniu przypina jedne warstwy modelu na stałe do karty graficznej, a inne do procesora. I tu jest pies pogrzebany, bo wybór ekspertów zmienia się przy każdym pojedynczym tokenie. Taki sztywny podział nie trafia w większość ruchu i wszystko po prostu zwalnia.
Pomysł FreeTokena jest inny. Twórcy uznali, że to nie jest problem rozmieszczenia, tylko problem harmonogramu.
Zamiast rozmieszczać części modelu na stałe, FreeToken traktuje pamięć karty graficznej jak pamięć podręczną. Pełny model zawsze leży w zwykłej pamięci operacyjnej i to on jest źródłem prawdy. Karta graficzna trzyma pod ręką wyłącznie najczęściej używanych ekspertów.
Już samo to bardzo pomaga, bo eksperci są bardzo lokalni. Token po tokenie mechanizm wyboru sięga w dużej mierze po tych samych ekspertów. Dzięki temu większość zapytań trafia w pamięć podręczną.
Zostają jednak dwa trudne momenty i oba trzeba było osobno rozwiązać.
Moment pierwszy to wysłanie polecenia, fachowo nazywane prefill. Długie polecenie dotyka niemal wszystkich ekspertów naraz. Cała oszczędność wtedy znika i silnik musi przesłać z pamięci operacyjnej praktycznie cały model. Rozwiązaniem jest podwójne buforowanie. Kiedy karta graficzna przelicza bieżącą warstwę, w tle przesyłani są już eksperci z warstwy następnej. Obliczenia i transfer dzieją się równocześnie, a nie jedno po drugim, więc nie siedzisz i nie czekasz.
Moment drugi to generowanie odpowiedzi, kiedy pamięć podręczna czasem chybia. Chybienie oznacza, że model prosi o eksperta, którego akurat nie ma na karcie. Wtedy są dwie możliwości. Można ściągnąć tego eksperta z pamięci operacyjnej na kartę graficzną. Albo można policzyć wszystko od razu na procesorze, tam gdzie dane i tak już leżą. Żadna z tych opcji nie jest zawsze lepsza. Wszystko zależy od tego, co w twoim komputerze jest szybsze: magistrala P C I Express czy pamięć operacyjna.
I tu wchodzi pomysł nazwany polityką Q star. FreeToken mierzy obie te przepustowości na twojej maszynie i dzieli każdą paczkę brakujących ekspertów między kartę a procesor. Dobiera takie proporcje, które na twoim konkretnym sprzęcie skończą się najszybciej. Dzięki temu laptop z wąską magistralą i komputer stacjonarny z szybką pamięcią dostają zupełnie różne podziały, całkowicie automatycznie, bez żadnego ustawiania.
Jest jeszcze jeden dodatek, czyli własny format zapisu modelu. Model ładuje się prosto z dysku dokładnie w takim układzie pamięci, jakiego potrzebuje silnik. Pomijany jest krok przepakowywania, który przy starcie robi większość narzędzi. Dlatego właśnie ładowanie wielkiego modelu nie trwa tutaj wieczność.
Przejdźmy do testu na żywo, bo teoria to jedno, a wyniki to drugie.
Sprzęt: karta graficzna R T X pięć tysięcy dziewięćdziesiąt z trzydziestoma dwoma gigabajtami własnej pamięci, oraz sześćdziesiąt cztery gigabajty pamięci operacyjnej. Model: Qwen trzy i sześć, trzydzieści pięć miliardów parametrów, w wersji ośmiobitowej, co daje około trzydziestu ośmiu gigabajtów. Czyli sześć gigabajtów ponad to, co mieści karta.
I cała różnica między tymi dwoma narzędziami sprowadza się do jednego pytania: czy model mieści się w pamięci karty, czy nie.
Zobaczmy, jak każde z nich radzi sobie z nadmiarem. Ollama dzieli model po warstwach. Około siedemdziesięciu procent zostaje na karcie, a trzydzieści procent ląduje na procesorze. Brzmi rozsądnie, ale każdy token musi przejść przez wszystkie warstwy. Czyli każdy token robi objazd przez wolny procesor. FreeToken robi coś przeciwnego. Trzyma wszystkie obliczenia na karcie graficznej, a brakujących ekspertów dosyła w locie.
Teraz wyniki prawdziwego zadania programistycznego. Zadanie brzmiało: dopisz testy do przykładowego projektu w Pythonie. Oba narzędzia były podłączone do tej samej konfiguracji.
Ollama skończyła zadanie w czternaście minut i dwadzieścia sekund, pisząc z prędkością około pięćdziesięciu ośmiu tokenów na sekundę. FreeToken skończył to samo zadanie w cztery minuty i czterdzieści sekund, z prędkością stu trzydziestu dwóch tokenów na sekundę. Obietnica trzykrotnego przyspieszenia w pełni się potwierdziła.
Przy okazji autor sprawdził jeszcze jedną ciekawą rzecz. FreeToken pozwala zmienić rozmiar pamięci podręcznej na działającym serwerze, w około sekundę, bez restartu. Autor zmniejszał ją więc krok po kroku. Zejście z pięćdziesięciu ośmiu procent modelu do czterdziestu kosztowało zaledwie siedem procent prędkości. Ale poniżej dwudziestu procent prędkość zapada się gwałtownie, bo magistrala jest już wtedy kompletnie przeciążona. To bardzo ładny dowód na to, że zwykle mały wycinek najgorętszych ekspertów wykonuje niemal całą robotę.
Teraz druga strona medalu, czyli kiedy wygrywa Ollama. Bo FreeToken nie jest cudownym lekiem.
Autor przetestował też wersję czterobitową modelu, która mieści się w pamięci karty z zapasem. I wynik się odwrócił. Ollama osiągnęła dwieście czterdzieści tokenów na sekundę, a FreeToken dwieście dwadzieścia pięć. Ollama po prostu ładuje wszystko na kartę i wygrywa. FreeToken nie ma w takiej sytuacji czego przesyłać, więc jego cała architektura staje się już tylko dodatkowym narzutem.
Wniosek jest prosty. Jeśli model wygodnie mieści się na karcie, wybierz Ollamę. Przewaga FreeTokena pojawia się dopiero wtedy, gdy przekroczysz próg pamięci swojej karty graficznej.
Kilka słów o aplikacji okienkowej. Wszystkie testy autor przeprowadził w wersji uruchamianej z wiersza poleceń, ale FreeToken ma też przyjazną aplikację okienkową. Na razie tylko dla Windowsa i Linuksa. Co ta aplikacja potrafi? Pokazuje przejrzysty przegląd tego, które modele twój komputer jest w stanie uruchomić. Przy próbie uruchomienia DeepSeeka od razu powiedziała wprost, że nawet ta mocna stacja robocza jest za słaba na tak duży model. Czego natomiast nie potrafi? W teście z modelem Qwen nie umiała wejść do folderu projektu ani zmieniać plików. Aplikacja jest więc na razie mocno ograniczona i daje głównie podgląd tego, co dzieje się pod maską.
Podsumujmy. Największa zaleta FreeTokena to zdolność przystosowywania się. Narzędzie samo bada twój komputer i dobiera lepszą strategię przesyłania danych pod twój konkretny sprzęt. Ale pamiętaj o dwóch warunkach. Po pierwsze, działa to wyłącznie dla modeli typu mieszanka ekspertów. Po drugie, ma sens tylko wtedy, gdy ci eksperci nie mieszczą się wygodnie w pamięci karty graficznej. I trzeba uczciwie przyznać, że dla wielu domowych zestawów ten drugi warunek jest akurat spełniony na co dzień.
Link do repozytorium FreeTokena znajdziesz w opisie.