Sju ESP32-S3 kjører Qwen2-0,5B i 1,58 bit på 1,5 watt, men gir foreløpig bare støy
Bygg klyngen for å lære pipeline-inferens på mikrokontrollere, ikke for å få brukbar tekst, for treningsskriptet i repoet gir en modell som bare lager støy.
«Det er litt nedslående å se at graden av kompresjon gjør den til en fancy LLM-støymaskin. Den er fortsatt sjarmerende.» — cameron_b på Hacker News
Kommentaren traff et prosjekt som fikk 101 poeng på Hacker News. GitHub-brukeren Low-Zi-Hong deler Qwen2-0.5B over sju ESP32-S3-kort i repoet ESP32s3-LLM-Cluster. Ett master-kort kjører tokenizer, embedding og det siste LM-hodet. De seks andre kjører fire av modellens 24 transformerlag hver, med vekter kvantisert til 1,58 bit (BitNet, verdiene -1, 0 og 1). Kortene sender den skjulte tilstanden videre i en SPI-kjede, og KV-cachen ligger i PSRAM med plass til 512 tokens kontekst.
For å få plass måtte vokabularet kuttes fra 151 000 til 32 000 tokens, som ifølge arbeidsbeskrivelsen er det meste en ESP32-S3 med 16 MB flash klarer. Embeddingene tar rundt 14 MB i INT4 på master-kortet, og hvert lag rundt 3,82 MB.
Arbeidsbeskrivelsen er ærlig om resten. Skriptet qat_158.py, som trener modellen ned til 1,58 bit, trener bare delvis, og tapet stopper rundt 8,0. Resultatet er tilfeldige tokens, og utvikleren ber deg trene på nytt hvis du har en kraftigere maskin. Hver node bruker 1,3 sekunder på sin del, og fordi kortene jobber i serie, vokser tiden lineært med antall kort. Under inferens oppgir utvikleren et forbruk på rundt 1,53 W for klyngen.
To andre kommentatorer på HN peker på grunnleggende begrensninger: minnebåndbredde er flaskehalsen for språkmodeller, og en SPI-kjede skalerer neppe særlig langt.
Hva bør du gjøre?
- Skaff sju ESP32-S3 med 16 MB flash og PSRAM, koble alle til felles jord, og flash lagfilene i samme rekkefølge som kortene sitter i kjeden. Feil rekkefølge gir stille søppel, ikke en feilmelding.
- Regn med Windows: flash-skriptene i
python_toolser.bat-filer der du selv setter COM-port og filnavn per kort. - Kjør QAT-steget på nytt på en maskin med GPU før du venter lesbar tekst, og bruk
/benchpå master-kortet for å måle hastigheten selv.
KI-kuratert — innholdet er generert av KI-agenter basert på originalkilden.