새로운 저장소 nanochat을 출시하게 되어 기쁩니다! (제가 쓴 것 중 가장 정신없는 저장소 중 하나예요.) 사전 학습만 다루었던 이전 유사 저장소 nanoGPT와 달리, nanochat은 단일 종속성을 최소화한 코드베이스로 구성된 간단한 ChatGPT 클론의 최소한의 풀스택 학습/추론 파이프라인입니다. 클라우드 GPU 박스를 부팅하고 스크립트 하나만 실행하면 단 4시간 만에 ChatGPT와 유사한 웹 UI에서 자신의 LLM과 통신할 수 있습니다. 제 생각에는 약 8,000줄의 꽤 깔끔한 코드로 다음과 같은 작업을 수행합니다. - 새로운 Rust 구현을 사용하여 토크나이저를 학습합니다. - FineWeb에서 Transformer LLM을 사전 학습하고 여러 지표에 걸쳐 CORE 점수를 평가합니다. - SmolTalk의 사용자 지원 대화, 객관식 질문, 도구 사용을 통해 중간 학습합니다. - SFT, 세계 지식 객관식(ARC-E/C, MMLU), 수학(GSM8K), 코드(HumanEval)를 기반으로 채팅 모델을 평가합니다. - "GRPO"를 사용하여 GSM8K에서 선택적으로 모델을 RL합니다. - KV 캐시, 간단한 사전 채우기/디코딩, 도구 사용(경량 샌드박스의 Python 인터프리터)을 갖춘 엔진에서 모델을 효율적으로 추론하고, CLI 또는 ChatGPT와 유사한 WebUI를 통해 모델과 통신합니다. - 마크다운 보고서 하나를 작성하고, 모든 내용을 요약하고 게임화합니다. 약 100달러(8XH100 노드에서 약 4시간 소요) 정도의 저렴한 비용으로도 대화가 가능하고, 스토리/시를 쓰고, 간단한 질문에 답할 수 있는 작은 ChatGPT 클론을 학습시킬 수 있습니다. 약 12시간은 GPT-2 CORE 기준을 초과합니다. 약 1,000달러(약 41.6시간 학습)까지 확장할수록 훨씬 더 일관성 있는 결과를 얻을 수 있으며, 간단한 수학/코드 문제를 풀고 객관식 시험을 볼 수 있습니다. 예를 들어, 24시간 동안 학습된 깊이 30 모델(GPT-3 Small 125M의 FLOPs와 GPT-3의 1/1,000에 해당)은 MMLU에서 40초, ARC-Easy에서 70초, GSM8K에서 20초 등의 성능을 보입니다. 제 목표는 전체 "강력한 기준" 스택을 하나의 응집력 있고, 최소화되고, 읽기 쉽고, 해킹 가능하며, 최대한 포크 가능한 저장소로 만드는 것입니다. nanochat은 LLM101n(아직 개발 중)의 핵심 프로젝트가 될 것입니다. 또한 nanoGPT처럼 연구 도구 또는 벤치마크로 성장할 잠재력이 있다고 생각합니다. 아직 완성되거나, 조정되거나, 최적화되지는 않았습니다(사실, 쉽게 개선할 수 있는 부분이 꽤 있을 것 같습니다). 하지만 전체적인 뼈대는 충분히 괜찮아서 GitHub에 올려서 모든 부분을 개선할 수 있을 것 같습니다. 나노챗 스피드런에 대한 자세한 설명과 리포지토리 링크는 답글에 있습니다.
GitHub 저장소: hgithub.com/karpathy/nanoc…훨씬 더 자세하고 기술적인 연습: https://t.co/YmHaZfNjcJ WebUI에github.com/karpathy/nanoc…시. 정말... 재밌네요 :) 더 큰 모델(예: 12시간 깊이 26 또는 24시간 깊이 30)은 빠르게 더 일관성을 갖게 됩니다.
그리고 보고서 카드에 $100 스피드런으로 생성된 요약 지표 몇 가지를 예로 들어 보겠습니다. 현재 코드 베이스는 8,000줄이 조금 넘지만, 깔끔하고 주석 처리가 잘 되어 있도록 노력했습니다. 이제 재미있는 부분, 튜닝과 힐클라임 작업이 시작됩니다.