ESP32에서 28.9M LLM, 8달러 칩 위의 온디바이스 실험

28.9M parameter LLM이 ESP32-S3 위에서 실제로 text를 생성한다. GitHub 프로젝트는 약 8달러짜리 microcontroller, 512KB SRAM, 8MB PSRAM, 16MB flash라는 제약 안에서 모델을 돌린다. 네트워크로 보내는 작업은 없고, 작은 화면에 단어를 약 9 tokens/s 속도로 출력한다. 이전에 비슷한 칩에서 돌린 언어 모델이 260K parameter 수준이었다는 설명을 감안하면, 실험의 포인트는 성능 자랑보다 메모리 배치다.

방법은 대부분의 parameter를 빠른 SRAM에 올리지 않는 것이다. 프로젝트는 Gemma 계열에서 알려진 Per-Layer Embeddings 아이디어를 microcontroller 메모리 구조에 맞췄다. 25M parameter 규모의 embedding table은 flash에 남겨두고, token마다 필요한 몇 개 row만 읽는다. 매번 사용하는 작은 “thinking” core는 SRAM에, output head와 작업 메모리는 PSRAM에 둔다. 결과적으로 전체 모델을 한꺼번에 빠른 메모리에 적재하지 않아도 생성이 가능해진다.

제한도 명확하다. 이 모델은 TinyStories로 학습돼 짧고 단순한 이야기를 비교적 일관되게 쓴다. 질문 답변, 코드 작성, 사실 지식 처리용 모델은 아니다. 그래도 edge device에서 언어 모델을 어떻게 넣을지 고민하는 개발자에게는 꽤 직접적인 실험이다. 온디바이스 음성 장난감, 네트워크 없는 간단한 안내 장치, 초저가 교육용 inference demo 같은 쓰임이 떠오른다.

HN 댓글은 작은 하드웨어의 가능성에 반응했다. 일부는 TTS나 voice-to-text까지 20-30M parameter대로 내려오면 완전히 오프라인인 말하는 장치가 가능하겠다고 봤고, 다른 댓글은 per-layer embedding trick 자체가 더 흥미롭다고 짚었다. LLM의 거대한 버전 경쟁과 별개로, 작은 칩에서 무엇을 포기하고 무엇을 남길지 보여주는 사례다.

GitHub 저장소와 HN 토론에서 구현과 반응을 확인할 수 있다.