Zhvilluesi Vyacheslav Serbov, që vepron me emrin e përdorimit slvDev, demonstroi gjen rrugën e plotë të gjenerimit të tekstit në mikro-kontrollerin ESP32-S3. Modeli gjuhësor i krijuar nga ai përmban 28,9 milion parametra dhe jep rreth 9,9 tokene në sekondë, pa u drejtuar në server apo burime të tjera të jashtme të llogaritjes. Tregimet e shkurtra të gjeneruara shfaqen në ekranin OLED të lidhur.
Projekt esp32-ai është testuar në modulin ESP32-S3 N16R8, i cili ka 512 KB SRAM të brendshme, 8 MB PSRAM dhe 16 MB memorie flash. Modeli i kuantizuar deri në katër bit zë 14,9 MB. Në depo janë publikuar kodin burimor të mjedisit të ekzekutimit në C, mjetet e trajnimit dhe kuantizimit të modelit, firmware, testet dhe skenarët e ngarkimit të tij në bord.
Të deklaruar 28,9 milion parametra nuk duhet të krahasohen drejtpërdrejt me numrin e parametrave të LLM-ve të zakonshme desktop. Sipas raportit të detajuar të zhvilluesit, modeli përbëhet nga një bërthamë të dendur llogaritëse me rreth 559 mijë parametra, një shtresë dalëse me 3,1 milion parametra dhe një tabelë përfaqësuese vektorësh për çdo shtresë me rreth 25 milion parametra. Pikërisht kjo e fundit ofron pjesën kryesore të madhësisë formale të modelit, por nuk trajtohet e tëra gjatë gjenerimit të çdo tokeni.
Për të akomoduar modelin, janë aktivizuar tre nivele memoriesh. Të dhënat më të përdorura ndodhen në SRAM-in e brendshëm, shtresa dalëse, KV-cache dhe buferat e përkohshëm - në PSRAM, ndërsa tabela me 25 milion ndodhet në memorien flash dhe është e aksesueshme përmes hartimit në hapësirën adresuese. Për çdo token lexohen vetëm rreth gjashtë rreshta me një vëllim total prej rreth 450 byte.
Një pajisje e tillë bazohet në teknologjinë Per-Layer Embeddings, e aplikuar nga Google në Gemma 3n. Sipas dokumentacionit të Google, parametrat PLE mund të ruhen jashtë memories operative të modelit dhe të shtohen në procesin e daljes ndërsa përpunohen shtresa të veçanta. Në esp32-ai ky qasje është transferuar në hierarkinë e memories së mikro-kontrollerit, ku SRAM-i i shpejtë është veçanërisht i kufizuar.
Versioni e parë e saktë e ambientit të ekzekutimit të shkruar në C jepte vetëm 0,57 tokena në sekondë. Pasi vendosëm shtresën e daljes në PSRAM, kaluam në aktivizime me tetë bitë, shpërndamë llogaritjet midis dy bërthameve Xtensa LX7 dhe kryem optimizime të tjera, vonesa u ul në 94,9 ms për hapin e modelit. Shpejtësia e matur përfundimtar arriti në 9,88 tokena në sekondë duke marrë parasysh procesin e plotë të gjenerimit. Kufiri kryesor tani është kapaciteti i PSRAM për leximin e shtresës së daljes.
Modeli është trajnuar në një grup të dhënash sintetik TinyStories, i përbërë nga tregime të thjeshta në anglisht me një fjalor të kufizuar. Prandaj, ajo është në gjendje të vazhdojë frazat dhe të krijojë histori të vogla koherente, por nuk është e destinuar për të dhënë përgjigje në pyetje, për të kryer udhëzime, për programim ose për të rikujtuar njohuri faktike. Zhvilluesi e sheh punën kryesisht si një demonstrim të vendosjes efektive të modelit në kujtesën e mikrocontroller-it, e jo si një chatbot autonom të gatshëm.
Në dokumentacionin aktual, autori thekson veçmas se esp32-ai është një zhvillim i pavarur. Projektet llama2.c të Andrey Karpaty dhe fillimi më herët i modelit me 260,000 parametra në ESP32-S3 përmenden vetëm si orientime dhe shembuj të aktiviteteve të mëparshme: kodi, pikat e kontrollit dhe metoda nuk janë marrë drejtpërdrejt nga ato. Kodi burimor i esp32-ai distribuohet nën licencën MIT.
Burimi: linux.org.ru
