8ドルのESP32で28.9M LLM、鍵はflashに置く重み

28.9M parameterの言語モデルがESP32-S3 microcontroller上で動いている。GitHubのREADMEによると、約8ドルのchip、512KB SRAM、8MB PSRAM、16MB flashという制約のなかで、serverへ送信せずにtextを生成し、小さな画面へ約9 tokens/sで出力する。似たchipで以前動いていた言語モデルが260K parameter規模だったという説明を見ると、この実験の焦点は賢さよりmemory layoutにある。

工夫は、モデル全体を高速memoryに置かないことだ。25M parameterのlookup tableをflashに残し、tokenごとに必要な数行だけ読む。毎token使う小さな計算coreはSRAMに置き、output headと作業領域はPSRAMに回す。GoogleのGemma系で使われたPer-Layer Embeddingsの考え方を、microcontrollerのかなり小さいmemory構成へ落とし込んだ形だ。

READMEは限界も明示している。モデルはTinyStoriesで訓練されており、短く単純な物語をある程度一貫して書くためのものだ。質問応答、coding、事実知識の処理には向かない。それでも、edge deviceで言語モデルを動かすには何を速いmemoryに残し、何を遅いflashに逃がせるかを示す実験として価値がある。

HNの反応は、低価格hardwareの可能性に集まった。offlineの音声device、20-30M parameter級のTTS、より強い低価格boardとの組み合わせを想像するコメントがあり、Per-Layer Embeddingの使い方そのものに注目する声もあった。巨大モデル競争とは別に、小さなchipでどこまで生成を残せるかを測る実例だ。

出典はGitHub repositoryとHNの議論。