Dyskusja dookoła ogólnodostępnych dużych modeli językowych (Large Language Model z ang.) takich jak ChatGPT czy Gemini – hucznie określonych mianem sztucznej inteligencji – nie przestaje przybierać na sile. Niezależnie od tego czy dotyczy ona ich możliwości, kosztów zarówno finansowych jak i w zasobach naturalnych, a także konsekwencji ich wykorzystywania. LLM-y obsługiwane za pomocą wielkich centrów danych, dokonujące obliczeń w chmurze i należące do technologicznych gigantów nie są jednak jedyną dostępną opcją. Tutaj na scenę wkraczają modele uruchamiane w pełni lokalnie.
Mały ale wariat
Swoją cegiełkę do rozwoju wspomnianej wyżej dziedziny dołożył ostatnio użytkownik slvDev, prezentując na X autorski projekt o nazwie ESP32-AI. Ambitny programista zdołał uruchomić LLM z 28.9 milionami parametrów, w pełni lokalnie, na mikrokontrolerze ESP32-S3. Mowa o płytce, którą na naszym rynku możecie dorwać za niecałe 50 złotych. Konkretny wariant, którego użył Slava S. wyposażony jest w zawrotne 512 KB SRAM, 8 MB PSRAM i niezwykle hojne 16 MB pamięci flash. W jaki sposób zatem udało się zmieścić na nim cały, działający model językowy?
Co do zasady cały LLM powinien znajdować się w najszybszej dostępnej pamięci podręcznej. W przypadku ESP32-S3 jest to 512 KB pamięci SRAM. Jak wskazuje sam slvDev dotychczasowe modele uruchamiane na płytce standardową metodą miały jednak zaledwie 260 tysięcy parametrów. Inspiracją do rozwiązania problemu okazały się być wykorzystywane przez modele z rodziny Google Gemma tzw. Per-Layer Embeddings.
Rozwiązaniem tego problemu jest całkowite zaprzestanie umieszczania modelu w szybkiej pamięci. Większość parametrów modelu językowego znajduje się w tabeli osadzeń, z której model pobiera dane, zamiast je obliczać. Można więc pozostawić tę tabelę zawierającą 25 milionów wierszy w wolnej pamięci flash i pobierać tylko kilka wierszy potrzebnych dla każdego tokenu, czyli około 450 bajtów, podczas gdy niewielka część odpowiedzialna za rzeczywistą pracę pozostaje w szybkiej pamięci. Uruchomienie dużego modelu nie wiąże się wówczas z niemal żadnymi kosztami, ponieważ większość modelu nigdy nie jest ładowana. Po prostu pozostaje on w pamięci flash i jest pobierany po trochu.
slvDev
(Nie)duże możliwości
Nie ma co się jednak oszukiwać, że już wkrótce będziecie mogli zastąpić swoje domowe serwery mikrokontrolerami kupionymi w osiedlowym sklepie z elektroniką. Model trenowany był na zbiorze danych TinyStories i jest zdolny do pisania tylko krótkich, prostych historyjek. Nie można zadawać mu pytań, oczekiwać od niego zdolności kodowania czy prosić go o napisanie wiadomości informującej o zerwaniu. Projekt ma być przede wszystkim dowodem i weryfikacją działania pewnej koncepcji. Najbardziej interesującą jego częścią jest sama architektura i zmieszczenie tak dużego modelu, na tak niewielkiej płytce. Być może jest to wstęp do do kolejnych przełomów w dziedzinie lokalnych LLM-ów. Szczegóły projektu dostępne są na GitHubie autora. Zachęcam was gorąco do zapoznania się z nim w wolnej chwili.











0 komentarzy