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
관련 논문
레이어 하나면 충분한가? 단일 Transformer 레이어 학습이 전체 파라미터 RL 학습과 동등한 성능
LLM의 RL 후처리 학습(post-training)에서 성능 향상의 대부분이 중간 레이어 소수에 집중되며, 단 하나의 레이어만 학습해도 전체 파라미터 학습과 비슷하거나 더 나은 결과를 낼 수 있다는 연구 결과. 이는 RL 학습 비용을 대폭 줄일 수 있는 가능성을 시사한다.
Black-Box LLM에서 지식 증류하기: Proxy-KD 기법 (2024)
GPT-4 같은 내부 구조에 접근할 수 없는 독점 LLM에서 작은 모델로 지식을 효과적으로 전달하는 Proxy-KD 기법을 소개하는 논문으로, 전통적인 White-Box 방식보다 성능이 높다는 점에서 주목할 만하다.
NanoEuler – 순수 C/CUDA로 처음부터 만든 GPT-2 규모 언어 모델
PyTorch나 autograd 없이 C와 CUDA만으로 GPT-2 수준의 LLM을 처음부터 구현한 교육용 프로젝트로, 역전파·BPE 토크나이저·FlashAttention까지 직접 손으로 작성했다.
Neural Particle Automata: 자기조직화 파티클 시스템을 학습하는 신경망 모델
고정된 격자 대신 움직이는 파티클 위에서 동작하는 Neural Cellular Automata의 확장 버전으로, 형태 생성·포인트 클라우드 분류·텍스처 합성 등 다양한 작업에서 자기조직화 동작을 학습할 수 있다.
PyTorch Training Loop 완전 해부: 각 줄이 하는 일과 순서를 바꾸면 생기는 문제
PyTorch 학습 루프의 각 코드 줄이 왜 그 위치에 있어야 하는지, 순서를 바꾸거나 빠뜨렸을 때 어떤 문제가 생기는지를 단계별로 설명한 심층 가이드다.
좋은 Verifier도 망가질 수 있다: Self-Improving VLM이 새로운 태스크에서 오히려 퇴보하는 현상
VLM 자가학습 루프에서 verifier가 특정 태스크에 맞지 않으면 학습할수록 오히려 성능이 떨어지는데, DPO 손실값은 멀쩡히 내려가서 눈치채기도 어렵다.