Learn (Almost) Anything
КаталогСкачать курс

Авторесёрч: автономные ML-эксперименты

Идея репозитория: ИИ-агент проводит исследовательские эксперименты сам, в том числе ночью без участия человека. Разбираем базовый цикл: агент читает инструкции, формулирует гипотезу, меняет код, запускает обучение на фиксированные 5 минут (wall clock, без учёта старта и компиляции), смотрит метрику и либо принимает, либо отбрасывает изменение — и так заново. Почему фиксированный бюджет даёт ~12 экспериментов в час и ~100 за ночь и делает прогоны сравнимыми между собой и на разном железе.

ruМини-курс6 уроков1 модуль9
автономные ML-экспериментыML-экспериментыавтономный цикл ML-экспериментовML-экспериментовавторесёрчавтономныеэкспериментыавтономныйциклэкспериментов

Что такое Авторесёрч и из чего состоит цикл

Идея репозитория: ИИ-агент проводит исследовательские эксперименты сам, в том числе ночью без участия человека. Разбираем базовый цикл: агент читает инструкции, формулирует гипотезу, меняет код, запускает обучение на фиксированные 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
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
Автономный цикл одного эксперимента в Autoresearch

Каждый оборот цикла — шесть шагов:

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-минутном бюджете на каждый прогон.

Три причины, по которым выбран именно фиксированный бюджет, а не «сколько потребуется»:

Пропускная способность. 5 мин на эксперимент → ~12 в час → ~100 за ночь. На порядок больше, чем успевает человек.

Честное сравнение прогонов. Если один прогон идёт 3 минуты, а другой — 45, их val_bpb несравнимы: у длинного просто больше шагов оптимизации. Фиксированный бюджет — как стандартизованный тест: любые два результата корректно ставятся рядом, в том числе на разном железе.

Давление на качество vs. размер. Если агент раздул архитектуру, на той же GPU за 5 минут пройдёт меньше шагов — метрика честно это покажет. Нет смысла усложнять модель без реального прироста val_bpb.

Что агент не делает

Закроем два частых заблуждения:

  • Агент не ищет статьи и не читает интернет.
  • Агент не трогает данные, не меняет логику оценки и не ставит новые пакеты — это явно запрещено в program.md.

Его рабочее пространство — один файл, один GPU, одна метрика.

Файловая структура репозитория karpathy/autoresearch на GitHub: train.py, program.md, prepare.py, results.tsv.

---

В следующем подмодуле разберём устройство трёх ключевых файлов и поймём, где именно у агента рамки.

Самопроверка

  1. Какой из этих вариантов лучше всего описывает то, чем занимается агент autoresearch?
  2. Почему в autoresearch используется фиксированный бюджет в 5 минут wall-clock времени?
  3. Что происходит, если после 5-минутного прогона val_bpb улучшился?
  4. Какой из этих компонентов система НЕ позволяет агенту менять?
  5. Сколько экспериментов в час может провести агент при 5-минутном бюджете?
  6. Почему для измерения бюджета используется wall-clock время, а не количество шагов обучения?
  7. Какое утверждение об автономности агента ВЕРНО?
  8. Как отслеживаются результаты всех экспериментов в 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.

Источники

  1. karpathy/autoresearch — GitHub