
Yeddi ESP32-S3 lövhəsi 1,58 bitlik dil modelini bir klaster kimi işlədir
GitHub-da yerləşdirilən layihə kvantlaşdırılmış Qwen2-0.5B modelini 24 qata bölüb altı ESP32-S3 hesablama qovşağı və bir master qovşaq arasında paylaşdırır. Üçlü çəkilər hər qovşağın proqram təminatını 16 MB fləş yaddaşa sığdırır.
GitHub-da ESP32s3-LLM-Cluster adı ilə yerləşdirilən layihə yeddi ESP32-S3 lövhəsinin birlikdə kiçik bir dil modelini necə işlətdiyini göstərir. Altı lövhə hesablama qovşağı, yeddinci isə BPE tokenizer, embedding cədvəlinin axtarışı, yekun normallaşdırma və LM Head-i öhdəsinə götürən master qovşaqdır. Əsas kimi Qwen2-0.5B götürülüb və model mikrokontrollerlər üçün qısaldılıb kvantlaşdırılıb.
Hər hesablama qovşağı modelin 24 transformer blokundan 4-nü daşıyır. Lövhələr bir-biri ilə birbaşa danışmır: onlar zəncir şəklində birləşdirilib, buna görə gizli vəziyyət master-dən çıxır, növbə ilə bütün qovşaqlardan keçir və son qat üçün geri qayıdır.
Çəki başına 1,58 bit
Bütün xətti qatlar BitNet üslubunda üçlü kvantlaşdırmadan istifadə edir: çəki yalnız -1, 0 və ya 1 ola bilər. Üç dəyər iki bitə sığdığından bir bayta dörd çəki yığılır və modeli belə kiçik çiplərə sığdıran da məhz budur. Embedding cədvəli ayrıca INT4 formatında saxlanılır.
README-yə görə bir qat təxminən 3,82 MB, qovşaqdakı dörd qat isə təxminən 15,3 MB yer tutur və 16 MB-lıq fləş bölməsinə sığır. Master-də INT4 embeddinglər üçün təxminən 14 MB, yekun normallaşdırma üçün 64 KB ayrılıb. Kontekst pəncərəsi 512 tokendir və KV keşi hər qovşağın PSRAM-ində saxlanılır.
SPI zənciri
Hər lövhədə iki SPI kanalı var: biri göndərir (CS 4, MOSI 5, CLK 7), digəri qəbul edir (CS 15, MOSI 16, CLK 18). Birinci qovşağın göndərmə kanalı ikincinin qəbul kanalına qoşulur, son qovşaq isə nəticəni master-ə qaytarır. Ayrı xətlər sıfırlama və hazırlıq siqnalına xidmət edir: master-in GPIO 1 pini qovşaqları sıfırlayır, GPIO 3 isə zəncirin sonundan bütün lövhələrin işə düşdüyü xəbərini geri gətirir. GPIO 8-ə qoşulan LED iş zamanı yanır.
Enerji və məhdudiyyətlər
Müəllifin ölçmələrinə görə klaster boşdayanmada 5 voltdan 0,23 amper, yəni təxminən 1,17 vatt çəkir; inferens zamanı istehlak təxminən 1,53 vatta çatır. Hər qovşaq öz hesablama payı üçün təxminən 1,3 saniyə sərf edir, ona görə lövhə sayı artdıqca gecikmə xətti olaraq böyüyür: bir ESP32-S3 dörd qatı öhdəsinə götürür.
Layihə zəif tərəflərini açıq yazır. Kvantlaşdırma nəzərə alınmaqla öyrətmə yalnız qismən aparılıb, loss təxminən 8,0-da dayanır və model tez-tez təsadüfi tokenlər verir ya da tamahkar seçmə zamanı eyni sözü təkrarlayır. README həmçinin xəbərdarlıq edir: Python tərəfindəki 2 bitlik yığılma sırası C və assembler kodundakı açma məntiqi ilə üst-üstə düşməzsə, bütün çəkilər səssizcə korlanır. Kod MIT lisenziyası ilə yayılır, ilham mənbələri arasında Microsoft BitNet və ESP32 üzrə iki erkən layihə göstərilir.
SiTech — AI ilə gücləndirilmiş veb hazırlanması
Sürətli və müasir saytlar qurur, AI-ı real biznes proseslərinə gətiririk. Layihəniz və ya sualınız var? Kömək etməyə hazırıq.