gik|iewicz

szukaj
Uruchomienie modelu LLM na mikrokontrolerze za 8 dolarów

Uruchomienie modelu LLM na mikrokontrolerze za 8 dolarów

Mikrokontroler ESP32-S3 za 8 dolarów uruchomił model językowy z 28,9 miliona parametrów w pełni offline. Twórca o pseudonimie slvDev udowodnił, że generowanie tekstu bez chmury jest możliwe na sprzęcie, który mieści się w kieszeni. Projekt bazuje na pracy Andreja Karpathego nad llama2.c oraz technice Per-Layer Embeddings opracowanej przez Google.

TL;DR: Programista slvDev zmusił mikrokontroler ESP32-S3 (koszt 8 USD, czyli ok. 32 zł) do uruchomienia modelu LLM z 28,9 mln parametrów. Urządzenie generuje tekst w tempie około 9,5 tokenu na sekundę, czytając wagi bezpośrednio z pamięci flash bez dostępu do internetu. To dowód na to, że tania lokalna sztuczna inteligencja staje się fizyczną rzeczywistością.

Jak model LLM działa na mikrokontrolerze ESP32-S3 za 8 dolarów?

Uruchomienie modelu LLM na mikrokontrolerze ESP32-S3 za 8 dolarów wymagało ominięcia podstawowego ograniczenia sprzętowego, jakim jest zaledwie 512 KB pamięci SRAM. Zamiast ładować całą architekturę do pamięci RAM, system opiera się na technice Per-Layer Embeddings opracowanej przez Google. Pozwala ona na przechowywanie poszczególnych warstw wag bezpośrednio w pamięci flash urządzenia. W rezultacie procesor czyta dane sekwencyjnie podczas generowania każdego kolejnego tokenu. To rozwiązanie problemu z ograniczoną pamięcią operacyjną.

Kluczowy wniosek: Zastosowanie technologii Per-Layer Embeddings na chipie za 8 USD (ok. 32 zł) udowadnia, że urządzenia IoT mogą przetwarzać język naturalny całkowicie offline, co eliminuje koszty utrzymania serwerów chmurowych dla prostych zadań tekstowych (Brian Roemmele, X).

Zatem proces generowania tekstu odbywa się całkowicie offline, bez jakiejkolwiek komunikacji z serwerami chmurowymi. Sam model został wytrenowany na zbiorze danych TinyStories, co umożliwia mu płynne tworzenie krótkich, spójnych opowiadań w języku angielskim. Projekt ewoluował z wcześniejszych eksperymentów, takich jak kod llama2.c autorstwa Andreja Karpathego. Co więcej, zastosowana technologia pozwala na przesunięcie obliczeń z drogich procesorów graficznych do tanich układów wbudowanych. To udowadnia, że lokalna sztuczna inteligencja staje się fizyczną rzeczywistością.

Jakie parametry sprzętowe ma ten tani mikrokontroler AI?

Koszty całego przedsięwzięcia są zaskakująco niskie, ponieważ mikrokontroler ESP32-S3 kosztuje zaledwie 8 USD (ok. 32 zł). Mimo tak przystępnej ceny układ oferuje architekturę wystarczającą do obsługi skwantyzowanego modelu językowego. Kluczowym wyzwaniem pozostaje jednak bardzo ograniczona przestrzeń pamięci operacyjnej wynosząca 512 KB SRAM. Osiągnięcie płynnego działania wymagało zastosowania agresywnej czterobitowej kwantyzacji całej struktury.

Wcześniejsze eksperymenty z 2024 roku przeprowadzane przez Dave’a Bennetta polegały na załadowaniu znacznie mniejszego modelu (260 tysięcy parametrów, około 1 MB danych) do pamięci PSRAM. Uzyskano wtedy prędkość 19 tokenów na sekundę. To podejście nie sprawdza się jednak przy większych strukturach. Ponadto obecny projekt udowadnia, że modele 100-krotnie większe niż te z 2023 roku mogą działać na tym samym sprzęcie. Poniższa tabela przedstawia najważniejsze parametry techniczne tego rozwiązania:

KomponentSpecyfikacja w projekcie ESP32-S3
Ceny układu8 USD (ok. 32 zł)
Pamięć operacyjna (SRAM)512 KB
Liczba parametrów LLM28,9 miliona
Prędkość generowania tekstuok. 9,5 tokenu na sekundę
Dokładność kwantyzacji4 bity
Zbiór treningowyTinyStories

Czym jest technologia Per-Layer Embeddings w praktyce?

Technologia Per-Layer Embeddings pozwala na przechowywanie sieci neuronowej w pamięci flash zamiast w pamięci RAM. Przede wszystkim zmienia to architekturę obliczeniową urządzeń wbudowanych o bardzo małych zasobach. Model podzielony jest na pojedyncze warstwy. Procesor pobiera dane z pamięci stałej tylko wtedy, gdy są mu niezbędne do wygenerowania kolejnego elementu tekstu. Innymi słowy, system odczytuje wagi bezpośrednio z nośnika pamięci masowej.

Otóż taka metoda okazała się niezbędna, ponieważ architektura ESP32-S3 nie posiada wystarczającej pamięci operacyjnej do załadowania całego modelu 28,9 mln parametrów naraz. Choć odczyt z pamięci flash jest powolniejszy, zastosowanie czterobitowej kwantyzacji znacznie zmniejsza ilość przesyłanych danych. W rezultacie mikrokontroler jest w stanie przetwarzać tekst w tempie około 9,5 tokenu na sekundę. Podobne optymalizacje są kluczowe przy wdrażaniu rozwiązań typu edge AI. Zamiast budować drogie klastry, można wykorzystać gotowe, tanie komponenty. Podobne podejście do maksymalnego zmniejszania modelu opisuje artykuł Wytrenuj własny model LLM od zera, gdzie skupiamy się na efektywnym zarządzaniu zasobami obliczeniowymi.

Dlaczego generowanie tekstu offline na ESP32 jest trudne?

Największym wąskim gardłem w generowaniu tekstu offline na mikrokontrolerach jest fizyka pamięci flash. Aby wygenerować jeden token, procesor musi odczytać z pamięci całkowity rozmiar modelu. W przypadku 28,9 miliona parametrów skwantyzowanych do czterech bitów oznacza to konieczność przesyłania ogromnej ilości danych dla każdej wygenerowanej litery lub słowa. Zatem prędkość obliczeń zależy bezpośrednio od przepustowości pamięci stałej, a nie tylko od taktowania procesora. To poważne ograniczenie architektoniczne.

Mimo to programiści znaleźli sposób na obejście tego problemu poprzez płynne buforowanie danych z pamięci flash. Wcześniejsze próby z mniejszymi sieciami neuronowymi pozwalały na ładowanie całych struktur do pamięci PSRAM, co gwarantowało bardzo szybki odczyt. Jednakże podejście to nie skaluje się dla większych modeli językowych. Każde powiększenie sieci wymaga odczytu większej ilości bajtów przy każdym pojedynczym tokenie. Dlatego technika Per-Layer Embeddings jest obecnie optymalnym rozwiązaniem dla sprzętu z ograniczonym budżetem pamięciowym. Pozwala ona na załadowanie do pamięci operacyjnej tylko aktywnej warstwy sieci neuronowej. Więcej o zarządzaniu przepustowością podczas inferencji LLM przeczytasz w tekście DSpark: Speculative decoding accelerates LLM inference pdf.

Jak szybko działa LLM z 28,9 mln parametrów na tanim sprzęcie?

Model językowy uruchomiony na mikrokontrolerze ESP32-S3 osiąga prędkość około 9,5 tokenu na sekundę. Oznacza to, że urządzenie jest w stanie wygenerować krótkie, spójne opowiadanie w ciągu zaledwie kilku sekund. Wynik ten jest imponujący, biorąc pod uwagę fakt, że cały proces obliczeniowy odbywa się na chipie za 8 dolarów bez jakiejkolwiek pomocy zewnętrznych serwerów. Taka wydajność jest wystarczająca do płynnej interakcji z użytkownikiem w prostych scenariuszach tekstowych.

Co więcej, zastosowana technologia czterobitowej kwantyzacji bardzo mocno redukuje objętość danych. Zbiór treningowy TinyStories zapewnia, że sieć posiada odpowiednią wiedzę do tworzenia zrozumiałych zdań mimo drastycznego zmniejszenia precyzji obliczeń. Z perspektywy inżynierii jest to ogromny sukces optymalizacyjny. Projekt udowadnia, że model posiadający około jednej czwartej parametrów pierwszej wersji ChatGPT (która miała 117 milionów parametrów) może działać na sprzęcie z kategorii edge computing. Na przykład systemy wbudowane w inteligentne domy zyskują możliwość samodzielnego przetwarzania języka naturalnego. Bardziej zaawansowane metody akceleracji inferencji omawiamy również w artykule MegaTrain: Pełnoprecyzyjne trenowanie modeli LLM o ponad 100 miliardach parametrów na pojedynczym GPU. To bardzo ważny krok dla lokalnej sztucznej inteligencji.

Jak technologia Per-Layer Embeddings wpływa na branżę IoT?

Brian Roemmele wskazuje, że projekt ESP32-S3 autorstwa slvDev udowadnia możliwość budowy w pełni samowystarczalnych urządzeń sztucznej inteligencji za ułamek ceny standardowych rozwiązań. Ponadto zmienia to całkowicie dotychczasowy model biznesowy Internetu Rzeczy. Przede wszystkim klasyczne urządzenia IoT przesyłały wszystkie dane do chmury w celu analizy. Takie podejście generowało ogromne koszty infrastrukturalne. Otóż mikrokontroler ESP32-S3 z wbudowanym modelem 28,9 mln parametrów przetwarza informacje lokalnie.

W rezultacie inżynierowie mogą projektować inteligentne czujniki pracujące w środowiskach bez dostępu do sieci. Co więcej, opóźnienia komunikacyjne przestają istnieć. System generuje tekst natychmiast, co opisuje portal Startup Fortune.

Zatem lokalna sztuczna inteligencja eliminuje największą bolączkę internetu rzeczy. Urządzenia przestają być uzależnione od stabilnego połączenia WiFi. Przetwarzanie mowy czy tekstu odbywa się bezpośrednio na układzie docelowym. To upraszcza architekturę całych systemów.

Jakie są realne możliwości modelu wytrenowanego na zbiorze TinyStories?

Model językowy uruchomiony na ESP32-S3 generuje tekst w tempie około 9,5 tokenu na sekundę, co pozwala na płynne tworzenie krótkich, spójnych opowiadań w języku angielskim. Zbiór treningowy TinyStories wymusza jednak ograniczenie się do bardzo prostych form literackich. Sieć posiada 28,9 miliona parametrów, co odpowiada około jednej czwartej pojemności pierwszej wersji ChatGPT.

Brian Roemmele podkreśla na swoim profilu X, że ten tani mikrokontroler to w pełni samowystarczalny komputer AI. Choć możliwości generowania tekstu są ograniczone do podstawowych historii, sam fakt lokalnego wnioskowania stanowi technologiczny sukces. Należy pamiętać o zastosowaniu agresywnej czterobitowej kwantyzacji. Zatem precyzja obliczeń uległa znacznemu zmniejszeniu. Mimo to sieć poprawnie łączy słowa w logiczne zdania. Model czyta wagi bezpośrednio z wolnej pamięci flash układu.

Dlatego możliwości praktyczne tego rozwiązania ograniczają się do prostych interakcji. Mikrokontroler nie zastąpi ChatGPT w skomplikowanych zadaniach programistycznych. Niemniej jednak świetnie sprawdzi się w systemach wbudowanych wymagających podstawowej logiki językowej. Szczegóły dotyczące optymalizacji inferencji z użyciem mniejszych struktur opisuje SingularityByte AI Magazine.

Czego potrzebujesz, aby uruchomić LLM na własnym mikrokontrolerze?

Uruchomienie modelu 28,9 mln parametrów na mikrokontrolerze ESP32-S3 wymaga zaledwie 8 USD (ok. 32 zł) na zakup samego układu oraz dostępu do otwartego kodu źródłowego. Projekt bazuje na kodzie llama2.c autorstwa Andreja Karpathego oraz technice Per-Layer Embeddings opracowanej przez Google. Cały proces instalacji został dokładnie udokumentowany przez twórcę o pseudonimie slvDev.

Przede wszystkim musisz zaopatrzyć się w odpowiedni sprzęt fizyczny. Poniżej znajduje się lista komponentów i zasobów niezbędnych do odtworzenia tego eksperymentu z lokalną sztuczną inteligencją:

  • Mikrokontroler ESP32-S3 (koszt około 8 USD, czyli ok. 32 zł)
  • Pamięć flash o wystarczającej pojemności do zapisu skwantyzowanego modelu
  • Środowisko programistyczne obsługujące programowanie układów wbudowanych
  • Model LLM poddany czterobitowej kwantyzacji (np. bazujący na TinyStories)
  • Kod źródłowy projektu llama2.c dostosowany do architektury ESP
  • Ekran LCD podłączany przez interfejs SPI do wyświetlania generowanego tekstu
  • Zestaw przewodów połączeniowych do zbudowania pełnego obwodu
  • Dostęp do dokumentacji technicznej Per-Layer Embeddings od Google

Otóż przygotowanie sprzętu to dopiero początek wyzwania. Należy odpowiednio skompilować kod w języku C. Zatem wymagana jest podstawowa znajomość programowania mikrokontrolerów. Zamiast korzystać z gotowych bibliotek, optymalizujesz zużycie pamięci operacyjnej wynoszącej zaledwie 512 KB SRAM. Dokładne instrukcje krok po kroku omawia portal PromptZone, podając konkretne parametry konfiguracyjne.

Często zadawane pytania

Ile pamięci zajmuje model z 28,9 miliona parametrów na ESP32-S3?

Po zastosowaniu czterobitowej kwantyzacji cały model zajmuje znacznie mniej miejsca niż w oryginalnym formacie. Zmieści się w pamięci flash taniego układu za 8 dolarów, ponieważ system nie ładuje całej struktury do ograniczonych 512 KB pamięci SRAM.

Czy mikrokontroler za 8 dolarów wymaga połączenia z internetem do generowania tekstu?

Nie, proces generowania odbywa się w pełni offline. Mikrokontroler czyta wagi sieci neuronowej bezpośrednio z lokalnej pamięci flash, osiągając prędkość około 9,5 tokenu na sekundę bez jakiejkolwiek komunikacji z chmurą.

Jaką wydajność zapewnia układ ESP32-S3 przy wnioskowaniu LLM?

Układ osiąga prędkość około 9,5 tokenu na sekundę, co pozwala na wygenerowanie krótkiego opowiadania w kilka sekund. Wynik ten jest mniejszy niż 19 tok/s uzyskane przez Dave’a Bennetta dla modelu 260 tysięcy parametrów, jednakże obecna sieć jest sto razy większa.

Jaki zbiór danych został użyty do wytrenowania modelu dla ESP32-S3?

Zbiór TinyStories wymusza ograniczenie możliwości układu do generowania bardzo prostych, spójnych historyjek, ale gwarantuje płynne działanie sieci z 28,9 miliona parametrów na sprzęcie za 8 dolarów.

Podsumowanie

Projekt uruchomienia modelu LLM z 28,9 mln parametrów na mikrokontrolerze ESP32-S3 udowadnia, że lokalna sztuczna inteligencja staje się fizyczną rzeczywistością. Przede wszystkim technologia Per-Layer Embeddings pozwala na drastyczne przesunięcie obliczeń w stronę urządzeń brzegowych. Zatem układ za 8 USD (ok. 32 zł) generuje tekst całkowicie offline. Co więcej, prędkość na poziomie 9,5 tokenu na sekundę wystarcza do podstawowej interakcji. Ponadto eliminacja konieczności połączenia z chmurą otwiera nowe możliwości dla branży IoT. Zatem sprawdź również inne metody optymalizacji modeli językowych. Przeczytaj artykuł Wytrenuj własny model LLM od zera oraz DSpark: Speculative decoding accelerates LLM inference pdf. Więcej informacji o trenowaniu na ogromnych klastrach znajdziesz w tekście 2 petabajty pamięci flash Huawei i trenowanie LLM w Norwegii. Zbuduj własny, niezależny system AI już dziś.