"이건 제가 쓴 코드 중 가장 미친 코드 중 하나예요."
이번 월요일, AI 거물 안드레이 카르파티가 최신 오픈소스 프로젝트를 공개했는데, 이는 즉시 전체 커뮤니티의 관심을 끌었습니다.
나노챗(nanochat)이라는 이 프로젝트는 단 100달러로 ChatGPT를 처음부터 구축하는 방법을 가르쳐준다고 합니다. LLM 학습과 추론을 모두 다루므로, 따라 하다 보면 대규모 모델을 구축하는 데 필요한 모든 단계를 이해할 수 있습니다.
총 8,000줄의 코드로 구성되어 있으며, GitHub에 출시된 지 12시간 만에 이미 4,500개가 넘는 별점을 받았습니다.
GitHub 링크: https://github.com/karpathy/nanochat
Karpathy가 이전에 출시한 nanoGPT 저장소(사전 학습 단계만 포함)와는 달리, nanochat은 처음부터 구현된 최소한의 내용만 담고 있지만 완전한 ChatGPT 클론 학습/추론 프로세스 프로젝트로, 모든 콘텐츠가 최소한의 종속성을 갖춘 깔끔한 코드 베이스에 집중되어 있습니다 .
클라우드 GPU 머신을 가동하고 스크립트를 실행하기만 하면 약 4시간 후에 ChatGPT 스타일 웹 인터페이스에서 자신의 LLM과 채팅할 수 있습니다.
저장소에는 약 8,000줄의 코드가 있지만 이미 다음 기능을 모두 구현했습니다.
새로운 Rust 구현을 사용하여 토크나이저를 훈련합니다.
FineWeb 데이터 세트에서 Transformer LLM을 사전 학습하고 다양한 지표에 대한 CORE 점수를 평가합니다.
중간 훈련 단계에서는 사용자 지원 대화, 객관식 질문과 답변, 도구 사용 등의 데이터를 사용하여 SmolTalk를 훈련합니다.
SFT를 미세 조정하고 세계 지식(ARC-E/C, MMLU), 수학(GSM8K), 코드(HumanEval)에 대한 객관식 문제에 대한 모델의 성능을 평가합니다.
선택 사항: GSM8K에서 RL 강화 훈련을 위해 GRPO를 사용합니다.
KV 캐시, 사전 채우기/디코딩 추론, 도구 호출(가벼운 샌드박스의 Python 인터프리터)을 지원하는 효율적인 추론 엔진으로, CLI 또는 ChatGPT 스타일 WebUI를 통해 상호 작용할 수 있습니다.
전체 교육 과정을 요약하고 게임화하기 위해 마크다운 보고서 카드를 자동으로 생성합니다.
카르파티는 약 100달러(8×H100에서 4시간 학습)만 투자하면 이야기나 시를 쓰고 간단한 질문에 답할 수 있는 "채팅형" 미니 ChatGPT를 학습시킬 수 있다고 밝혔습니다. 약 12시간의 학습으로 GPT-2의 핵심 성능을 능가할 수 있습니다.
이를 1,000달러 예산(41.6시간 학습)으로 확장하면 모델 일관성이 빠르게 향상되어 기본적인 수학/코딩 과제를 해결하고 객관식 시험도 통과할 수 있습니다. 예를 들어, 24시간 동안 학습된 30개 계층 모델(GPT-3 Small의 1억 2,500만 FLOP에 해당, GPT-3의 약 1,000분의 1 수준)은 MMLU에서 40점 이상, ARC-Easy에서 70점 이상, GSM8K에서 20점 이상의 점수를 달성할 수 있습니다.
Karpathy의 목표는 "강력한 기준" 기능의 전체 세트를 단일하고, 구조화되고, 읽기 쉽고, 해킹 가능하고, 포크 가능한 저장소로 패키징하는 것입니다 . nanochat은 LLM101n 과정(아직 개발 중)의 정점이 될 것입니다.
Karpathy는 nanochat이 nanoGPT와 유사한 연구 플랫폼 또는 표준 벤치마크로 발전할 잠재력을 가지고 있다고 생각합니다. 아직 완벽과는 거리가 멀며, 특별한 튜닝이나 성능 최적화는 이루어지지 않았습니다(하지만 그는 거의 완벽에 가까워지고 있다고 생각합니다). 하지만 전반적인 프레임 잘 구성되어 있어 GitHub 호스팅에 적합하며, 커뮤니티가 개별 모듈 공동으로 개발하고 개선할 수 있도록 지원합니다.
WebUI를 사용한 100달러짜리 4시간 나노채팅 대화 예시입니다.
다음은 Karpathy의 100달러 스피드런 사례에 대한 보고서에 제시된 일부 지표의 요약입니다.
채팅 기능을 갖춘 대규모 모델을 만드는 것이 매우 간단하고 비용이 적게 들며, Karpathy의 성숙한 오픈 소스 코드의 지원을 받으면 우리 작업에 도움이 되는 개인화된 모델을 만드는 것이 가능할까요?
일부 네티즌들은 모두가 우려하는 질문을 제기했습니다.
하지만 카르파티는 이런 애플리케이션에 차가운 물을 끼얹으며, 이는 개인화 목적에 적합한 코드가 아니라고 말했습니다.
카르파티는 이 작은 모델을 그렇게 많은 원시 지능을 갖추지 않은 아주 어린아이처럼 생각해야 한다고 주장합니다. 자신의 데이터로 미세 조정/훈련시키면 마치 스타일에 맞춰 작성한 것처럼 느껴지는 흥미로운 앵무새 같은 효과를 얻을 수 있겠지만, 결과는 엉망이 될 것입니다.
개인화된 모델의 효과를 얻으려면 일반적으로 다음 단계가 필요합니다.
원시 데이터 준비
이를 기반으로 대량 합성 데이터를 생성하고 다시 작성합니다(복잡하고 명확하지 않으며 조사가 필요함)
이 데이터를 사용하여 현재 강력한 오픈 소스 모델(예: Tinker)을 미세 조정합니다.
미세 조정 시에는 모델이 일반적인 지능 기능을 너무 많이 잃지 않도록 사전 학습 데이터를 대량 섞어야 할 수도 있습니다.
이 계획을 실제로 효과적으로 만들려면 아직 과학적 연구가 필요하다고 할 수 있습니다.
더 자세한 기술 소개와 단계별 구성 사례를 보려면 다음 링크를 참조하세요.
https://github.com/karpathy/nanochat/discussions/1
본 기사는 WeChat 공개 계정 "Machine Heart" 에서 발췌한 것입니다. 저자는 AI 분야를 전문으로 하는 Machine Heart이며, 36Kr의 허가를 받아 게재되었습니다.