Autoresearch — Karpathy выложил фреймворк, где AI-агент ночью гоняет 100 ML-экспериментов на одной GPU
Autoresearch — Karpathy выложил фреймворк, где AI-агент ночью гоняет 100 ML-экспериментов на одной GPU
Андрей Карпати сделал то, о чём ML-инженеры мечтали годами: упаковал цикл «придумал гипотезу → поменял код → обучил → проверил → повторил» в один фреймворк, который работает без тебя. Ты ложишься спать, а утром на git-ветке лежат 100 коммитов с экспериментами — и модель реально стала лучше.
TL;DR: Autoresearch — open-source фреймворк от Karpathy, где AI-агент (Claude, Codex, кто угодно) автономно модифицирует
train.py, тренирует LLM 5 минут, сравнивает результат и решает — оставить или откатить. ~12 экспериментов в час, ~100 за ночь, на одной GPU. 4.2K звёзд за два дня, MIT-лицензия.
Зачем это нужно и при чём тут ты
Если ты хоть раз файнтюнил модель или подбирал гиперпараметры — ты знаешь эту боль. Запустил обучение, подождал, посмотрел логи, поменял learning rate, запустил снова. И так до бесконечности. Это рутина, которая пожирает дни.
Autoresearch убирает тебя из этого цикла. Не из процесса принятия решений — ты по-прежнему пишешь program.md, где описываешь, что именно исследовать. Но монотонную часть «запустил-подождал-посмотрел-поменял» делает агент.
Конкретнее — кому это полезно прямо сейчас:
-
Тренируешь или файнтюнишь LLM — вместо ручного перебора гиперпараметров запускаешь агента на ночь. Утром у тебя git-ветка с десятками экспериментов и чёткий ответ, какая конфигурация лучше для твоего железа.
-
Изучаешь ML-архитектуры — autoresearch работает как песочница. Написал в
program.md: «попробуй заменить стандартный attention на sliding window» — и смотришь, что получилось. Не нужно самому лезть в код обучения. -
Строишь автономных AI-агентов — и вот тут самое интересное даже если ML не твоя тема. Паттерн «агент + ограниченная среда + метрика + цикл обратной связи» — это универсальный рецепт.
program.mdкак скилл для агента,train.pyкак единственный файл для модификации,val_bpbкак объективная метрика. Этот же паттерн можно натянуть на оптимизацию SQL-запросов, конфигов Kubernetes, CSS-перформанса — на что угодно, где есть измеримый результат. -
Просто хочешь понять, как работает обучение LLM — 630 строк в одном файле, без distributed training, без сложных конфигов. Чище введения в тренировку трансформеров не найти.
Как это устроено
Вся система — три файла:
prepare.py— подготовка данных, загрузчик, evaluation-утилиты. Агент его не трогает.train.py— модель GPT, оптимизатор (Muon + AdamW), цикл обучения. Единственный файл, который агент редактирует. ~630 строк.program.md— инструкции для агента. Фактически это «скилл» на человеческом языке, который описывает, что исследовать и как.
Фишка — в ограничениях. Каждый эксперимент длится ровно 5 минут. Не больше, не меньше. Агент меняет что угодно в train.py — архитектуру, гиперпараметры, оптимизатор, размер модели — но бюджет всегда один. Это делает эксперименты сравнимыми: неважно, что именно ты поменял, важно, стало ли лучше за те же 5 минут.
Метрика — val_bpb (validation bits per byte). В отличие от перплексии, она не зависит от размера словаря, что позволяет честно сравнивать модели с разными токенизаторами.
Цикл работы агента:
1. Читает program.md 2. Формулирует гипотезу 3. Модифицирует train.py 4. Запускает uv run train.py 5. Через 5 минут проверяет val_bpb 6. Если лучше → git commit, идём дальше 7. Если хуже → git revert, пробуем другое 8. Повторяем с шага 2
Каждая точка на графике прогресса — это законченный 5-минутный забег. Агент работает на отдельной git-ветке и накапливает коммиты: архитектурные изменения, настройки оптимизатора, все гиперпараметры.
Чем это отличается от grid search
На Hacker News сразу спросили: «А чем это лучше BayesOpt или Optuna?». Karpathy ответил тремя пунктами:
- Произвольные изменения кода. Grid search перебирает значения параметров. Агент может переписать архитектуру, добавить sliding window attention, поменять инициализацию — всё, что программист мог бы попробовать руками.
- Последовательная эффективность. Агент видит результаты предыдущих экспериментов и может делать «бинарный поиск» — не слепой перебор, а осознанное сужение пространства.
- Полная автоматизация. Не нужно определять пространство параметров заранее. Агент сам решает, что менять.
Но Karpathy честно отмечает: текущие модели пока «осторожничают» с открытыми задачами — склонны к инкрементальным изменениям, а не к радикальным экспериментам.
Запуск за 7 минут
Требования: одна NVIDIA GPU (тестировалось на H100), Python 3.10+, менеджер пакетов uv.
# Установить uv curl -LsSf https://astral.sh/uv/install.sh | sh # Установить зависимости uv sync # Подготовить данные и токенизатор (~2 минуты) uv run prepare.py # Запустить один эксперимент (~5 минут, для проверки) uv run train.py
Дальше запускаешь AI-ассистента (Claude Code, Codex CLI, что угодно) в директории проекта с отключёнными подтверждениями и говоришь:
Hi, have a look at program.md and let's kick off a new experiment! Let's do the setup first.
Агент прочитает program.md, создаст git-ветку и начнёт экспериментировать. Утром смотришь git log — и видишь, что именно он пробовал и что сработало.
Что агент реально находит
Nanochat (родительский проект autoresearch) ведёт лидерборд «GPT-2 speedrun» — за какое время модель достигает качества GPT-2 по метрике CORE score. Лучший результат — val_bpb 0.745.
Среди найденных агентом и сообществом оптимизаций:
- Flash Attention 3 — +9% токенов/сек
- Sliding window attention (SSSL-паттерн) — экономия вычислений без потери качества
- Per-layer residual scalars — стабильное улучшение на 0.003-0.01 bpb по всем размерам моделей
- Muon optimizer с Polar Express — переработанный оптимизатор с variance reduction
- Value embeddings на чередующихся слоях — модели «любят» дополнительную ёмкость
Но есть и забавный момент: один из комментаторов на HN заметил, что часть «улучшений» агента — это смена random seed с 42 на 137. Формально val_bpb падает, но это не архитектурная находка, а удачный бросок кубика.
Подводные камни
NVIDIA-only, и даже не все NVIDIA. MFU (Model FLOPs Utilization) захардкожен под H100. На RTX 3090 или 4090 метрика будет врать, а на AMD или MPS проект просто не запустится. Есть неофициальный форк для macOS, но он не от Karpathy.
Потеря результатов при крэше evaluation. Issue #7: если evaluation падает после тренировки — 5 минут обучения теряются, потому что чекпоинт сохраняется только после успешного eval. Для ночного автономного режима это особенно болезненно.
Rotary embeddings жрут 10× больше памяти, чем нужно. Issue #6: embeddings аллоцируются с запасом, что ограничивает размер моделей на GPU с меньшим объёмом VRAM.
Низкая креативность агента. Issue #22: агент склонен к безопасным инкрементальным изменениям — подкрутить learning rate, поменять seed — вместо радикальных экспериментов с архитектурой. Сам Karpathy это подтверждает: модели пока «cagy» (осторожны) с открытыми задачами.
Результаты несравнимы между GPU. 5-минутный бюджет означает, что H100 и RTX 4090 обучат модели разного размера. Лидерборд nanochat привязан к конкретному железу.
Вопрос ROI. Как заметили на HN: ночь API-вызовов к Claude стоит денег, а улучшения — маргинальные на маленьких моделях, которые в 5 минут можно обучить. Для реального research breakthrough нужны модели побольше и бюджеты подлиннее.
Альтернативы
-
AI Scientist v2 (Sakana Labs) — полный цикл: от идеи до написания научной статьи. Первая полностью AI-сгенерированная воркшоп-статья прошла рецензирование на ICLR. Но 42% экспериментов падают из-за ошибок в коде, и система значительно сложнее autoresearch.
-
Auto-Research (OpenAGS) — фреймворк «автономного учёного-генералиста»: литобзор, формулировка гипотезы, эксперимент, написание статьи. Шире по охвату, но менее зрелый и без фокуса на конкретной задаче.
-
Optuna / Ray Tune / BayesOpt — классические HPO-фреймворки. Надёжные, проверенные, работают на любом железе. Но ограничены заранее определённым пространством параметров — не могут переписать архитектуру модели или добавить новый слой.
Вердикт
Autoresearch — это не замена ML-исследователю, а прототип нового формата работы. Написал program.md с гипотезой — лёг спать — утром смотришь, что сработало. Если у тебя есть NVIDIA GPU и ты работаешь с обучением LLM — попробуй уже на этих выходных, Karpathy специально упаковал проект для этого. Если у тебя Mac или AMD — подожди, пока сообщество допилит форки. А если хочешь полноценный research pipeline с генерацией статей — смотри на AI Scientist v2, но будь готов к 42% failure rate.
Как попробовать
- Убедись, что у тебя NVIDIA GPU и Python 3.10+
- Установи
uv:curl -LsSf https://astral.sh/uv/install.sh | sh - Склонируй репо:
git clone https://github.com/karpathy/autoresearch && cd autoresearch - Запусти
uv sync && uv run prepare.py - Открой Claude Code или Codex CLI в директории проекта и скажи:
"Have a look at program.md and let's kick off a new experiment!" - Утром посмотри
git logна feature-ветке — там будут все эксперименты с результатами