Как создать автономный цикл исследований в области машинного обучения в Google Colab с помощью фреймворка AutoResearch Андрея Карпати для поиска гиперпараметров и отслеживания экспериментов

В этом руководстве мы реализуем версию фреймворка AutoResearch, готовую для использования в Colab. Мы создаём автоматизированный процесс экспериментов, который клонирует репозиторий AutoResearch, подготавливает облегчённую среду обучения и запускает базовый эксперимент для определения начальных показателей производительности.

Затем мы создаём автономный цикл исследований, который программно редактирует гиперпараметры в `train.py`, запускает новые итерации обучения, оценивает полученную модель с помощью метрики битов на байт (bits-per-byte) и регистрирует каждый эксперимент в структурированной таблице результатов.

Выполняя этот рабочий процесс в Google Colab, мы демонстрируем, как можно воспроизвести основную идею автономных исследований в области машинного обучения: итеративно модифицируя конфигурации обучения, оценивая производительность и сохраняя лучшие конфигурации, не требуя при этом специализированного оборудования или сложной инфраструктуры.

Импорт библиотек и установка зависимостей

Мы начинаем с импорта основных библиотек Python, необходимых для автоматизированного рабочего процесса исследований. Мы устанавливаем все необходимые зависимости и клонируем репозиторий `autoresearch` непосредственно из GitHub, обеспечивая включение в среду исходной обучающей структуры.

«`python
import os, sys, subprocess, json, re, random, shutil, time
from pathlib import Path

def pip_install(pkg):
subprocess.check_call([sys.executable, «-m», «pip», «install», «-q», pkg])

for pkg in [
«numpy»,»pandas»,»pyarrow»,»requests»,
«rustbpe»,»tiktoken»,»openai»
]:
try:
import(pkg)
except:
pip_install(pkg)
«`

Настройка параметров

Мы модифицируем ключевые параметры конфигурации внутри репозитория, чтобы сделать рабочий процесс обучения совместимым с оборудованием Google Colab. Мы уменьшаем длину контекста, бюджет времени обучения и количество токенов оценки, чтобы эксперименты выполнялись в пределах ограниченных ресурсов GPU.

«`python
prepare_path=Path(«prepare.py»)
train_path=Path(«train.py»)
program_path=Path(«program.md»)

preparetext=preparepath.read_text()
traintext=trainpath.read_text()

preparetext=re.sub(r»MAXSEQLEN = \d+»,»MAXSEQLEN = 512″,preparetext)
preparetext=re.sub(r»TIMEBUDGET = \d+»,»TIMEBUDGET = 120″,preparetext)
preparetext=re.sub(r»EVALTOKENS = .«,»EVALTOKENS = 4 65536″,preparetext)

traintext=re.sub(r»DEPTH = \d+»,»DEPTH = 4″,traintext)
traintext=re.sub(r»DEVICEBATCHSIZE = \d+»,»DEVICEBATCHSIZE = 16″,traintext)
traintext=re.sub(r»TOTALBATCHSIZE = .«,»TOTALBATCHSIZE = 2*17″,traintext)
traintext=re.sub(r’WINDOWPATTERN = «SSSL»‘,’WINDOWPATTERN = «L»‘,traintext)

preparepath.writetext(prepare_text)
trainpath.writetext(train_text)
«`

Запуск базового обучения

Мы выполняем базовый обучающий запуск, чтобы установить начальную точку отсчёта производительности для модели. Мы реализуем функцию анализа логов, которая извлекает ключевые показатели обучения, включая биты на байт (bits-per-byte), время обучения, использование памяти GPU и шаги оптимизации.

«`python
subprocess.run(«python train.py > baseline.log 2>&1»,shell=True)

def parserunlog(log_path):
text=Path(logpath).readtext(errors=»ignore»)
def find(p):
m=re.search(p,text,re.MULTILINE)
return float(m.group(1)) if m else None
return {
«valbpb»:find(r»^valbpb:\s*([0-9.]+)»),
«trainingseconds»:find(r»^trainingseconds:\s*([0-9.]+)»),
«peakvrammb»:find(r»^peakvrammb:\s*([0-9.]+)»),
«numsteps»:find(r»^numsteps:\s*([0-9.]+)»)
}

baseline=parserunlog(«baseline.log»)
«`

Заключение

Мы создали полный автоматизированный рабочий процесс исследований, который демонстрирует, как машины могут итеративно исследовать конфигурации моделей и улучшать производительность обучения с минимальным ручным вмешательством. На протяжении всего руководства мы подготовили набор данных, установили базовый эксперимент и реализовали цикл поиска, который предлагает новые конфигурации гиперпараметров, запускает эксперименты и отслеживает результаты в нескольких испытаниях.

1. Какие ключевые шаги включает в себя создание автономного цикла исследований в Google Colab с помощью фреймворка AutoResearch?

Создание автономного цикла исследований в Google Colab с помощью фреймворка AutoResearch включает в себя несколько ключевых шагов:
* импорт основных библиотек Python, необходимых для автоматизированного рабочего процесса исследований;
* установка всех необходимых зависимостей и клонирование репозитория `autoresearch` непосредственно из GitHub;
* модификация ключевых параметров конфигурации внутри репозитория, чтобы сделать рабочий процесс обучения совместимым с оборудованием Google Colab;
* выполнение базового обучающего запуска, чтобы установить начальную точку отсчёта производительности для модели;
* реализация функции анализа логов, которая извлекает ключевые показатели обучения;
* создание полного автоматизированного рабочего процесса исследований, который демонстрирует, как машины могут итеративно исследовать конфигурации моделей и улучшать производительность обучения с минимальным ручным вмешательством.

2. Какие параметры конфигурации были модифицированы для совместимости с оборудованием Google Colab?

Для совместимости с оборудованием Google Colab были модифицированы следующие параметры конфигурации:
* длина контекста (уменьшена до 512);
* бюджет времени обучения (установлен в 120);
количество токенов оценки (установлено в 4 65536);
* глубина (установлена в 4);
* размер пакетной обработки на устройстве (установлен в 16);
общий размер пакетной обработки (установлен в 2*17);
* шаблон окна (изменён на «L»).

3. Какие ключевые показатели обучения извлекаются с помощью функции анализа логов?

С помощью функции анализа логов извлекаются следующие ключевые показатели обучения:
* биты на байт (bits-per-byte);
* время обучения;
* использование памяти GPU;
* количество шагов оптимизации.

4. Какие основные этапы были пройдены для установки начальной точки отсчёта производительности модели?

Для установки начальной точки отсчёта производительности модели были пройдены следующие основные этапы:
* выполнение базового обучающего запуска;
* анализ логов для извлечения ключевых показателей обучения;
* сохранение полученных данных для дальнейшего использования.

5. Какие инструменты и библиотеки используются для автоматизации рабочего процесса исследований в Google Colab?

Для автоматизации рабочего процесса исследований в Google Colab используются следующие инструменты и библиотеки:
* Python;
* библиотеки `os`, `sys`, `subprocess`, `json`, `re`, `random`, `shutil`, `time`;
* `pandas`;
* `pyarrow`;
* `requests`;
* `rustbpe`;
* `tiktoken`;
* `openai`.

Источник