NanoChat – $100로 만드는 나만의 ChatGPT (Karpathy 신작)
NanoChat – The best ChatGPT that $100 can buy
TL;DR Highlight
Andrej Karpathy가 공개한 LLM 학습 프레임워크는 8xH100 GPU에서 4시간($100 이하)만에 GPT-2급 모델을 처음부터 학습하여 ChatGPT 스타일 웹 UI로 대화 가능하게 한다.
Who Should Read
LLM 내부 구조를 직접 만져보며 이해하고 싶은 ML 엔지니어나, 소규모 도메인 특화 모델을 처음부터 학습해보려는 개발자.
Core Mechanics
- nanochat은 토크나이저 → 사전학습 → 파인튜닝 → 평가 → 추론 → 채팅 UI까지 LLM의 전체 파이프라인을 하나의 코드베이스에 담은 실험용 프레임워크다. 코드가 최소한으로 작성되어 있어서 해킹(수정)하기 쉽다.
- 핵심 설계 철학은 '--depth'(트랜스포머 레이어 수) 하나만 돌리면 나머지 하이퍼파라미터(width, head 수, learning rate, weight decay 등)가 compute-optimal하게 자동 계산된다는 것이다. GPT-2급은 대략 depth 26.
- 2019년에 GPT-2를 학습하는 데 약 $43,000이 들었는데, nanochat으로는 8xH100 노드에서 약 2시간, $48이면 된다. spot 인스턴스를 쓰면 $15까지도 가능하다.
- Karpathy의 nanoGPT → Keller Jordan의 modded-nanoGPT(학습 속도 극한 최적화) → nanochat 순서로 발전한 계보다. modded-nanoGPT에서 도입한 Muon optimizer(linear layer용, AdamW 대체)도 영향을 줬다.
- GPT-2 Speedrun Leaderboard를 운영해서 커뮤니티가 GPT-2급 모델을 얼마나 빨리 학습할 수 있는지 경쟁하도록 했다. 평가 기준은 DCLM CORE score.
- Karpathy 본인이 밝히길, 코드는 거의 100% 수작업으로 작성했고 Claude/Codex 같은 AI 코딩 에이전트를 몇 번 시도했지만 '기존 데이터 분포에서 너무 벗어난 코드'라 도움이 안 됐다고 한다.
- 단일 GPU 노드에서 돌리도록 설계되어 있어서 분산 학습 설정 없이도 실험할 수 있지만, '개인 PC CPU로 학습'하는 시나리오는 현실적이지 않다. H100 클라우드 렌탈이 사실상 필수.
Evidence
- 제목의 '$100'이 오해를 부른다는 지적이 많았다. 실제로는 8xH100 GPU 클라우드 노드 렌탈 비용이 $100이라는 뜻인데, 로컬에서 돌아가는 줄 알고 기대했다가 실망했다는 반응이 있었다.
- Karpathy가 AI 코딩 도구(Claude, Codex)를 써봤지만 도움이 안 됐다고 밝힌 트윗이 화제가 됐다. 기존 학습 데이터 분포에서 벗어난 독창적 코드에는 AI 코딩 에이전트가 아직 한계가 있다는 사례로 인용됐다.
- 한 유저가 실제로 학습을 돌리며 W&B(Weights & Biases) 링크를 실시간 공유했고, 4시간 후 모델을 공개하겠다고 했다. 커뮤니티가 직접 실험에 참여하는 분위기.
- 개인 컴퓨터(CPU)로 3개월이 걸려도 좋으니 학습해보고 싶다는 의견도 있었지만, 현실적으로 GPU 없이는 의미 있는 결과를 내기 어렵다는 게 중론이었다.
- 심리학 교재·논문 등 도메인 데이터로 학습해서 전문 질의응답에 쓸 수 있냐는 질문이 있었는데, 원칙적으로는 가능하지만 GPT-2급 규모로는 도메인 전문성을 기대하기 어렵다는 맥락.
How to Apply
- LLM 학습 파이프라인 전체를 처음부터 끝까지 직접 경험해보고 싶다면, nanochat의 speedrun.sh 스크립트 하나로 사전학습부터 채팅 UI까지 한 번에 돌려볼 수 있다. Lambda Labs나 RunPod 같은 곳에서 8xH100 spot 인스턴스를 빌리면 $15~48 수준.
- 사내에서 소규모 도메인 특화 모델을 실험하려 할 때, nanochat의 '--depth' 파라미터만 조절해서 다양한 크기의 모델을 빠르게 비교해볼 수 있다. depth를 낮추면 비용이 급격히 줄어들어 프로토타이핑에 적합하다.
- LLM 학습 최적화를 연구하고 있다면, GPT-2 Speedrun Leaderboard에 참여해서 학습 속도 개선 기법(Muon optimizer, 커스텀 스케줄러 등)을 실험하고 커뮤니티에 공유할 수 있다.
- AI 코딩 도구의 한계를 체감한 사례로, 기존 오픈소스와 크게 다른 아키텍처의 코드를 작성할 때는 AI 에이전트에 의존하기보다 직접 작성하는 게 나을 수 있다는 점을 참고할 것.
Code Example
# nanochat 빠른 시작 (8xH100 노드에서)
git clone https://github.com/karpathy/nanochat.git
cd nanochat
bash runs/speedrun.sh # 사전학습 → 추론 → 채팅 UI까지 한 번에
# depth 파라미터로 모델 크기 조절 (GPT-2급 = depth 26)
python nanochat/train.py --depth 26Terminology
관련 논문
Neural Particle Automata: 자기조직화 파티클 시스템을 학습하는 신경망 모델
고정된 격자 대신 움직이는 파티클 위에서 동작하는 Neural Cellular Automata의 확장 버전으로, 형태 생성·포인트 클라우드 분류·텍스처 합성 등 다양한 작업에서 자기조직화 동작을 학습할 수 있다.
PyTorch Training Loop 완전 해부: 각 줄이 하는 일과 순서를 바꾸면 생기는 문제
PyTorch 학습 루프의 각 코드 줄이 왜 그 위치에 있어야 하는지, 순서를 바꾸거나 빠뜨렸을 때 어떤 문제가 생기는지를 단계별로 설명한 심층 가이드다.
좋은 Verifier도 망가질 수 있다: Self-Improving VLM이 새로운 태스크에서 오히려 퇴보하는 현상
VLM 자가학습 루프에서 verifier가 특정 태스크에 맞지 않으면 학습할수록 오히려 성능이 떨어지는데, DPO 손실값은 멀쩡히 내려가서 눈치채기도 어렵다.
Self-Distillation에서 Feedback Alignment의 역할
LLM이 스스로를 가르칠 때, 피드백을 모델의 추론 흐름에 단계별로 맞추면 GRPO보다 16점 이상 수학 추론 성능이 오른다.
작고 수정 가능한 CUDA 기반 Language Model 직접 구현체
CUDA로 작성된 GPT(Generative Pretrained Transformer) 미니멀 구현체로, 텍스트뿐 아니라 모든 바이트 스트림을 학습할 수 있어 LLM 내부 구조를 직접 뜯어보고 싶은 개발자에게 유용하다.
Stanford CS336: Language Modeling from Scratch - LLM을 처음부터 직접 만드는 강의
Stanford에서 운영하는 LLM 전 과정 구현 강의로, 토크나이저부터 데이터 수집, 트랜스포머 구현, 분산 학습, RL 기반 정렬까지 직접 코딩하며 배운다. 이론이 아닌 구현 중심이라 실제로 LLM이 어떻게 작동하는지 깊이 이해하고 싶은 개발자에게 가장 체계적인 커리큘럼 중 하나다.