8달러짜리 마이크로컨트롤러에서 2,890만 매개변수 LLM 실행하기

5 hours ago 1

ESP32-S3에서 서버 연결 없이 2,890만 매개변수 언어 모델을 구동해 작은 화면에 약 초당 9개 토큰으로 텍스트를 출력함 전체 매개변수 중 2,500만 개를 느린 플래시에 두고 토큰마다 필요한 약 6개 행, 450바이트만 읽는 Per-Layer Embeddings 구조를 사용함 모델은 4비트 기준 14.9MB이며, 512KB SRAM에는 매 토큰에 쓰이는 연산 코어, 8MB PSRAM에는 출력 헤드와 작업 메모리, 16MB 플래시에는 대형 임베딩 테이블을 배치함 TinyStories로 훈련해 짧고 단순한 이야기는 대체로 일관되게 생성하지만, 질문 응답·명령 수행·코드 작성·사실 지식에는 적합하지 않음 이전에 유사한 칩에서 실행된 26만 매개변수 모델보다 약 100배 많은 매개변수를 담았으며, 핵심은 생성 품질보다 대형 모델을 작은 칩에 수용하는 메모리 구조에 있음 하드웨어와 실행 성능 약 8달러인 ESP32-S3 하나에서 모든 처리를 수행하며 서버로 데이터를 보내지 않음 512KB SRAM, 8MB PSRAM, 16MB 플래시를 사용함 전체 속도는 약 9.5 tok/s, 순수 연산 속도는 약 9.7 tok/s임 4비트 모델 크기는 14.9MB임 총 2,890만 매개변수 중 2,500만 개가 플래시 조회 테이블에 저장됨 작은 메모리에 모델을 넣는 방법 일반적으로 모델 전체가 빠른 메모리에서 접근 가능해야 하지만, ESP32-S3의 SRAM은 512KB에 불과해 매우 작은 모델만 수용할 수 있음 대부분의 매개변수가 계산 대상이 아닌 임베딩 테이블에 있다는 점을 이용해 테이블을 플래시에 남겨둠 토큰마다 필요한 약 6개 행, 약 450바이트만 읽음 실제 연산을 담당하는 작은 부분만 빠른 메모리에 유지함 대부분의 모델은 실행 중 로드되지 않고 플래시에서 필요한 부분만 선택됨 메모리 역할은 다음과 같이 나뉨 SRAM: 모든 토큰에서 사용하는 연산 코어 PSRAM: 출력 헤드와 작업 메모리 플래시: 2,500만 매개변수 테이블 Per-Layer Embeddings 적용 Google의 Gemma 3n과 Gemma 4에서 사용한 Per-Layer Embeddings를 휴대전화나 GPU가 아닌 마이크로컨트롤러 메모리 구조에 적용함 프로젝트 제작자가 확인한 범위에서는 이처럼 작은 칩에 해당 방식을 적용한 선례가 없음 모델이 할 수 있는 일과 한계 TinyStories의 짧은 합성 이야기를 학습해 단순한 이야기를 생성하고 대...

Read Entire Article