Autoresearch: 5-минутное руководство по автономному обучению GPT с помощью ИИ

March 15, 2026

WARNING

Для работы этого проекта требуется графический процессор NVIDIA (протестировано на H100).

Представьте: пока вы спите, ИИ самостоятельно подбирает гиперпараметры, обучается и проводит эксперименты. Проснувшись утром, вы видите логи экспериментов и улучшенную модель — это и есть autoresearch. Это минималистичный фреймворк для автономных исследований, в котором ИИ-агент сам правит скрипты обучения GPT, запускает тесты, оценивает результаты и итерирует процесс. Вам остается только наблюдать.

Целевая аудитория

  • Разработчики, интересующиеся автономными ИИ-агентами (AI Research Agents)
  • Те, кто хочет понять процесс обучения LLM с инженерной точки зрения
  • Все, кому любопытно посмотреть, как ИИ может совершенствовать сам себя

Основные зависимости и окружение

  • Python 3.10+
  • NVIDIA GPU (протестировано на H100)
  • Менеджер пакетов uv

Структура проекта

autoresearch/
├── prepare.py      # Константы, подготовка данных, токенизатор (не изменять)
├── train.py        # Модель, оптимизатор, цикл обучения (агент правит это)
├── program.md      # Инструкции для агента (человек правит это)
├── pyproject.toml  # Зависимости
└── results.tsv     # Логи экспериментов (генерируются автоматически)

Репозиторий намеренно сделан минималистичным — важны всего три файла. Такой дизайн делает область экспериментов контролируемой, а изменения (diff) — удобными для проверки.

Пошаговое руководство

Шаг 1: Установка uv

Сначала установите менеджер пакетов uv:

curl -LsSf https://astral.sh/uv/install.sh | sh

TIP

В Windows можно использовать winget install astral-sh.uv или скачать установщик с официального сайта.

Шаг 2: Установка зависимостей

Клонируйте репозиторий и установите зависимости:

git clone https://github.com/karpathy/autoresearch.git
cd autoresearch
uv sync

На этом этапе установятся PyTorch и другие необходимые пакеты.

Шаг 3: Подготовка данных и токенизатора

Запустите скрипт одноразовой подготовки данных:

uv run prepare.py

Это займет около 2 минут: скачаются данные и обучится BPE-токенизатор. Данные будут сохранены в ~/.cache/autoresearch/.

Шаг 4: Запуск базового обучения (baseline)

Сначала запустим обучение вручную, чтобы установить точку отсчета:

uv run train.py

Обучение длится ровно 5 минут (без учета времени запуска и компиляции). Основная метрика — val_bpb (биты на байт на проверочной выборке): чем ниже, тем лучше.

По завершении вы увидите вывод, похожий на этот:

---
val_bpb:          0.997900
training_seconds: 300.1
total_seconds:    325.9
peak_vram_mb:     45060.2
mfu_percent:      39.80
total_tokens_M:   499.6
num_steps:        953
num_params_M:     50.3
depth:            8

Этот результат — наш baseline. Теперь передадим эстафету ИИ.

Шаг 5: Подключение ИИ-агента

Создайте новую ветку для эксперимента:

git checkout -b autoresearch/mar15

Инициализируйте файл результатов:

echo -e "commit\tval_bpb\tmemory_gb\tstatus\tdescription" > results.tsv

Запустите вашего ИИ-агента (Claude, Codex и т.д., убедившись в наличии прав на выполнение команд):

claude

И дайте ему команду:

Hi have a look at program.md and let's kick off a new experiment! let's do the setup first.

Агент прочитает program.md, поймет процесс и начнет самостоятельно итерировать train.py.

Шаг 6: Понимание цикла эксперимента

Агент будет циклически выполнять следующие действия:

  1. Модификация train.py — изменение архитектуры, гиперпараметров или оптимизатора.
  2. Git commit — сохранение изменений.
  3. Запуск экспериментаuv run train.py > run.log 2>&1.
  4. Чтение результатовgrep "^val_bpb:\|^peak_vram_mb:" run.log.
  5. Запись в results.tsv — логирование данных.
  6. Принятие решения:
    • val_bpb снизился → сохранить коммит и продолжать.
    • val_bpb ухудшился → git reset и поиск другой идеи.

TIP

Агент работает полностью автономно. Не спрашивайте его «продолжать ли?» — просто дайте ему работать. Каждый цикл занимает около 5 минут, что позволяет проводить ~12 экспериментов в час.

Разбор ключевых инструкций из program.md

program.md — это «мозг» вашего ИИ-исследователя. Основные принципы:

  • Фиксированный бюджет времени — всегда 5 минут для сопоставимости результатов.
  • Правка только одного файла — разрешено изменять только train.py.
  • Никаких новых зависимостей — использовать только то, что есть в pyproject.toml.
  • Принцип простоты — небольшое улучшение не стоит резкого усложнения кода.

Первым делом агент всегда должен запустить baseline для сравнения.

Формат вывода

Результаты записываются в results.tsv с разделением табуляцией:

commit	val_bpb	memory_gb	status	description
a1b2c3d	0.997900	44.0	keep	baseline
b2c3d4e	0.993200	44.2	keep	increase LR to 0.04
c3d4e5f	1.005000	44.0	discard	switch to GeLU activation

Используйте именно tab, а не запятую, так как запятые могут встречаться в описании.

Устранение типичных проблем

1. Данные не готовы

Ошибка: FileNotFoundError, файлы кэша не найдены.

Решение: Сначала запустите uv run prepare.py.

2. Нехватка памяти (OOM)

Ошибка: CUDA out of memory.

Решение: Агент должен сам это заметить и пометить как "crash". Типичные правки:

  • Уменьшить TOTAL_BATCH_SIZE в train.py.
  • Уменьшить количество слоев (DEPTH).
  • Использовать меньшую длину последовательности.

3. Тайм-аут обучения

Ошибка: Работает дольше 10 минут.

Решение: Принудительно завершите процесс. Пометьте эксперимент как "discard" и откатитесь.

4. Агент бездействует

Проблема: Агент читает файлы, но не запускает обучение.

Решение: Убедитесь, что агент запущен в правильной директории и имеет права на исполнение команд в терминале.

5. Результаты хуже baseline

Проблема: Все эксперименты дают плохие результаты.

Решение:

  • Попробуйте радикальные изменения архитектуры (внимание, функции активации).
  • Настройте скорость обучения (Learning Rate).
  • Попробуйте разные оптимизаторы (например, Muon вместо AdamW).

6. Несовместимость платформ

Ошибка: "No CUDA GPUs available".

Решение: Код требует NVIDIA GPU. Для других систем используйте форки:

Продвинутые советы

Как играть с маленькой видеокартой

Если у вас нет H100, попробуйте следующее:

  1. Используйте датасет TinyStories (узкая область, лучше для малых моделей).
  2. Снизьте vocab_size с 8192 до 2048 или даже 256 (byte-level).
  3. Уменьшите MAX_SEQ_LEN в prepare.py до 256 или ниже.
  4. Снизьте TOTAL_BATCH_SIZE до 2**14 (~16K).
  5. Установите WINDOW_PATTERN в значение "L" для упрощенного механизма внимания.

Дальнейшее развитие

Освоившись, вы можете:

  • Изменить program.md, добавив агентов с разными ролями.
  • Попробовать разные датасеты.
  • Добавить более сложные метрики оценки.
  • Реализовать многопроцессорное обучение (потребует правки prepare.py).

Полезные ресурсы

Updated March 15, 2026