karpathy/autoresearch

AI agents running research on single-GPU nanochat training automatically

90,639
GitHub 스타
13,043
포크
Python
언어
미표기
라이선스
2026.03.26
최근 푸시
2026.05.09
별표한 날

AI 분석

설치 난이도: 보통
큐레이터 노트
자동화된 LLM 연구 실험을 원하는 연구자나 엔지니어에게 적합하며, 특히 밤새 실험을 실행하고 결과를 확인하려는 사용자에게 유용합니다. 단, 고성능 GPU가 필요하고 플랫폼 의존성이 있으므로 환경을 고려해야 합니다.

강점

  • 자율 연구를 위한 혁신적인 접근 방식으로, 인간이 직접 코드를 수정하지 않고 AI 에이전트가 실험을 자동화합니다.
  • 단일 파일(train.py)만 수정하도록 설계되어 범위가 명확하고 변경 사항 추적이 용이합니다.
  • 고정된 5분 시간 예산으로 실험 간 비교가 공정하며, 수면 중에도 많은 실험을 수행할 수 있습니다.

약점

  • 단일 NVIDIA GPU에만 공식 지원되며, 다른 플랫폼(CPU, Mac, AMD 등)은 포크에 의존해야 합니다.
  • 고정 시간 예산으로 인해 다른 컴퓨팅 플랫폼 간 결과 비교가 불가능합니다.
  • H100과 같은 고성능 GPU를 권장하므로, 저사양 환경에서는 추가 튜닝이 필요합니다.

주의사항

  • 에이전트가 코드를 수정하므로, 보안을 위해 모든 권한을 비활성화하고 실행해야 합니다.
  • 자체 수정 코드가 생성될 수 있으므로, 변경 사항을 검토하지 않고 맹목적으로 신뢰해서는 안 됩니다.
  • 작은 컴퓨팅 환경에서 실행하려면 데이터 세트, 배치 크기, 시퀀스 길이 등 여러 하이퍼파라미터를 조정해야 합니다.

시작 가이드

  • 저장소를 클론하고 `uv sync`로 종속성을 설치한 후 `prepare.py`를 실행하여 데이터를 준비합니다.
  • 단일 NVIDIA GPU 환경에서 `train.py`를 수동으로 실행하여 기본 설정이 작동하는지 확인합니다.
  • Claude/Codex와 같은 AI 에이전트를 설정하고 `program.md`를 기반으로 자율 연구를 시작합니다.
  • 저사양 환경이라면 포크를 참고하거나 README의 튜닝 가이드를 따라 하이퍼파라미터를 조정합니다.

README 한국어 번역

이 번역은 AI가 원문 README를 옮긴 것입니다. 원문이 항상 우선합니다.

autoresearch

!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를 검토할 수 있습니다.
  • 고정 시간 예산. 훈련은 항상 정확히 5분 동안 실행되며, 특정 플랫폼에 관계없습니다. 즉, 시간당 약 12개의 실험과 수면 중 약 100개의 실험을 기대할 수 있습니다. 이 설계 결정에는 두 가지 장점이 있습니다. 첫째, 에이전트가 변경하는 내용(모델 크기, 배치 크기, 아키텍처 등)에 관계없이 실험을 직접 비교할 수 있습니다. 둘째, 자동 연구가 해당 시간 예산 내에서 플랫폼에 가장 최적화된 모델을 찾을 수 있습니다. 단점은 실행(및 결과)이 다른 컴퓨팅 플랫폼에서 실행하는 다른 사람들과 비교할 수 없게 된다는 것입니다.
  • 자체 포함. PyTorch 및 몇 가지 작은 패키지 외에 외부 종속성이 없습니다. 분산 훈련, 복잡한 구성 없음. 하나의 GPU, 하나의 파일, 하나의 메트릭.

플랫폼 지원

이 코드는 현재 단일 NVIDIA GPU가 필요합니다. 원칙적으로 CPU, MPS 및 기타 플랫폼을 지원하는 것이 가능하지만 코드가 비대해집니다. 개인적으로 이 작업을 직접 맡을지 100% 확신하지 않습니다. 사람들은 더 넓은 플랫폼 지원을 제공하고 다양한 솔루션(예: Flash Attention 3 커널 폴백 구현, 일반 장치 지원, 자동 감지 등)을 보여주는 전체/상위 nanochat 저장소를 참조(또는 에이전트가 참조)할 수 있습니다. 다른 플랫폼에 대한 포크 또는 토론을 자유롭게 만들 수 있으며, 여기 README의 새로운 주목할 만한 포크 섹션 등에 링크를 기꺼이 추가하겠습니다.

H100보다 훨씬 작은 컴퓨팅 플랫폼에서 autoresearch를 시도하는 데 많은 관심이 있는 것 같아 몇 가지 추가 설명을 드립니다. 더 작은 컴퓨터(Macbook 등)에서 autoresearch를 실행하려면 아래 포크 중 하나를 권장합니다. 또한, 더 작은 모델에 대한 기본값을 조정하는 방법에 대한 몇 가지 권장 사항은 다음과 같습니다:

  1. 절반 정도 괜찮은 결과를 얻으려면 엔트로피가 훨씬 적은 데이터 세트(예: 이 TinyStories 데이터 세트)를 사용하는 것이 좋습니다. 이는 GPT-4로 생성된 짧은 이야기입니다. 데이터 범위가 훨씬 좁기 때문에 훨씬 작은 모델로도 합리적인 결과를 볼 수 있습니다(훈련 후 샘플링을 시도하는 경우).
  2. vocab_size를 줄이는 실험을 할 수 있습니다. 예를 들어 8192에서 4096, 2048, 1024 또는 utf-8 인코딩 후 단순히 바이트 수준 토크나이저로 256바이트까지 줄일 수 있습니다.
  3. prepare.py에서 MAXSEQLEN을 컴퓨터에 따라 256 등으로 크게 낮추는 것이 좋습니다. MAXSEQLEN을 낮추면 train.pyDEVICEBATCHSIZE를 약간 높여 보상하는 실험을 할 수 있습니다. fwd/bwd 패스당 토큰 수는 이 두 값의 곱입니다.
  4. 또한 prepare.py에서 EVAL_TOKENS를 줄여 검증 손실이 훨씬 적은 데이터에서 평가되도록 합니다.
  5. train.py에서 모델 복잡성을 제어하는 주요 단일 노브는 DEPTH(여기서 기본값 8)입니다. 많은 변수가 이의 함수이므로 예를 들어 4로 낮추십시오.
  6. WINDOW_PATTERN은 아마도 "L"만 사용하는 것이 좋습니다. "SSSL"은 교번 밴드 어텐션 패턴을 사용하여 매우 비효율적일 수 있기 때문입니다. 시도해 보십시오.
  7. TOTALBATCHSIZE를 크게 낮추되 2의 거듭제곱을 유지하십시오. 예를 들어 2**14(~16K) 정도까지 낮추십시오. 정확히 말하기는 어렵습니다.

이것이 실험할 합리적인 하이퍼파라미터라고 생각합니다. 좋아하는 코딩 에이전트에게 도움을 요청하고 이 가이드와 전체 소스 코드를 복사하여 붙여넣으십시오.

주목할 만한 포크

라이선스

MIT

원본 저장소: karpathy/autoresearch

라이선스: 미표기

게재 제외를 원하시면 삭제 요청을 보내주세요.