OpenAI 공동 창업자 Andrej Karpathy가 단 100달러, 4시간이면 자신만의 ChatGPT를 구축할 수 있는 nanochat 프로젝트를 공개했습니다. GPT-3 학습에 최소 50만 달러, GPT-4에는 1억 달러 이상이 들었다는 사실을 생각하면 놀라운 진전이죠.

핵심 포인트:
- 100달러, 4시간의 마법: 8XH100 GPU 노드에서 speedrun.sh 스크립트 하나로 토크나이제이션부터 사전학습, 파인튜닝, 웹 서빙까지 전체 파이프라인 완성
- 8천 줄로 구현한 ChatGPT: 330KB, 45개 파일의 최소화된 코드베이스로 LLM 전체 구조를 읽고 이해할 수 있는 교육적 가치
- 확장 가능한 3단계 모델: 100달러(4시간), 300달러(12시간, GPT-2 수준), 1,000달러(42시간, 복잡한 수학/코딩 문제 해결)로 규모 조정 가능
ChatGPT 클론을 100달러에 만든다는 것
LLM 학습 비용은 천문학적입니다. 2017년 원조 Transformer 학습에는 900달러가 들었지만, GPT-3(1,750억 파라미터)는 50만~460만 달러, GPT-4는 1억 달러 이상이 소요됐습니다. Google의 Gemini Ultra는 무려 1억 9,100만 달러를 투입했죠.
이런 상황에서 nanochat이 제시하는 100달러는 파격적입니다. 물론 GPT-4와 같은 성능을 기대할 수는 없어요. nanochat의 100달러 모델은 “유치원생과 대화하는 수준”이라고 Karpathy는 솔직하게 표현했습니다. 하지만 여기서 중요한 건 비용이 아니라 접근성입니다.

nanochat의 전체 파이프라인
nanochat은 이전 프로젝트인 nanoGPT를 크게 확장했습니다. nanoGPT가 사전학습만 다뤘다면, nanochat은 완전한 ChatGPT 클론을 만드는 전체 과정을 포함합니다.
포함된 핵심 기능:
- Rust로 작성된 토크나이저 학습
- FineWeb 데이터셋을 활용한 Transformer LLM 사전학습
- 사용자-어시스턴트 대화와 객관식 문제로 중간 학습
- Supervised Fine-Tuning (SFT)
- GRPO를 활용한 강화학습 (선택사항)
- KV 캐싱을 통한 효율적인 추론
- 명령줄 인터페이스와 웹 UI
- 성능 요약 리포트 자동 생성
가장 놀라운 점은 이 모든 것이 단일 스크립트로 실행된다는 사실입니다. Lambda 같은 클라우드 GPU 제공업체에서 8XH100 노드를 부팅하고, speedrun.sh를 실행하면 4시간 후 자신만의 LLM과 대화할 수 있습니다.
screen -L -Logfile speedrun.log -S speedrun bash speedrun.sh
이 명령 하나로 토크나이제이션부터 웹 서빙까지 모든 과정이 자동으로 진행됩니다. 시간당 약 24달러의 GPU 비용을 4시간 동안 지불하면, 총 96달러로 작동하는 ChatGPT 클론이 완성되는 거죠.
규모별 성능 비교
nanochat의 진짜 매력은 확장성입니다. 예산과 시간에 따라 세 가지 등급을 선택할 수 있어요.
100달러 티어 (4시간): 기본적인 대화와 간단한 텍스트 생성이 가능합니다. 모델에게 이야기나 시를 써달라고 요청할 수 있고, 하늘이 왜 파란지 물어볼 수도 있죠. Karpathy의 표현대로 “유치원생과 대화하는” 수준이지만, LLM의 기본 작동 원리를 이해하기에는 충분합니다.
300달러 티어 (12시간): depth=26 모델로, GPT-2의 CORE 벤치마크 점수를 약간 상회합니다. 더 일관성 있는 대화가 가능하고 객관식 문제도 어느 정도 풀 수 있어요.
1,000달러 티어 (42시간): 간단한 수학 문제와 코딩 문제를 해결할 수 있는 수준입니다. 여전히 최첨단 모델과는 거리가 있지만, 실용적인 용도로 활용할 만한 수준에 도달합니다.
예를 들어, 100달러 티어 모델의 벤치마크 결과는 다음과 같습니다:
- CORE: 0.2219
- ARC-Challenge: 0.2875 (중간 학습 후)
- GSM8K: 0.0758 (강화학습 후)
- HumanEval: 0.0854 (SFT 후)
최첨단 모델과 비교하면 낮은 점수지만, 전체 학습 파이프라인을 경험하고 이해하는 데는 이 정도면 충분합니다.
코드베이스의 아름다움
nanochat의 가장 큰 강점은 “읽을 수 있는” 코드입니다. 전체 프로젝트는 45개 파일, 약 8,300줄의 코드로 구성되어 있고, 패키징하면 330KB 정도입니다. 대부분의 최신 LLM이 10만 토큰 내외를 처리할 수 있으니, 코드 전체를 Claude나 GPT에 복사해서 질문할 수 있다는 뜻이죠.
Karpathy는 의도적으로 복잡한 프레임워크나 거대한 설정 객체를 배제했습니다. 목적은 “최대한 포크 가능한” 강력한 베이스라인을 만드는 것이었어요. 개발자들이 코드를 읽고, 이해하고, 자신의 목적에 맞게 수정할 수 있도록 설계되었습니다.
이 철학은 Eureka Labs의 LLM101n 코스와도 연결됩니다. nanochat은 이 코스의 캡스톤 프로젝트가 될 예정인데, 학생들이 AI 모델을 처음부터 끝까지 구축하면서 배우는 완벽한 교육 도구인 셈이죠.
실용적 활용 가능성
nanochat은 교육용 도구를 넘어 실용적 가치도 있습니다.
학습과 연구: AI/ML 학생과 연구자들은 제한된 예산으로 LLM 실험을 진행할 수 있습니다. 논문에서 읽은 개념을 실제 코드로 구현해보고, 하이퍼파라미터를 조정해가며 그 영향을 직접 확인할 수 있어요.
프로토타이핑: 스타트업이나 기업이 특정 도메인에 특화된 소규모 LLM을 빠르게 프로토타입할 수 있습니다. 수백만 달러를 투자하기 전에 아이디어의 가능성을 검증하는 용도로 활용할 수 있죠.
벤치마킹: modded-nanoGPT처럼 nanochat도 연구 벤치마크로 발전할 가능성이 있습니다. 명확한 메트릭과 리더보드가 있어 연구자들이 최적화 기법을 경쟁적으로 개선할 수 있는 환경을 제공합니다.
커뮤니티 학습: files-to-prompt 같은 유틸리티로 코드를 패키징해서 LLM에게 질문하거나, DeepWiki를 통해 프로젝트를 탐색할 수 있습니다. GitHub URL의 github.com을 deepwiki.com으로 바꾸기만 하면 되죠.
기술적 고려사항
nanochat을 실행하려면 몇 가지 기술적 요구사항이 있습니다.
하드웨어: 8XH100 노드가 이상적이지만, 8XA100에서도 작동합니다. 단일 GPU에서도 실행 가능하지만 8배 더 오래 걸립니다. VRAM이 80GB 미만이라면 --device_batch_size
파라미터를 줄여야 해요. 기본값 32를 16, 8, 4로 낮추면서 메모리에 맞출 수 있습니다.
확장: 더 큰 모델을 학습하려면 세 가지만 수정하면 됩니다. 첫째, 충분한 데이터 샤드를 다운로드하고, 둘째, --depth
파라미터로 모델 크기를 늘리고, 셋째, 메모리 부족을 방지하기 위해 배치 크기를 조정하는 것이죠.
환경: vanilla PyTorch를 사용하므로 xpu, mps 등 다양한 백엔드에서 작동할 수 있지만, 기본 지원은 CUDA입니다.
nanochat이 보여주는 건 단순히 저비용 LLM 학습의 가능성이 아닙니다. 복잡한 AI 기술을 투명하고 접근 가능하게 만드는 방법을 제시하고 있어요. GPT-4를 능가하는 모델을 만들 수는 없지만, LLM이 어떻게 작동하는지 이해하고, 실험하고, 자신만의 변형을 만들 수 있는 완벽한 출발점입니다.
참고자료:
답글 남기기