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
snippet
# 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
DCLM CORE scoreLLM의 언어 이해 능력을 측정하는 벤치마크 점수. GPT-2급인지 판단하는 기준선으로 사용된다.
Muon optimizerAdamW를 대체하는 최적화 알고리즘으로, 트랜스포머의 linear layer 학습에 특화되어 학습 속도를 크게 높인다.
BPB (Bits Per Byte)모델이 텍스트를 얼마나 잘 예측하는지 나타내는 지표. 숫자가 낮을수록 다음 글자를 더 정확히 맞춘다는 뜻.
compute-optimal주어진 연산 예산(GPU 시간·비용) 대비 최고 성능을 내도록 모델 크기와 학습량의 비율을 최적으로 맞추는 것. Chinchilla 논문에서 유래.
spot instance클라우드 GPU를 유휴 자원으로 싸게 빌리는 방식. 대신 언제든 회수당할 수 있어서 체크포인트 저장이 중요하다.