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

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

Практический подход. Требования: одна NVIDIA GPU (тестировалось на H100), Python 3.10+, менеджер uv, PyTorch. Шаги: установка зависимостей, разовая подготовка данных (~2 минуты), ручная проверка перед автономным режимом, создание датированной ветки autoresearch/<tag> и заведение results.tsv с заголовком для записи результатов. Если мощного GPU нет: уменьшать глубину модели, длину последовательности, размер словаря и батчи, брать датасет попроще (например, TinyStories); есть форки сообщества под macOS, Windows и AMD.

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

Запуск под свою задачу и работа на слабом железе

Практический подход. Требования: одна NVIDIA GPU (тестировалось на H100), Python 3.10+, менеджер uv, PyTorch. Шаги: установка зависимостей, разовая подготовка данных (~2 минуты), ручная проверка перед автономным режимом, создание датированной ветки autoresearch/<tag> и заведение results.tsv с заголовком для записи результатов. Если мощного GPU нет: уменьшать глубину модели, длину последовательности, размер словаря и батчи, брать датасет попроще (например, TinyStories); есть форки сообщества под macOS, Windows и AMD.

Запуск под свою задачу и работа на слабом железе

Предыдущие подмодули разобрали цикл агента, три файла и метрику val_bpb. Теперь — конкретные шаги: как поднять всё это на своей машине и что делать, если мощного GPU нет.

Что нужно для запуска

Минимальный набор:

  • Одна NVIDIA GPU (проект тестировался на H100)
  • Python 3.10+
  • Менеджер пакетов uv — заменяет pip и venv, поднимает изолированное окружение за секунды
  • PyTorch с поддержкой CUDA (ставится через uv sync)

Репозиторий не требует ничего облачного или распределённого — всё работает на одной машине.

Пять шагов до автономного режима

flowchart TD A[1. Установить uv] --> B[2. uv sync] B --> C[3. uv run prepare.py] C --> D[4. Ручная проверка: uv run train.py] D --> E{val_bpb в логах?} E -->|Да| F[5. Ветка autoresearch/tag] E -->|Нет| G[Починить окружение] F --> H[6. results.tsv с заголовком] H --> I[Запустить агента на program.md] G --> D
flowchart TD
    A[1. Установить uv] --> B[2. uv sync]
    B --> C[3. uv run prepare.py]
    C --> D[4. Ручная проверка: uv run train.py]
    D --> E{val_bpb в логах?}
    E -->|Да| F[5. Ветка autoresearch/tag]
    E -->|Нет| G[Починить окружение]
    F --> H[6. results.tsv с заголовком]
    H --> I[Запустить агента на program.md]
    G --> D
От установки до автономного режима — шесть шагов

Шаг 1. Установить uv.

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

Если uv уже есть — пропускаете.

Шаг 2. Поставить зависимости.

uv sync

Одна команда, изолированное окружение, никаких конфликтов с глобальными пакетами.

Шаг 3. Подготовить данные (один раз).

uv run prepare.py

Скачивает шарды датасета с Hugging Face, обучает BPE-токенизатор, сохраняет таблицы побайтовых длин. Занимает около двух минут. Как разбирали во втором подмодуле — этот шаг делается один раз, prepare.py после этого не трогают.

Вывод терминала при успешном выполнении `uv run prepare.py`: прогресс скачивания шардов с Hugging Face и обучение BPE-токенизатора.

Шаг 4. Ручная проверка.

uv run train.py

Запустите один прогон вручную, не отдавая управление агенту. Дождитесь строки val_bpb: в выводе — значит, всё собралось, CUDA работает, данные читаются. Только после этого переходите к автономному режиму. Запускать агента вслепую без проверки окружения — верный путь к тому, что он будет молча падать и ничего не записывать в results.tsv.

Строка `val_bpb:` в выводе `uv run train.py` — ключевой сигнал того, что окружение собрано корректно и CUDA работает.

Шаг 5. Создать ветку и завести results.tsv.

Это часть setup-блока из program.md (разбирали во втором подмодуле), но лучше сделать вручную перед первым запуском агента:

git checkout -b autoresearch/2026-06-02

Дата в названии ветки — чтобы легко ориентироваться среди экспериментов. Агент инициализирует results.tsv с заголовком сам в рамках своего setup-шага, но убедитесь, что файл появился.

После этого — указываете агенту на program.md и просите работать автономно. Дальше он крутит цикл сам.

Если мощного GPU нет

Репозиторий заточен под H100, но на другом железе тоже можно экспериментировать — нужно снизить нагрузку через параметры в train.py.

ИнтерактивПрофили железа
Переключайтесь между профилями, чтобы увидеть рекомендуемые параметры конфигурации: базовый (H100) и облегчённый (слабый GPU / macOS / AMD).

Ключевые параметры для ослабления конфигурации:

ПараметрПо умолчаниюСлабое железо
DEPTH (число слоёв)84
MAX_SEQ_LEN2048256
vocab_size8192256
TOTAL_BATCH_SIZE~524 тыс. токенов16 384 (2¹⁴)
WINDOW_PATTERNпо умолчаниюупрощённый «L»

Кроме параметров модели, помогает замена датасета: вместо climbmix-400b-shuffleTinyStories, более простой и компактный набор данных с низкой энтропией. На нём val_bpb будет другим числом, но цикл экспериментов работает точно так же.

Форки сообщества. Если у вас macOS, Windows или AMD — в репозитории упоминаются форки: autoresearch-macos, autoresearch-mlx (Apple Silicon), autoresearch-win-rtx (Windows + RTX), andyluo7/autoresearch (AMD). Это независимые проекты, не основной репозиторий.

Один важный момент: если меняете vocab_size или датасет, нужно заново запустить prepare.py с новыми настройками — токенизатор и таблицы побайтовых длин должны соответствовать тому, что обучается в train.py. Иначе val_bpb посчитается неверно, что разбирали в третьем подмодуле.

Мини-проверка

Три вопроса перед тем, как отдать управление агенту:

1. Запустился ли uv run train.py вручную и появилась ли строка val_bpb: в выводе?

2. Существует ли ветка autoresearch/<тег>?

3. Есть ли файл results.tsv с заголовком?

Все три «да» — агент готов к работе. Хоть одно «нет» — возвращайтесь к шагу, где что-то не сработало.

---

В следующем подмодуле разберём полный список правил в program.md — что именно получает агент в виде инструкций и за счёт чего он работает автономно без вопросов к человеку.

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

  1. Почему нужна ручная проверка запуска train.py перед автономным режимом?
  2. Что произойдёт, если поменять vocab_size, но не запустить prepare.py заново?
  3. Почему появление строки `val_bpb:` в выводе — критический сигнал перед передачей управления агенту?
  4. В каких ситуациях нужно заново запустить prepare.py?
  5. Какова основная роль менеджера пакетов uv в этом проекте?
  6. Почему в основном репозитории упоминаются отдельные форки для macOS, Windows и AMD?
  7. Когда файл results.tsv с заголовком должен быть инициализирован?
  8. Почему на слабом железе рекомендуется использовать датасет TinyStories вместо climbmix?

Домашние задания

Диагностика железа и план адаптацииtext

Определите характеристики вашего оборудования (GPU, CUDA, Python версия) и на основе таблицы в статье выберите уровень конфигурации — «по умолчанию» (как на H100) или «слабое железо». Обоснуйте выбор в 2–3 предложениях. Если выбираете слабое железо — выпишите какие значения будете использовать для параметров DEPTH, MAX_SEQ_LEN, vocab_size и TOTAL_BATCH_SIZE. Проверьте нужен ли вам форк для вашей платформы (macOS, Windows, AMD). Перечислите 5 шагов из статьи и отметьте где потребуется адаптация для вашего случая.

Диагностика содержит полную информацию о GPU, CUDA и Python версии. Уровень конфигурации выбран с логичным обоснованием. Все параметры выписаны если требуется адаптация. Форк указан если применимо. План 5 шагов адаптирован под вашу ситуацию.

Полный setup и первый запускarchive

Выполните все 5 шагов из статьи согласно вашему плану: установите uv, синхронизируйте зависимости (uv sync), подготовьте данные (uv run prepare.py), запустите тренинг вручную один раз (uv run train.py) дождитесь val_bpb, создайте ветку autoresearch/YYYY-MM-DD подставив текущую дату. Убедитесь что results.tsv инициализирован с заголовком. Загрузьте архив содержащий: логи prepare.py, скриншот или текст последних строк train.py с метрикой val_bpb, адаптированный train.py если менялись параметры, содержимое results.tsv и вывод git log.

prepare.py выполнился без ошибок. train.py запустился и вывел метрику val_bpb. Ветка создана с правильным форматом autoresearch/YYYY-MM-DD. results.tsv инициализирован с заголовком. Параметры в train.py (если менялись) соответствуют плану из задания 1. Все артефакты включены в архив с понятной структурой.

Сдача и проверка заданий — в приложении Learn (Almost) Anything.

Источники

  1. karpathy/autoresearch — GitHub