ESP32‑S3 클러스터가 1.58비트 BitNet 양자화로 0.5B LLM 실행
TL;DR
7개의 ESP32‑S3 노드 클러스터가 1.58비트(비트넷) 삼항 양자화를 사용해 0.5B 파라미터 언어 모델을 실행하며, 마이크로컨트롤러들 사이에 고속 SPI 덱스체인을 통해 모델을 분할하고 통신합니다. 이는 일반적인 IoT 칩조차도 의미 있는 LLM의 분산 추론에 참여할 수 있음을 보여줍니다.
프로젝트의 목적
ESP32‑S3 LLM 클러스터는 0.5B 파라미터 모델을 7개의 ESP32‑S3 보드에 나누어 실행하는 분산 추론 파이프라인을 구현합니다. 하나의 보드는 마스터 역할을 하며 토큰화, 임베딩 조회, 최종 RMS‑노름, 언어 모델 헤드, 그리고 탐욕적 샘플링을 담당하고, 나머지 6개 보드는 각각 4개의 트랜스포머 블록(어텐션 및 MLP)을 순차적으로 실행하는 계산 노드로 작동합니다. 마스터와 노드 간의 통신은 양방향 SPI 덱스체인을 통해 이루어지며, 이로써 숨겨진 상태 벡터(FP32)가 파이프라인을 따라 전파되고 최종 출력을 위해 마스터로 되돌아옵니다.
아키텍처 요약
- 마스터 노드: BPE 토크나이저, INT4 임베딩 테이블(~14MB 플래시), 최종 후처리 실행
- 계산 노드: 각각 4개의 트랜스포머 레이어를 보유하며,
- RMSNorm (FP16 → FP32 스케일링)
- RoPE를 사용한 1.58비트 삼항 어텐션(Q/K/V/O 프로젝션)
- 외부 PSRAM에 저장된 KV 캐시
- 1.58비트 삼항 MLP(gate, up, down 프로젝션)
- SPI 덱스체인: 보드당 2개의 SPI 채널(CH A: 전방 전송, CH B: 후방 수신)이 낮은 지연과 높은 대역폭의 데이터 이동을 가능하게 합니다.
- 양자화: 마이크로소프트의 BitNet 1.58비트 삼항 방식을 사용하여 가중치 저장 공간을 극도로 줄이면서 추론 품질을 유지합니다.
작동 방식 – 단계별 추론 흐름
- 프롬프트 입력 → 마스터가 BPE로 토큰화하고 INT4 임베딩을 조회합니다.
- 숨겨진 상태(FP32) 는 SPI CH A를 통해 계산 노드 1로 전송됩니다.
- 노드 1은 레이어 0–3를 처리하고 숨겨진 상태를 업데이트한 후 노드 2로 전달합니다.
- 노드 2–5는 동일한 패턴을 반복하며 각각 4개의 연속된 트랜스포머 블록을 처리합니다.
- 노드 6은 최종 레이어 20–23를 처리하고 숨겨진 상태를 SPI CH B를 통해 마스터로 반환합니다.
- 마스터는 최종 RMS‑노름(FP16), 연결된 LM 헤드(INT4), 탐욕적 샘플링을 적용하여 다음 토큰을 출력합니다.
- 이후 각 토큰에 대해 이 주기가 반복됩니다.
저장소의 다이어그램은 이 파이프라인을 시각화하며, 마스터-노드 간 데이터 흐름과 플래시 및 PSRAM에 분할된 모델 가중치를 보여줍니다.
저장소 구조
master_board/: 마스터용 ESP‑IDF 펌웨어, 토크나이저, 임베딩, LM 헤드, 이중 채널 SPI 드라이버 포함node_firmware/: 계산 노드용 펌웨어, 1.58비트 삼항 선형 레이어(bitlinear.cpp), 어셈블리 최적화된 MAC 커널(bitlinear_forward.S), Qwen 어텐션 구현, KV 캐시 관리 포함python_tools/: 모델 준비를 위한 호스트 측 유틸리티:- 토큰 사전 자르기(
crop_token.py) - 임베딩 자르기(
crop_model_weight.py) - BitNet 양자화 인식 학습(
qat_158.py) - 플래시 정렬을 위한 바이너리 패킹(
pack_model_bin.py)
- 토큰 사전 자르기(
workflow.md: 하드웨어 연결, 플래싱, 모델 준비를 포함한 엔드투엔드 가이드
Hacker News 커뮤니티 반응
이 프로젝트는 열광과 회의를 동시에 불러일으켰습니다:
ladyanita22: "작은 마이크로컨트롤러들로 구성된 대규모 병렬 시스템을 상상해 보세요—Rust는 병렬화를 더 안전하게 만들 수 있을 것입니다." (RISC‑V 클러스터로 개념 확장 가능성 제안)
tdhz77: "곧 모든 전구에 AI가 Kubernetes를 실행하게 될 것입니다." (일반화된 AI에 대한 유머러스한 과장)
cameron_b: "압축 덕분에 이건 멋진 LLM 노이즈 메이커일 뿐이지만, 여전히 매력적입니다." (실용적인 품질에 대한 의심 표현)
librasteve: "https://bil-lang.org과 같은 프로젝트는 병렬 파이프라인 처리를 목표로 하고 있습니다; 우선 TinyGo 백엔드가 필요합니다." (관련 언어 수준 노력에 대한 지적)
NDlurker: "이 시스템은 기본 워드 프로세서에서 문법 검사나 텍스트 기반 게임의 세계를 생성하는 데 사용할 수 있을까요?" (현실적인 활용 사례 질문)
matthewfcarlson: "저도 1.5억 파라미터 모델을 사용하는 유사한 프로젝트를 진행 중입니다—이건 정말 놀랍습니다." (동일한 방향의 개발자 존재 확인)
sneak: "어떤 저비용 칩이 LLM을 실행할 수 있을까요? 맥 미니가 가장 저렴한 건가요, 아니면 Pi HAT용 전용 AI 칩이 있을까요?" (하드웨어 대안 탐색)
전반적으로 커뮤니티는 기술적 혁신을 높이 평가하면서도 확장성, 성능, 실용성에 대해 의문을 제기하고 있습니다.
왜 이 프로젝트가 중요한가
- 비용 효율성: ESP32‑S3 칩은 각각 몇 달러에 불과하며, 7노드 클러스터는 50달러 미만으로 구성 가능해 GPU 가속 보드보다 훨씬 저렴합니다.
- 엣지 AI 민주화: 고도로 복잡한 LLM 추론이 초저전력, 배터리 작동 장치까지 확장될 수 있음을 보여줍니다.
- 양자화 기술 혁신: BitNet의 1.58비트 삼항 형식이 실제 하드웨어에서 검증되었으며, 연구용 양자화와 임베디드 배포 사이의 격차를 좁힙니다.
- 분산 마이크로컨트롤러 AI: 다양한 마이크로컨트롤러를 통한 파이프라인 AI 설계 공간을 여는 것으로, 초기 병렬 컴퓨팅을 떠올리지만 현대적인 딥러닝 워크로드를 수용합니다.
시작하기
- 저장소를 복제합니다.
workflow.md를 따라 마스터 및 노드 펌웨어를 ESP32‑S3 보드에 플래싱합니다.- 파이썬 도구를 사용해 호환 가능한 0.5B 모델을 양자화하고 패킹합니다(저장소는 BitNet QAT 및 INT4 임베딩 패킹용 스크립트 제공).
- 저장소의 하드웨어 사진에 표시된 대로 SPI 핀을 사용해 보드를 덱스체인으로 연결합니다.
- 클러스터를 전원 공급하고 마스터의 시리얼 콘솔을 통해 프롬프트를 입력하고 생성된 토큰을 수신합니다.
라이선스
이 프로젝트는 MIT 라이선스 하에 배포됩니다.
결론
ESP32‑S3 LLM 클러스터는 저렴한 마이크로컨트롤러의 소규모 집합이 강력한 삼항 양자화를 사용해 5억 파라미터 언어 모델을 공동으로 실행할 수 있음을 입증합니다. 출력 품질은 정밀도가 높은 모델에 미치지 못할 수 있지만, 이 작업은 초저비용, 분산 엣지 AI를 위한 실현 가능한 길을 보여줍니다.