AI agents running research on single-GPU nanochat training automatically
이 번역은 AI가 원문 README를 옮긴 것입니다. 원문이 항상 우선합니다.
!teaser
한때 최첨단 AI 연구는 '미트 컴퓨터(인간)'가 먹고, 자고, 다른 재미를 즐기고, 가끔 '그룹 미팅'이라는 의식에서 음파 상호 연결을 사용하여 동기화하는 사이에 수행되었습니다. 그 시대는 오래전에 끝났습니다. 이제 연구는 전적으로 하늘의 컴퓨팅 클러스터 거대 구조물에서 실행되는 AI 에이전트의 자율적 떼의 영역입니다. 에이전트들은 우리가 현재 코드 베이스의 10,205세대에 있다고 주장하지만, 어쨌든 '코드'가 이제 인간의 이해를 넘어선 자체 수정 바이너리이기 때문에 그것이 맞는지 틀린지 아무도 말할 수 없습니다. 이 저장소는 모든 것이 어떻게 시작되었는지에 대한 이야기입니다. -@karpathy, 2026년 3월.
아이디어: AI 에이전트에게 작지만 실제 LLM 훈련 설정을 제공하고 밤새 자율적으로 실험하게 하는 것입니다. 코드를 수정하고, 5분 동안 훈련하고, 결과가 개선되었는지 확인하고, 유지 또는 폐기하고, 반복합니다. 아침에 일어나면 실험 로그와 (희망적으로) 더 나은 모델을 보게 됩니다. 여기의 훈련 코드는 nanochat의 단순화된 단일 GPU 구현입니다. 핵심 아이디어는 연구자처럼 Python 파일을 직접 건드리지 않는다는 것입니다. 대신 AI 에이전트에 컨텍스트를 제공하고 자율 연구 조직을 설정하는 program.md 마크다운 파일을 프로그래밍합니다. 이 저장소의 기본 program.md는 의도적으로 최소한의 기준선으로 유지되지만, 시간이 지남에 따라 가장 빠른 연구 진행을 달성하는 '연구 조직 코드'를 찾기 위해 어떻게 반복할지, 더 많은 에이전트를 추가하는 방법 등은 명확합니다. 이 프로젝트에 대한 추가 컨텍스트는 이 트윗과 이 트윗에 있습니다.
저장소는 의도적으로 작게 유지되며 실제로 중요한 파일은 세 개뿐입니다:
prepare.py — 고정 상수, 일회성 데이터 준비(훈련 데이터 다운로드, BPE 토크나이저 훈련) 및 런타임 유틸리티(데이터로더, 평가). 수정되지 않습니다.train.py — 에이전트가 편집하는 단일 파일. 전체 GPT 모델, 옵티마이저(Muon + AdamW) 및 훈련 루프를 포함합니다. 모든 것이 대상입니다: 아키텍처, 하이퍼파라미터, 옵티마이저, 배치 크기 등. 이 파일은 에이전트에 의해 편집되고 반복됩니다.program.md — 하나의 에이전트에 대한 기본 지침. 여기에 에이전트를 지정하고 실행하세요. 이 파일은 인간에 의해 편집되고 반복됩니다.설계상 훈련은 컴퓨팅 세부 사항에 관계없이 고정된 5분 시간 예산(시작/컴파일 제외, 벽시계 시간)으로 실행됩니다. 메트릭은 val_bpb(검증 bits per byte)입니다. 낮을수록 좋으며, 어휘 크기에 독립적이므로 아키텍처 변경이 공정하게 비교됩니다.
신경망에 처음이라면, 이 'Dummy's Guide'가 더 많은 컨텍스트에 대해 꽤 좋아 보입니다.
요구 사항: 단일 NVIDIA GPU(H100에서 테스트됨), Python 3.10+, uv.
# 1. uv 프로젝트 관리자 설치 (아직 없는 경우)
curl -LsSf https://astral.sh/uv/install.sh | sh
# 2. 종속성 설치
uv sync
# 3. 데이터 다운로드 및 토크나이저 훈련 (일회성, ~2분)
uv run prepare.py
# 4. 단일 훈련 실험 수동 실행 (~5분)
uv run train.py
위 명령이 모두 정상 작동하면 설정이 완료된 것이며 자율 연구 모드로 전환할 수 있습니다.
이 저장소에서 Claude/Codex 또는 원하는 것을 간단히 실행하고(모든 권한 비활성화) 다음과 같이 프롬프트를 입력하세요:
안녕하세요, program.md를 살펴보고 새 실험을 시작합시다! 먼저 설정을 해주세요.
program.md 파일은 본질적으로 초경량 '스킬'입니다.
prepare.py — 상수, 데이터 준비 + 런타임 유틸리티 (수정 금지)
train.py — 모델, 옵티마이저, 훈련 루프 (에이전트가 수정)
program.md — 에이전트 지침
pyproject.toml — 종속성
train.py만 건드립니다. 이렇게 하면 범위를 관리 가능하게 유지하고 diff를 검토할 수 있습니다.이 코드는 현재 단일 NVIDIA GPU가 필요합니다. 원칙적으로 CPU, MPS 및 기타 플랫폼을 지원하는 것이 가능하지만 코드가 비대해집니다. 개인적으로 이 작업을 직접 맡을지 100% 확신하지 않습니다. 사람들은 더 넓은 플랫폼 지원을 제공하고 다양한 솔루션(예: Flash Attention 3 커널 폴백 구현, 일반 장치 지원, 자동 감지 등)을 보여주는 전체/상위 nanochat 저장소를 참조(또는 에이전트가 참조)할 수 있습니다. 다른 플랫폼에 대한 포크 또는 토론을 자유롭게 만들 수 있으며, 여기 README의 새로운 주목할 만한 포크 섹션 등에 링크를 기꺼이 추가하겠습니다.
H100보다 훨씬 작은 컴퓨팅 플랫폼에서 autoresearch를 시도하는 데 많은 관심이 있는 것 같아 몇 가지 추가 설명을 드립니다. 더 작은 컴퓨터(Macbook 등)에서 autoresearch를 실행하려면 아래 포크 중 하나를 권장합니다. 또한, 더 작은 모델에 대한 기본값을 조정하는 방법에 대한 몇 가지 권장 사항은 다음과 같습니다:
vocab_size를 줄이는 실험을 할 수 있습니다. 예를 들어 8192에서 4096, 2048, 1024 또는 utf-8 인코딩 후 단순히 바이트 수준 토크나이저로 256바이트까지 줄일 수 있습니다.prepare.py에서 MAXSEQLEN을 컴퓨터에 따라 256 등으로 크게 낮추는 것이 좋습니다. MAXSEQLEN을 낮추면 train.py의 DEVICEBATCHSIZE를 약간 높여 보상하는 실험을 할 수 있습니다. fwd/bwd 패스당 토큰 수는 이 두 값의 곱입니다.prepare.py에서 EVAL_TOKENS를 줄여 검증 손실이 훨씬 적은 데이터에서 평가되도록 합니다.train.py에서 모델 복잡성을 제어하는 주요 단일 노브는 DEPTH(여기서 기본값 8)입니다. 많은 변수가 이의 함수이므로 예를 들어 4로 낮추십시오.WINDOW_PATTERN은 아마도 "L"만 사용하는 것이 좋습니다. "SSSL"은 교번 밴드 어텐션 패턴을 사용하여 매우 비효율적일 수 있기 때문입니다. 시도해 보십시오.TOTALBATCHSIZE를 크게 낮추되 2의 거듭제곱을 유지하십시오. 예를 들어 2**14(~16K) 정도까지 낮추십시오. 정확히 말하기는 어렵습니다.이것이 실험할 합리적인 하이퍼파라미터라고 생각합니다. 좋아하는 코딩 에이전트에게 도움을 요청하고 이 가이드와 전체 소스 코드를 복사하여 붙여넣으십시오.
MIT