출처

개요

esp32-ai는 ESP32-S3에서 2,890만 개 파라미터 규모의 언어 모델을 실행하기 위해 파라미터를 SRAM·PSRAM·플래시에 나누어 배치한 프로젝트입니다. 전체 파라미터 중 약 2,500만 개를 플래시 조회 표로 두고, 토큰 생성 시 필요한 일부 데이터만 읽어 내부 SRAM의 한계를 우회합니다. Google Gemma 3n의 계층별 임베딩(Per-Layer Embeddings, PLE) 아이디어를 마이크로컨트롤러 환경에 적용했습니다. ESP32-S3에서 종단간 초당 9.88토큰의 속도와 14.9MB의 4비트 양자화 모델 크기를 제시하지만, 목적은 범용 챗봇이 아니라 메모리 계층 설계와 온디바이스 추론 가능성 검증에 있습니다.

핵심 포인트

  • ESP32-S3의 구성은 내부 SRAM 512KB, PSRAM 8MB, 플래시 16MB이며, 모델을 메모리 접근 빈도에 따라 세 계층으로 분할합니다.
    • SRAM: 활성값과 정규화 가중치
    • PSRAM: 트랜스포머 코어와 출력 헤드
    • 플래시: 약 2,500만 파라미터의 조회 표
  • 플래시 조회 표에서는 토큰당 약 6줄, 약 450바이트만 읽습니다. 측정된 무작위 플래시 읽기 시간은 512바이트 기준 20.3µs이며, 조회 표 읽기 비용은 토큰당 메모리 시간의 약 0.7%로 제시됩니다.
  • 배포 모델은 어휘 32,768개, d_model 96, 6개 층, ple_dim 128이며 코어는 약 559K 파라미터입니다.
  • 두 개의 시드로 비교한 실험에서 baseline의 퍼플렉서티 12.58이 PLE 구성에서 11.41로 낮아졌습니다. 같은 코어를 사용하는 fatembed 구성의 퍼플렉서티는 11.94로, 층별 주입 방식이 더 나은 결과를 보였습니다.
  • 어휘 크기 4,096에서는 PLE 개선 폭이 0.025 nats였지만, 32,768에서는 0.098 nats로 커졌습니다.
  • 공개 모델은 TinyStories 이야기 생성 모델과 Barista 에스프레소 질의응답 모델이며, 모델 다운로드와 보드 배포 명령을 분리하고 SHA-256 및 파일 크기 검증 절차를 제공합니다.
  • 실제 추론 결과는 짧고 단순한 이야기를 생성하는 수준이며, 범용 질의응답·지시 수행·코드 생성·사실 지식 능력을 제공하는 모델은 아닙니다.

왜 중요한가

esp32-ai는 작은 MCU에서 모델 크기를 단순히 SRAM 용량에 맞추는 대신, 데이터의 읽기 빈도와 메모리 계층별 대역폭을 기준으로 파라미터를 배치하는 방법을 보여줍니다. 특히 플래시의 느린 무작위 접근 비용과 PSRAM의 출력 헤드 비용을 실제 측정값으로 비교하고, PLE 적용 여부를 퍼플렉서티와 절제 실험으로 평가했다는 점에서 임베디드 언어 모델 설계의 참고 사례가 됩니다. 다만 2,890만 개라는 수치는 저장된 파라미터 수를 뜻하며 모델 능력이나 범용성의 척도로 해석해서는 안 됩니다.

후속으로 볼 링크와 키워드

라이선스

esp32-ai 프로젝트는 MIT 라이선스로 공개되어 있습니다.

관련 위키

원문 보존 위치

원문 전체는 raw source: 2026-08-05-pytorchkr-topic-11519-esp32-ai-esp32-s3-28-9msource_url 및 HTML 원문과 함께 저장되어 있습니다.