프로젝트 소개

nanochat은 단일 GPU 노드에서 대규모 언어 모델(Large Language Models, LLM)을 종단간 훈련하기 위한 최소한이면서도 해킹 가능한 실험적 하네스입니다. 이 프로젝트는 전체 LLM 파이프라인을 다룹니다: 토크나이제이션(Tokenization), 사전 훈련(Pretraining), 파인튜닝(Finetuning, SFT와 RL 포함), 평가(Evaluation), 그리고 추론(Inference). 프로젝트의 핵심 철학은 단순성입니다. 수십 개의 구성 옵션을 노출하는 대신, nanochat은 단일 복잡성 다이얼(`--depth`, 트랜스포머 레이어 수)을 사용하여 모든 다른 하이퍼파라미터(모델 너비, 헤드 수, 학습률, 훈련 기간, 가중치 감쇠)를 계산 최적화 방식으로 자동으로 도출합니다. 이 매개변수를 변화시켜 다양한 크기의 모델 시리즈를 생성할 수 있습니다. 8×H100 노드에서 GPT-2 클래스 모델(약 24~26 깊이)을 훈련하는 데 약 1.5시간이 소요되며, 비용은 약 $48($3/GPU/시간)입니다. 스팟 인스턴스에서는 비용이 약 $15로 줄어듭니다. 2019년 GPT-2 훈련 비용은 약 $43,000이었습니다. 주요 기능: - GPT-4 스타일 채팅 렌더링을 지원하는 BPE 토크나이저 - 순수 PyTorch로 구현된 GPT 트랜스포머 - `torchrun`을 통한 분산 훈련, 단일 GPU 및 그레디언트 누적 자동 폴백 지원 - `autocast` 없이 명시적인 혼합 정밀도 관리(bfloat16, float16, float32) - DCLM CORE 점수, 바이트당 비트 손실, 작업 벤치마크(ARC, GSM8K, MMLU, HumanEval)를 통한 평가 - 챗 모델을 위한 RL 및 SFT 훈련 스크립트 - KV 캐시를 지원하는 추론 엔진 - GPT-2 수준 성능까지의 실제 시간을 추적하는 스프린트 리더보드 코드베이스는 연구 반복을 위해 설계되었습니다: 빠른 12층 실험(~5분)을 통해 개발자는 전체 훈련을 실행하기 전에 변경 사항을 테스트할 수 있습니다. 이 프로젝트는 Andrej Karpathy가 작성하고 유지 관리하고 있습니다.