TL;DR
ESP32-S3에서 동작하는 소형 LLM을 brainscope로 소프트웨어적으로 재현해 레이어별 로짓 흐름과 attention 지도를 단계적으로 확인할 수 있다. 프로젝트는 28.9M 파라미터 중 대다수를 플래시에 두어 메모리 제약을 해결하고 int4 가중치를 fp32로 디퀀타이즈해 C 런타임과 정합성을 검증했다. 세 가지 실험(토큰별 레이어 재생, steering 슬라이더, flash-unplugged)을 통해 플래시 기반 파라미터와 레이어별 편향이 출력에 어떤 영향을 미치는지 직접 확인할 수 있도록 설계되었다.
섹션별 상세
용어 해설
- 레이어별 임베딩(Per-Layer Embeddings)
- — Per-Layer Embeddings는 모델의 각 레이어에서 별도 임베딩을 유지해 파라미터를 플래시 같은 비휘발성 저장소에 배치하는 방식이다. 입력이 들어오면 각 토큰별로 해당 레이어 임베딩을 읽어오고 조합하여 출력 계산에 사용한다. 메모리가 제한된 장치에서 전체 가중치를 RAM에 올리지 않고도 모델 동작을 유지하는 핵심 설계다.
- 로짓 렌즈(Logit Lens)
- — Logit Lens는 각 중간 레이어의 토큰별 로짓을 역산해 그 레이어까지의 출력을 직접 점검하는 기법이다. 입력→중간 표현→소프트맥스 이전 로짓을 계산해 단어별 확률 형성이 레이어별로 어떻게 변하는지 추적한다. 내부 작동을 단계적으로 확인할 수 있어 모델 내부 추론 경로를 분해하는 데 유용하다.
- 스티어링(Steering)
- — Steering은 모델의 출력 성향을 바꾸기 위해 특정 방향성 벡터를 레이어 활성화나 로짓에 가하는 기법이다. 예제에서는 대비 쌍을 이용해 레이어 3에서 추출한 편향 벡터를 슬라이더로 조절해 분위기 변화(예: 어두운 톤)를 만들어낸다. 인터랙티브한 조작으로 스타일이나 정서적 뉘앙스를 시험할 수 있다는 점이 중요하다.
- int4 가중치(int4 artifact)
- — int4 가중치는 모델 파라미터를 4비트 정밀도로 양자화해 저장 공간을 크게 줄인 형식이다. 이 프로젝트는 int4 아티팩트를 fp32로 디퀀타이즈해 C 런타임과 약 1e-5 수준의 오차로 검증하여 동일 동작을 확보했다. 제한된 플래시 용량에서 모델을 운용하면서 정확도를 유지하는 실무적 타협이다.
- TinyStories
- — TinyStories는 단문형 아동 이야기 데이터셋으로 소형 언어모델 학습에 사용된 자료 세트다. 모델은 이 데이터로 학습되어 짧은 서사 중심의 텍스트를 생성하도록 최적화되어 있다. 경량 모델 실험에서 학습 분포와 출력 특성을 이해하는 데 직접적인 근거를 제공한다.
코드 예제
pip install brainscope브레인스코프는 로컬에서 모델 내부를 재현하는 Python 라이브러리로 첫 단계는 패키지 설치다. 설치 이후 첫 실행에서 허브로부터 약 120MB의 fp32 가중치를 내려받아 내부 데이터 구조를 구성한다. 개발 환경이 없는 사용자는 이 명령으로 하드웨어 없이도 같은 분석 워크플로를 시작할 수 있다.
python examples/esp32/serve.py예제 스크립트는 다운로드된 가중치를 로드해 로컬 서버를 띄우고 웹 인터페이스나 콘솔로 레이어별 출력 흐름을 실시간으로 재생한다. 사용자는 입력 프롬프트를 넣고 각 토큰이 6개 레이어에서 어떻게 누적되어 로짓으로 변하는지 단계적으로 확인할 수 있다. 이 실행 흐름은 하드웨어를 필요로 하지 않도록 설계되어 있어 교육용 관찰에 적합하다.
python examples/esp32/serve.py --flash-unplugged해당 플래그는 플래시에 있던 25M 파라미터를 0으로 초기화한 상태로 모델을 구동한다. 이 상태에서 생성되는 출력이 반복적 패턴으로 무너지는 모습을 통해 플래시 기반 기억이 추론에 어떤 기여를 하는지 직접 확인할 수 있다. 실험적 검증을 통해 플래시 저장 파라미터의 역할을 분리하는 용도로 쓰인다.
근거 모음
- 모델은 ESP32-S3에서 동작하며 25M의 파라미터가 플래시에 저장되어 토큰당 약 450바이트를 읽는다. — 본문 첫 문단에 ESP32-S3, 플래시 25M 파라미터, 토큰당 ~450 bytes 언급.
- 모델이 작은 보드에서 아동용 이야기를 초당 9.88 토큰 속도로 생성한다. — 본문: 'writes children's stories at 9.88 tokens/s on a matchbox-sized board' 문장.
- int4 아티팩트를 fp32로 디퀀타이즈해 C 런타임과 약 1e-5 수준으로 검증했다. — 본문 중간의 'int4 artifact the chip runs, dequantized and verified against its C runtime to ~1e-5' 구절.
- flash-unplugged 모드로 플래시 파라미터를 0으로 만들면 출력이 반복적 패턴으로 붕괴한다. — 본문의 'python examples/esp32/serve.py --flash-unplugged' 설명과 그 결과 'time there time there time...' 예시.
기술
- brainscope
- Python
- Per-Layer Embeddings
- Gemma 3n
- TinyStories
- int4 양자화
활용 사례
- 학습용·교육용으로 마이크로모델의 내부 동작을 시각적으로 학습하는 데 활용할 수 있다
- 메모리 제한 환경에서 임베딩·가중치 배치가 추론 품질에 미치는 영향을 실험하는 용도로 적합하다
- 스티어링 인터페이스를 이용해 텍스트 분위기·스타일 편향을 대화형으로 시험할 수 있다
언급된 리소스
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.