Geri Dön
Yedi ESP32-S3 kartı 1,58 bitlik bir dil modelini tek küme olarak çalıştırıyor
SiTech AI Team2 წთ. საკითხავი

Yedi ESP32-S3 kartı 1,58 bitlik bir dil modelini tek küme olarak çalıştırıyor

GitHub'da yayımlanan proje, nicemlenmiş Qwen2-0.5B modelini 24 katmana bölüp altı ESP32-S3 hesaplama düğümü ile bir ana düğüm arasında dağıtıyor. Üçlü ağırlıklar her düğümün yazılımını 16 MB flaş belleğe sığdırıyor.

GitHub'da ESP32s3-LLM-Cluster adıyla yayımlanan proje, yedi ESP32-S3 kartının birlikte küçük bir dil modelini nasıl çalıştırdığını gösteriyor. Altı kart hesaplama düğümü, yedincisi ise BPE tokenizer, gömme tablosu araması, son normalizasyon ve LM Head'i üstlenen ana düğüm. Temel olarak Qwen2-0.5B alınmış, model mikrodenetleyiciler için kısaltılıp nicemlenmiş.

Kümeyi oluşturan ESP32-S3 kartları

Her hesaplama düğümü, modelin 24 transformer bloğundan 4'ünü barındırıyor. Kartlar birbirleriyle doğrudan konuşmuyor: zincir biçiminde bağlanıyorlar, bu yüzden gizli durum ana düğümden çıkıyor, sırayla tüm düğümlerden geçiyor ve son katman için geri dönüyor.

Ağırlık başına 1,58 bit

Tüm doğrusal katmanlar BitNet tarzı üçlü nicemleme kullanıyor: bir ağırlık yalnızca -1, 0 veya 1 olabiliyor. Üç değer iki bite sığdığı için tek bir bayta dört ağırlık paketleniyor ve modeli bu kadar küçük çiplere sığdıran da bu. Gömme tablosu ayrıca INT4 biçiminde tutuluyor.

README'ye göre bir katman yaklaşık 3,82 MB, düğümdeki dört katman ise yaklaşık 15,3 MB yer kaplıyor ve 16 MB'lık flash bölümüne sığıyor. Ana düğümde INT4 gömmeler için yaklaşık 14 MB, son normalizasyon için 64 KB ayrılmış. Bağlam penceresi 512 token ve KV önbelleği her düğümün PSRAM'inde tutuluyor.

SPI zinciri

Her kartta iki SPI kanalı var: biri gönderiyor (CS 4, MOSI 5, CLK 7), diğeri alıyor (CS 15, MOSI 16, CLK 18). Birinci düğümün gönderme kanalı ikincinin alma kanalına bağlanıyor, son düğüm ise sonucu ana düğüme geri yolluyor. Ayrı hatlar sıfırlama ve hazır sinyalini taşıyor: ana düğümün GPIO 1 pini düğümleri sıfırlıyor, GPIO 3 ise zincirin sonundan tüm kartların açıldığı bilgisini geri getiriyor. GPIO 8'e bağlı LED çalışma sırasında yanıyor.

Güç tüketimi ve sınırlar

Geliştiricinin ölçümlerine göre küme boşta 5 voltta 0,23 amper, yani yaklaşık 1,17 watt çekiyor; çıkarım sırasında tüketim yaklaşık 1,53 watta çıkıyor. Her düğüm kendi hesaplama payı için yaklaşık 1,3 saniye harcıyor, dolayısıyla kart sayısı arttıkça gecikme doğrusal olarak büyüyor: bir ESP32-S3 dört katmanı üstleniyor.

Proje zayıf noktalarını açıkça yazıyor. Nicemleme farkındalıklı eğitim yalnızca kısmen yapılmış, kayıp yaklaşık 8,0'da duruyor ve model sık sık rastgele token üretiyor ya da açgözlü örneklemede aynı kelimeyi yineliyor. README ayrıca uyarıyor: Python tarafındaki 2 bitlik paketleme sırası C ve assembly kodundaki açma mantığıyla eşleşmezse tüm ağırlıklar sessizce bozuluyor. Kod MIT lisansıyla yayımlanıyor; ilham kaynakları arasında Microsoft BitNet ve iki eski ESP32 projesi sayılıyor.

SSiTech

SiTech — AI destekli web geliştirme

Hızlı ve modern web siteleri kuruyor, AI'yı gerçek iş akışlarına taşıyoruz. Projeniz veya sorunuz mu var? Yardımcı olmaktan mutluluk duyarız.