{"id":182824,"date":"2026-08-11T04:54:15","date_gmt":"2026-08-11T02:54:15","guid":{"rendered":"https:\/\/prohoster.info\/blog\/novosti-interneta\/yazykovaya-model-s-289-mln-parametrov-zarabotala-na-esp32-s3"},"modified":"2026-08-12T18:21:41","modified_gmt":"2026-08-12T16:21:41","slug":"yazykovaya-model-s-289-mln-parametrov-zarabotala-na-esp32-s3","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pl\/blog\/news\/yazykovaya-model-s-289-mln-parametrov-zarabotala-na-esp32-s3","title":{"rendered":"Model j\u0119zykowy z 28,9 mln parametr\u00f3w dzia\u0142a\u0142 na ESP32-S3","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" style=\"display: block; margin: 0 auto;\" src=\"\/wp-content\/uploads\/2026\/08\/5aa73219999b2228886364ab9430b279.jpg\" \/> <a id=\"memories_button\" title=\"\u015aledzi\u0107\" href=\"#\" rel=\"nofollow\"><i class=\"icon-bell\"><\/i><\/a><br \/>\nProgramista Wjaczes\u0142aw Serbov, dzia\u0142aj\u0105cy pod pseudonimem slvDev, <a href=\"https:\/\/x.com\/slvDev\/status\/2080322138410524737\" rel=\"nofollow\">zademonstrowa\u0142<\/a> w pe\u0142ni lokalne generowanie tekstu na mikrokontrolerze ESP32-S3. Stworzony przez niego model j\u0119zykowy zawiera 28,9 mln parametr\u00f3w i generuje oko\u0142o 9,9 tokena na sekund\u0119, nie korzystaj\u0105c z serwera ani innych zewn\u0119trznych zasob\u00f3w obliczeniowych. Wygenerowane kr\u00f3tkie opowiadania s\u0105 wy\u015bwietlane na pod\u0142\u0105czonym wy\u015bwietlaczu OLED.<\/p>\n<p>&nbsp;<\/p>\n<p>Projekt <a href=\"https:\/\/github.com\/slvDev\/esp32-ai\" rel=\"nofollow\">esp32-ai<\/a> testowany na module ESP32-S3 N16R8, kt\u00f3ry ma 512 KB wbudowanej pami\u0119ci SRAM, 8 MB PSRAM i 16 MB pami\u0119ci flash. Kwaterowany do czterech bit\u00f3w model zajmuje 14,9 MB. W repozytorium opublikowano kod \u017ar\u00f3d\u0142owy \u015brodowiska uruchomieniowego w C, narz\u0119dzia do szkolenia i kwantyzacji modelu, oprogramowanie uk\u0142adowe, testy oraz skrypty do jego \u0142adowania na p\u0142yt\u0119.<\/p>\n<p>&nbsp;<\/p>\n<p>Podane 28,9 mln parametr\u00f3w nie powinno si\u0119 bezpo\u015brednio por\u00f3wnywa\u0107 z liczb\u0105 parametr\u00f3w standardowych LLM dla komputer\u00f3w stacjonarnych. Zgodnie z <a href=\"https:\/\/github.com\/slvDev\/esp32-ai\/blob\/main\/RESULTS.md\" rel=\"nofollow\">szczeg\u00f3\u0142owym raportem autora,<\/a>model sk\u0142ada si\u0119 z g\u0119stej struktury obliczeniowej z oko\u0142o 559 tysi\u0105cami parametr\u00f3w, warstwy wyj\u015bciowej z 3,1 mln parametr\u00f3w oraz tabeli wektorowych reprezentacji warstwowych z oko\u0142o 25 mln parametr\u00f3w. To ostatnie stanowi g\u0142\u00f3wn\u0105 cz\u0119\u015b\u0107 formalnego rozmiaru modelu, ale nie jest przetwarzane w ca\u0142o\u015bci podczas generowania ka\u017cdego tokena.<\/p>\n<p>&nbsp;<\/p>\n<p>Dla pomieszczenia modelu wykorzystano trzy poziomy pami\u0119ci. Najcz\u0119\u015bciej u\u017cywane dane znajduj\u0105 si\u0119 w wewn\u0119trznej SRAM, warstwa wyj\u015bciowa, pami\u0119\u0107 KV i bufor czasowy w PSRAM, za\u015b tabela 25-milionowa pozostaje w pami\u0119ci flash i jest dost\u0119pna poprzez mapowanie w przestrzeni adresowej. Dla ka\u017cdego tokena odczytywane jest jedynie oko\u0142o sze\u015bciu wierszy o \u0142\u0105cznej wielko\u015bci oko\u0142o 450 bajt\u00f3w.<\/p>\n<p>&nbsp;<\/p>\n<p>To urz\u0105dzenie opiera si\u0119 na technologii Per-Layer Embeddings, zastosowanej przez Google w Gemma 3n. Zgodnie z <a href=\"https:\/\/ai.google.dev\/gemma\/docs\/gemma-3n\" rel=\"nofollow\">dokumentacj\u0105 Google,<\/a>parametry PLE mog\u0105 by\u0107 przechowywane poza robocz\u0105 pami\u0119ci\u0105 modelu i dodawane do procesu wyj\u015bciowego w miar\u0119 przetwarzania poszczeg\u00f3lnych warstw. W esp32-ai podej\u015bcie to zosta\u0142o przeniesione do hierarchii pami\u0119ci mikrokontrolera, gdzie szybka SRAM jest szczeg\u00f3lnie ograniczona.<\/p>\n<p>&nbsp;<\/p>\n<p>Pierwsza poprawna wersja \u015brodowiska wykonawczego napisanego w C generowa\u0142a tylko 0,57 tokena na sekund\u0119. Po przeniesieniu warstwy wyj\u015bciowej do PSRAM, przej\u015bciu na aktywacje o\u015bmiobitowe, rozdzieleniu oblicze\u0144 pomi\u0119dzy dwa rdzenie Xtensa LX7 oraz innych optymalizacjach, op\u00f3\u017anienie zosta\u0142o zmniejszone do 94,9 ms na krok modelu. Ostateczna zmierzona pr\u0119dko\u015b\u0107 osi\u0105gn\u0119\u0142a 9,88 tokena na sekund\u0119, bior\u0105c pod uwag\u0119 ca\u0142y proces generacji. G\u0142\u00f3wnym ograniczeniem sta\u0142a si\u0119 teraz przepustowo\u015b\u0107 PSRAM przy odczycie warstwy wyj\u015bciowej.<\/p>\n<p>&nbsp;<\/p>\n<p>Model zosta\u0142 wytrenowany na syntetycznym zbiorze danych <a href=\"https:\/\/arxiv.org\/abs\/2305.07759\" rel=\"nofollow\">TinyStories<\/a>, sk\u0142adaj\u0105cym si\u0119 z prostych angloj\u0119zycznych opowiada\u0144 z ograniczonym s\u0142ownictwem. Dlatego potrafi kontynuowa\u0107 zdania i tworzy\u0107 ma\u0142e sp\u00f3jne historie, ale nie jest przeznaczony do odpowiadania na pytania, wykonywania instrukcji, programowania czy reprodukowania fakt\u00f3w. Deweloper traktuje t\u0119 prac\u0119 przede wszystkim jako demonstracj\u0119 efektywnego umieszczania modelu w pami\u0119ci mikrokontrolera, a nie jako gotowego, autonomicznego chatbota.<\/p>\n<p>&nbsp;<\/p>\n<p>W aktualnej dokumentacji autor szczeg\u00f3lnie podkre\u015bla, \u017ce esp32-ai jest samodzielnym projektem. Projekty <a href=\"https:\/\/github.com\/karpathy\/llama2.c\" rel=\"nofollow\">llama2.c<\/a> Andrieja Karpati i wcze\u015bniejsze uruchomienie modelu 260-tysi\u0119cznego na ESP32-S3 s\u0105 podawane jedynie jako punkty odniesienia i przyk\u0142ady wcze\u015bniejszych prac: kod, punkty kontrolne i metodologia nie zosta\u0142y bezpo\u015brednio z nich przej\u0119te. Kod \u017ar\u00f3d\u0142owy esp32-ai <a href=\"https:\/\/github.com\/slvDev\/esp32-ai\/blob\/main\/LICENSE\" rel=\"nofollow\">jest udost\u0119pniany na licencji MIT<\/a>.<\/p>\n<p>&nbsp;<\/p>\n<p>\u0179r\u00f3d\u0142o: <a rel=\"nofollow\" href=\"https:\/\/www.linux.org.ru\/news\/ai\/18353997\">linux.org.ru<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0412\u044f\u0447\u0435\u0441\u043b\u0430\u0432 \u0421\u0435\u0440\u0431\u043e\u0432, \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u044e\u0449\u0438\u0439 \u043f\u043e\u0434 \u043f\u0441\u0435\u0432\u0434\u043e\u043d\u0438\u043c\u043e\u043c slvDev, \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043b \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e \u0442\u0435\u043a\u0441\u0442\u0430 \u043d\u0430 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0435 ESP32-S3. \u0421\u043e\u0437\u0434\u0430\u043d\u043d\u0430\u044f \u0438\u043c \u044f\u0437\u044b\u043a\u043e\u0432\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 28,9 \u043c\u043b\u043d \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0438 \u0432\u044b\u0434\u0430\u0451\u0442 \u043e\u043a\u043e\u043b\u043e 9,9 \u0442\u043e\u043a\u0435\u043d\u0430 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443, \u043d\u0435 \u043e\u0431\u0440\u0430\u0449\u0430\u044f\u0441\u044c \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0443 \u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u0438\u043c \u0432\u043d\u0435\u0448\u043d\u0438\u043c \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c. \u0421\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b \u0432\u044b\u0432\u043e\u0434\u044f\u0442\u0441\u044f \u043d\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u044b\u0439 OLED-\u0434\u0438\u0441\u043f\u043b\u0435\u0439. &nbsp; \u041f\u0440\u043e\u0435\u043a\u0442 esp32-ai \u0438\u0441\u043f\u044b\u0442\u0430\u043d \u043d\u0430 \u043c\u043e\u0434\u0443\u043b\u0435 ESP32-S3 N16R8, \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u044e\u0449\u0435\u043c [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":9,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-182824","post","type-post","status-publish","format-standard","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\".\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Emin Berklin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/pl\/blog\/news\/yazykovaya-model-s-289-mln-parametrov-zarabotala-na-esp32-s3\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"pl_PL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u042f\u0437\u044b\u043a\u043e\u0432\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u0441 28,9 \u043c\u043b\u043d \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430 \u043d\u0430 ESP32-S3 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\".\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pl\/blog\/news\/yazykovaya-model-s-289-mln-parametrov-zarabotala-na-esp32-s3\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2026-08-11T02:54:15+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2026-08-12T16:21:41+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Model j\u0119zykowy z 28,9 mln parametr\u00f3w dzia\u0142a na ESP32-S3 | ProHoster","description":".","canonical_url":"https:\/\/prohoster.info\/pl\/blog\/news\/yazykovaya-model-s-289-mln-parametrov-zarabotala-na-esp32-s3","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pl_PL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u042f\u0437\u044b\u043a\u043e\u0432\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u0441 28,9 \u043c\u043b\u043d \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430 \u043d\u0430 ESP32-S3 | ProHoster","og:description":".","og:url":"https:\/\/prohoster.info\/pl\/blog\/news\/yazykovaya-model-s-289-mln-parametrov-zarabotala-na-esp32-s3","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2026-08-11T02:54:15+00:00","article:modified_time":"2026-08-12T16:21:41+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"182824","title":null,"description":null,"keywords":null,"keyphrases":{"focus":[],"additional":[]},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2026-08-11 06:43:49","updated":"2026-08-11 06:43:49","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/182824","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/comments?post=182824"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/182824\/revisions"}],"predecessor-version":[{"id":182897,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/182824\/revisions\/182897"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media?parent=182824"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/categories?post=182824"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/tags?post=182824"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}