$8짜리 마이크로컨트롤러에서 28.9M 파라미터 LLM 돌리기
Running a 28.9M parameter LLM on an $8 microcontroller
TL;DR Highlight
파라미터 대부분을 flash에 두자 ESP32-S3에서 9.88 tok/s로 텍스트 생성
Who Should Read
엣지·임베디드 기기에서 로컬 LLM을 돌릴 방법을 찾는 개발자
Core Mechanics
- 대부분을 flash에 두고 일부만 읽는다
- 28.9M 파라미터 중 25M이 flash의 lookup table(조회 테이블)에 있다.
- 토큰 하나당 약 6행, 450바이트만 읽어 온다.
- Per-Layer Embeddings가 핵심이다
- Gemma 3n에서 나온 아이디어를 마이크로컨트롤러 메모리 구조에 맞춰 적용했다.
- 모델 대부분을 RAM에 올리지 않고 조금씩 샘플링해 쓴다.
- 메모리를 접근 빈도별로 나눠 쓴다
- SRAM(512KB)에는 여러 번 읽는 activation과 norm weight를 둔다.
- PSRAM에는 core와 출력 head를, flash에는 25M 테이블을 둔다.
- 속도는 9.88 tok/s다
- ESP32-S3(512KB SRAM, 8MB PSRAM, 16MB flash)에서 end to end 기준이다.
- 토큰당 연산은 94.9ms이고, 4-bit 모델 크기는 14.9MB다.
- 능력은 아주 제한적이다
- TinyStories로 학습해 짧고 단순한 이야기를 대체로 일관되게 쓴다.
- 질문 답변, 지시 따르기, 코드 작성, 사실 지식은 안 된다.
Community Reactions
- flash 접근 확장 질문이 나왔다
- 좋은 접근 패턴이면 더 큰 모델도 flash 기반 CPU에서 돌릴 수 있지 않느냐는 의견이 있었다.
- flash 수명 우려가 나왔다
- 계속 읽으면 flash가 빨리 닳지 않느냐는 질문이 있었다.
- TTS 응용 가능성이 언급됐다
- 20~30M 파라미터급 TTS 모델이 있어 네트워크 없는 ESP32가 실시간으로 읽어 줄 수 있겠다는 의견이 있었다.
- 학습 결과물에 감탄하는 반응이 있었다
- 구동보다 이런 가중치를 만든 학습 과정이 더 인상적이라는 의견이 있었다.
How to Apply
- TinyStories 모델을 보드에 올려 보기
- ESP32-S3 보드가 있으면 scripts/fetch_model.sh tinystories로 모델을 받는다.
- 이어서 scripts/deploy.sh tinystories로 flash한다.
- 메모리 계층별 배치표 그려 보기
- 자기 모델의 텐서를 접근 빈도별로 나열한다.
- 토큰당 한두 번만 읽는 큰 테이블은 느린 저장소 후보로 표시한다.
- RESULTS.md의 ablation 읽고 적용 범위 정하기
- 온디바이스 모델 설계 전에 측정 수치를 확인한다.
- 단순 생성만 필요한지 판단한다.
Try It
# Claude/ChatGPT에 붙여넣기 (논문 방법의 간이 버전: 메모리 계층 배치 점검)
나는 {{대상 기기}}에서 {{모델 이름, 파라미터 수}}를 돌리려 한다.
기기 메모리: SRAM {{크기}}, PSRAM {{크기}}, flash {{크기}}.
아래 원칙으로 텐서를 어느 메모리에 둘지 표로 정리해 줘.
- 토큰마다 여러 번 읽는 값(activation, norm weight)은 가장 빠른 메모리
- 위치마다 한 번 읽는 core와 출력 head는 중간 메모리
- 토큰당 몇 행만 읽는 거대한 embedding table은 가장 느린 큰 메모리
각 항목의 예상 크기와 토큰당 읽는 바이트도 같이 적어 줘.
이어서 해 볼 것: 토큰당 읽는 바이트가 가장 큰 항목을 찾아 줄일 방법을 물어보기Terminology
관련 논문
Mercury 3: 규모를 키운 diffusion LLM, 초당 1,000토큰 이상
Diffusion LLM을 40배 키웠더니 속도 4~8배, 품질은 속도 특화 모델 수준
Timestral: Mistral의 시계열 파운데이션 모델
209M 파라미터 시계열 모델이 3대 벤치마크 1위, CPU에서도 돌아간다
DeepSeek V4.1 Flash 1017 (Max) 성능·속도·가격 분석
DeepSeek V4.1 Flash 1017 Max는 지능 지수 45에 211 tok/s, 입력 $0.30
LLM 프록시를 직접 안 돌리면 무슨 일이 벌어지는지 어떻게 아나
자체 LLM 프록시를 세웠더니 키·모델·캐시 미스를 직접 볼 수 있다
DeepSeek V4.1 Flash 1017: 싼 가격에 1M 컨텍스트를 주는 에이전트용 모델
DeepSeek V4.1 Flash 1017은 입력 $0.05/M, 1M 컨텍스트의 에이전트용 모델
DeepSeek-V4.1-Flash-1017 공개: 더 짧게 생각하고 더 빠르게 일하는 에이전트용 모델
DeepSeek V4.1 Flash 마이너 업데이트로 코딩·에이전트 벤치 점수↑, 실행 시간·출력 길이↓
Llmspeed: 로컬 LLM 속도를 하드웨어 구매 전에 체감해 보는 시뮬레이터
GPU·모델을 고르면 로컬 LLM 속도를 미리 체감하게 해 주는 시뮬레이터