Что такое Авторесёрч и из чего состоит цикл
Идея репозитория: ИИ-агент проводит исследовательские эксперименты сам, в том числе ночью без участия человека. Разбираем базовый цикл: агент читает инструкции, формулирует гипотезу, меняет код, запускает обучение на фиксированные 5 минут (wall clock, без учёта старта и компиляции), смотрит метрику и либо принимает, либо отбрасывает изменение — и так заново. Почему фиксированный бюджет даёт ~12 экспериментов в час и ~100 за ночь и делает прогоны сравнимыми между собой и на разном железе.
Что такое Авторесёрч и из чего состоит цикл
Сначала — важная оговорка
Если вы ожидали, что «авторесёрч» — это агент, который ищет источники в интернете, синтезирует отчёт об анализе рынка и проверяет факты, скорректируйте ожидания прямо сейчас. Репозиторий karpathy/autoresearch посвящён другому: здесь агент автономно ставит ML-эксперименты — правит код обучения нейросети, запускает прогон, смотрит метрику, принимает решение. Темы из вашего запроса (поиск источников, цитаты, борьба с галлюцинациями в выдаче) этот репозиторий не закрывает. Мы честно разберём именно то, что там есть.
Идея за одну минуту
Классический ML-ресёрч выглядит так: исследователь думает → пишет код → запускает обучение на несколько часов → смотрит логи. На один значимый эксперимент уходит день. Autoresearch убирает человека из этой петли: LLM-агент сам читает инструкции, сам придумывает гипотезу, правит код, запускает короткий прогон — и так по кругу, в том числе ночью без присмотра. За 8–9 часов набирается не один, а ~100 экспериментов.
Это не магия — конкретная инженерная конструкция: один редактируемый файл, фиксированный бюджет времени, одна метрика.
Базовый цикл — шаг за шагом
flowchart TD
A["Читает program.md"] --> B["Формулирует гипотезу"]
B --> C["Правит train.py"]
C --> D["Обучение: 5 минут wall clock"]
D --> E["Считывает val_bpb"]
E --> F{"val_bpb снизился?"}
F -- "Да" --> G["Коммит + results.tsv"]
F -- "Нет" --> H["Откат + results.tsv"]
G --> A
H --> AКаждый оборот цикла — шесть шагов:
1. Читает инструкции. Агент открывает program.md — файл, который человек настраивает под нужное направление исследования.
2. Формулирует гипотезу. Решает, что именно попробовать: другой оптимизатор, иная архитектура слоя, другой размер батча — всё в рамках train.py.
3. Правит код. Вносит изменения в train.py. Только в него; prepare.py — зона запрета.
4. Запускает обучение. Ровно 5 минут по wall clock. Не по количеству шагов и не по эпохам — именно по часам. Время старта и компиляции в счёт не идёт.
5. Считывает метрику. Смотрит val_bpb (validation bits per byte) из логов.
6. Принимает решение. val_bpb снизился — изменение остаётся, коммит. Не снизился — откат к предыдущему коду. В обоих случаях — запись в results.tsv, и цикл начинается заново.
Агент не останавливается между итерациями — работает до ручной остановки.
Почему 5 минут — это архитектурное решение
Три причины, по которым выбран именно фиксированный бюджет, а не «сколько потребуется»:
Пропускная способность. 5 мин на эксперимент → ~12 в час → ~100 за ночь. На порядок больше, чем успевает человек.
Честное сравнение прогонов. Если один прогон идёт 3 минуты, а другой — 45, их val_bpb несравнимы: у длинного просто больше шагов оптимизации. Фиксированный бюджет — как стандартизованный тест: любые два результата корректно ставятся рядом, в том числе на разном железе.
Давление на качество vs. размер. Если агент раздул архитектуру, на той же GPU за 5 минут пройдёт меньше шагов — метрика честно это покажет. Нет смысла усложнять модель без реального прироста val_bpb.
Что агент не делает
Закроем два частых заблуждения:
- Агент не ищет статьи и не читает интернет.
- Агент не трогает данные, не меняет логику оценки и не ставит новые пакеты — это явно запрещено в
program.md.
Его рабочее пространство — один файл, один GPU, одна метрика.
---
В следующем подмодуле разберём устройство трёх ключевых файлов и поймём, где именно у агента рамки.
Самопроверка
- Какой из этих вариантов лучше всего описывает то, чем занимается агент autoresearch?
- Почему в autoresearch используется фиксированный бюджет в 5 минут wall-clock времени?
- Что происходит, если после 5-минутного прогона val_bpb улучшился?
- Какой из этих компонентов система НЕ позволяет агенту менять?
- Сколько экспериментов в час может провести агент при 5-минутном бюджете?
- Почему для измерения бюджета используется wall-clock время, а не количество шагов обучения?
- Какое утверждение об автономности агента ВЕРНО?
- Как отслеживаются результаты всех экспериментов в autoresearch?
Домашние задания
Пройдите цикл: от гипотезы к решениюtext
Вы — LLM-агент autoresearch. В program.md указано: оптимизируйте val_bpb в train.py, prepare.py не трогайте. Вы сформулировали гипотезу — использовать AdamW вместо SGD. Расскажите, что происходит на шагах 2–6 вашего цикла. Обязательно объясните: почему 5 минут по wall clock критичны для сравнения разных прогонов, и как вы узнаете, принять или отвергнуть изменение.
Корректно описаны шаги 2–6 (как меняется код, запуск, чтение метрики, логика accept/reject). Объяснено, почему wall-clock время важнее эпох или шагов оптимизации. Показано понимание метрики как единственного критерия решения.
Определите границы: что подходит, что нетtext
Агент просит совета: которые из этих экспериментов подходят для autoresearch, которые нет? - Поменять оптимизатор (SGD → Adam) - Добавить новые обучающие данные в датасет - Взять другую валидационную метрику вместо val_bpb - Настроить learning rate - Заменить GPU на более мощный - Увеличить размер батча Для каждого напишите решение (подходит / не подходит) и объясните в одну строку, опираясь на ограничения из статьи.
Все 6 пунктов классифицированы правильно. Каждый ответ ссылается на конкретное ограничение (train.py-only, no prepare.py, no данные, no eval). Лаконично — по одной строке на пункт.
Напишите инструкции для агентаtext
Напишите draft program.md для исследования: «Повысить val_bpb изменениями в архитектуре и гиперпараметрах». Укажите 4–5 конкретных идей, которые агент может попробовать, и чётко сформулируйте, что ему запрещено трогать.
Предложено ≥ 4 конкретных, разных гипотез (размер слоя, тип активации, learning rate schedule и т.д., не просто «параметры»). Явно перечислены запреты (prepare.py, данные, метрики, новые пакеты). Тон директивный и краткий.
Сдача и проверка заданий — в приложении Learn (Almost) Anything.
