9M 파라미터짜리 초소형 LLM으로 언어 모델 작동 원리 직접 이해하기
Show HN: I built a tiny LLM to demystify how language models work
TL;DR Highlight
물고기 Guppy를 학습한 870만 파라미터 미니 LLM이 Colab 노트북 하나로 5분 만에 처음부터 구현되어, LLM의 블랙박스 이미지를 완전히 걷어낸다.
Who Should Read
LLM이 내부적으로 어떻게 동작하는지 궁금하지만 대형 모델 코드베이스는 너무 복잡해서 접근이 어려웠던 개발자. PhD나 고성능 GPU 없이도 토크나이저부터 학습 루프까지 전 과정을 직접 코드로 따라가보고 싶은 입문자에게 특히 적합하다.
Core Mechanics
- GuppyLM은 파라미터 수가 870만 개(~9M)에 불과한 초소형 LLM으로, 물고기 Guppy 캐릭터처럼 물, 먹이, 빛, 어항 생활에 대한 짧고 소문자로 된 문장을 생성한다.
- 학습 데이터는 60개 토픽에 걸친 6만 개의 합성 대화(synthetic conversations)로 구성되어 있으며, 실제 인터넷 크롤링 데이터 없이 생성된 데이터만 사용했다.
- 아키텍처는 Transformer 기반으로, 레이어 6개, 히든 차원(hidden dim) 384, 어텐션 헤드(attention head) 6개, FFN(피드포워드 네트워크) 차원 768로 구성된 매우 단순한 구조다.
- Google Colab 노트북 하나로 단일 GPU에서 약 5분 만에 데이터 생성 → 토크나이저 학습 → 모델 아키텍처 정의 → 학습 루프 → 추론까지 전 파이프라인을 직접 실행해볼 수 있다.
- 모델 크기가 작아서 브라우저에서도 실행 가능한 수준이며, 복잡한 인프라 없이도 LLM의 전체 작동 흐름을 end-to-end로 읽고 이해할 수 있도록 코드를 최대한 단순하게 유지했다.
- 학습 데이터가 전부 소문자로 되어 있어 대문자 입력(예: 'HELLO')을 넣으면 엉뚱한 응답이 나오는 한계가 있는데, 이는 토크나이저와 학습 데이터가 모델의 행동을 얼마나 직접적으로 결정하는지 보여주는 좋은 교육적 사례다.
- next token prediction(다음 토큰 예측) 방식으로만 학습되며, RLHF나 파인튜닝 같은 추가 기법 없이도 캐릭터 일관성 있는 대화가 가능하다는 점이 흥미롭다.
- 저장소에는 학습용 Jupyter 노트북(train_guppylm.ipynb)과 추론용 노트북(use_guppylm.ipynb)이 분리되어 있어, 학습과 실행 단계를 구분해서 살펴볼 수 있다.
Evidence
- Andrej Karpathy의 microgpt, minGPT와 비교하는 질문이 나왔는데, GuppyLM은 코드 복잡도를 더 낮추고 캐릭터 학습이라는 구체적 목표를 통해 초보자가 처음 접하기에 더 진입 장벽이 낮다는 평가가 있었다.
- multi-head attention, ReLU FFN, LayerNorm, learned positional embeddings 같은 개념을 모르는 개발자에게는 코드만으로는 이해가 어렵다는 지적이 있었고, 이에 따라 더 상세한 문서화가 필요하다는 의견이 나왔다. Minix가 OS 교육에 쓰이듯 GuppyLM도 LLM 교육 도구로 자리잡을 수 있다는 비유도 함께 제시됐다.
- https://bbycroft.net/llm 사이트가 언급됐는데, 이 사이트는 LLM 레이어를 3D로 시각화해서 내부 동작을 보여주기 때문에 GuppyLM과 함께 보면 이해에 도움이 된다는 추천이 있었다.
- 한 댓글 작성자는 비슷한 방식으로 밀턴의 「실낙원(Paradise Lost)」을 학습 데이터로 써서 자신만의 미니 LLM을 만든 경험을 공유했고, 이런 교육적 접근이 실제로 LLM 이해에 효과적이었다고 밝혔다.
- 여러 에이전트가 공유 월드에서 상호작용하는 시스템을 개발 중인 한 댓글 작성자는, 같은 모델과 프롬프트를 써도 리소스 제약, 다른 에이전트, 영구 메모리 같은 환경 요소가 바뀌면 행동이 극적으로 달라진다는 경험을 공유하며 모델 최적화보다 환경 설계에 더 신경을 써야 한다는 인사이트를 남겼다.
- 일부 예시 응답이 학습 데이터를 그대로 재현한 것처럼 보인다는 지적이 있었고, 학습 데이터에 없는 완전히 새로운 질문에 어떻게 반응하는지에 대한 궁금증이 제기됐다.
- '삶의 의미는 먹이'라는 Guppy의 대답을 두고, 1만 배 큰 모델들보다 오히려 더 솔직한 세계관이라는 유머러스한 댓글이 높은 호응을 받았다.
How to Apply
- LLM 내부 구조를 처음 공부하는 경우, train_guppylm.ipynb 노트북을 Google Colab에서 직접 실행해보면 토크나이저 구성 → 모델 아키텍처 정의 → 학습 루프 → 추론까지 전 과정을 5분 안에 경험할 수 있고, 각 단계에서 코드를 수정해보며 어떤 영향이 생기는지 즉시 확인할 수 있다.
- 특정 도메인에 특화된 소형 모델의 가능성을 실험하고 싶다면, 60K 합성 대화 데이터 생성 방식을 참고해 자신만의 도메인 데이터를 만들고 동일한 아키텍처로 학습해보면 데이터 품질과 다양성이 모델 출력에 얼마나 직접적인 영향을 미치는지 체감할 수 있다.
- 팀에 LLM 개념을 교육해야 하는 상황이라면, GuppyLM의 Minix-like 철학(단순하지만 실제로 동작하는 구현)을 활용해 multi-head attention, positional embedding 등 핵심 개념을 코드 레벨에서 설명하는 스터디 자료로 활용할 수 있다.
- 브라우저에서 LLM을 실행하는 데모를 만들어야 하는 경우, GuppyLM처럼 870만 파라미터 수준으로 모델을 작게 유지하면 WebAssembly나 ONNX 변환을 통해 클라이언트 사이드 실행이 가능하며, 이 프로젝트의 아키텍처 설정값(레이어 6, 히든 384, 헤드 6)을 기준점으로 삼아 크기를 조절해볼 수 있다.
Terminology
관련 논문
PyTorch Lightning AI 학습 라이브러리에서 Shai-Hulud 테마 악성코드 발견
널리 쓰이는 딥러닝 프레임워크 PyTorch Lightning의 PyPI 패키지 버전 2.6.2와 2.6.3이 공급망 공격으로 침해되어, import 시 자격증명 탈취 악성코드가 실행된다.
Alignment Whack-a-Mole: 파인튜닝이 LLM 내부의 저작권 도서 암기를 활성화한다
안전 정렬(alignment)된 LLM도 파인튜닝을 거치면 억제됐던 저작권 책 내용을 그대로 출력하게 된다는 연구로, LLM의 저작권 침해 위험이 단순히 프롬프트 필터링으로는 해결되지 않음을 보여준다.
MacMind – 1989년 Macintosh의 HyperCard로 구현한 Transformer 신경망
HyperTalk으로 1,216개 파라미터짜리 단일 레이어 Transformer를 Macintosh SE/30에서 학습시켜 현대 LLM의 핵심 수학이 30년 전 하드웨어에서도 동일하게 동작함을 증명했다.
MegaTrain: 단일 GPU로 100B+ 파라미터 LLM을 Full Precision으로 학습하기
MegaTrain은 CPU 메모리를 주 저장소로, GPU를 연산 엔진으로만 활용함으로써 H200 GPU 단 한 장으로 120B 파라미터 모델을 풀 정밀도로 학습할 수 있다.
Nanocode: $200로 TPU에서 JAX로 구현하는 나만의 Claude Code 학습 라이브러리
이 오픈소스 라이브러리는 Constitutional AI 방식으로 $200 TPU에서 1.3B 파라미터 규모의 coding agent 모델을 처음부터 학습하게 하며 개발자가 AI 학습 파이프라인 전체를 직접 이해하고 실습할 수 있는 환경을 제공한다.
Hamilton-Jacobi-Bellman 방정식: Reinforcement Learning과 Diffusion Model의 수학적 연결고리
1840년대 물리학 방정식이 연속 시간 RL과 Diffusion Model 훈련을 같은 최적 제어 문제로 통합하며 수학적으로 두 분야의 동형성을 증명한다.