slvDev/esp32-ai
Python0 / 0
ESP32-S3에서 Per-Layer Embeddings로 28.9M 파라미터 모델을 플래시에 두고 9.5 tok/s로 오프라인 생성하는 프로젝트이다.
TL;DR
이 레포는 ESP32-S3와 같은 약 8달러 마이크로컨트롤러에서 28.9M 파라미터 모델을 실행하도록 펌웨어와 학습·양자화 코드를 제공하는 프로젝트이다. 핵심 메커니즘은 Per-Layer Embeddings를 이용해 25M 파라미터를 플래시에 보관하고 토큰 처리 시 필요한 소수의 임베딩 행만 읽어 SRAM의 연산 코어로 전달하는 방식으로 동작함이 확인됐다. 결과적으로 모델은 14.9MB(4-bit)로 저장되고 전체 파이프라인 기준 약 9.5 tok/s의 속도로 오프라인에서 텍스트를 생성하는 것이 실현되었다. firmware/esp32_llm/README.md에서 플래싱과 배선 절차를 제공하므로 동일한 하드웨어 환경을 갖춘 개발자는 재현 가능한 실험을 수행할 수 있음이 확인됐다.
핵심 포인트
- 대부분 파라미터를 플래시에 두는 설계로 25M 파라미터가 플래시 룩업 테이블에 저장되는 점이 차별화 요소이다. 이 설계는 토큰당 약 450바이트만 플래시에서 읽어오는 접근으로 SRAM 점유를 최소화하는 실행 경로를 제공하는 구현임이 확인됐다. 동일한 하드웨어에서 이전 기록보다 약 100배 큰 모델을 구동한 사례로 나타났다.
- 학습·양자화·펌웨어·플래싱 샘플을 모두 포함해 실기기 재현 가능성을 함께 제공하는 통합 레포 구성이 차별화 포인트이다. firmware/esp32_llm/README.md와 src 및 experiments 디렉터리에 학습과 양자화 코드가 포함되어 있어 온디바이스 실행을 그대로 재현할 수 있는 자료를 제공하는 것으로 나타났다. 커밋 히스토리와 RESULTS.md에 측정값과 실험 로그가 기록되어 검증 가능함이 확인됐다.
- 완전 오프라인 실행, 즉 네트워크나 서버 의존 없이 ESP32-S3 자체에서 텍스트를 생성하는 점이 특징이다. 연결성이 전혀 필요 없고 모든 연산이 디바이스 내부에서 이루어지는 실행 모델을 목표로 한 구현임이 확인됐다. 임베디드 환경에서 개인정보를 로컬에만 유지하는 요구에 부합하는 점에서 유용함이 확인됐다.
- 모델 파라미터 28.9M 중 25M을 플래시 룩업 테이블로 두어 SRAM 요구량을 극히 낮춘 설계이다. 이 구조는 토큰당 플래시에서 약 6개 행, 약 450바이트를 읽어 필요한 임베딩만 SRAM으로 불러오는 처리 파이프라인으로 동작함이 확인됐다. 결과적으로 ESP32-S3의 512KB SRAM 제약을 우회한 구현으로 나타났다.
벤치마크
| 벤치마크 | 지표 | 값 | 비교 |
|---|---|---|---|
| Parameters | stored | 28.9M stored (25M of them in a flash lookup table) | — |
| Speed | tok/s | about 9.5 tok/s end to end (9.7 tok/s of pure compute) | — |
| Model size | MB | 14.9MB at 4-bit | — |
이미지 분석

3.7k
Stars
474
Forks
+204
Trending
0
조회수
3.7k watchers15 open issues
관련 토론
아직 관련 토론이 없습니다.
댓글
댓글을 작성하려면 로그인이 필요합니다.