Что делает этот скрипт?
Приведённый кусок кода – типичный «рабочий» пайплайн для обучения модели в экспериментах с рефлексивным обучением (rollout‑>reflect‑>aggregate‑>select‑>update‑>gate). Он собирает параметры из словаря RUN_KNOBS, запускает обучение через CLI, а затем строит простую визуализацию метрик.
Ключевые шаги и «подводные камни»
- Запуск через CLI –
run_cli([...])сразу передаёт все аргументы скриптуtrain.py. Частая ошибка – забыть про кавычки вокруг путей с пробелами; в таком случае скрипт откажется стартовать. - Параметры обучения – большинство из них берутся из
k = RUN_KNOBS. Убедитесь, что в словаре присутствуют все нужные ключи:num_epochs,batch_size,minibatchи т.д. Отсутствие хотя бы одного из них приведёт кKeyErrorи потерянному часу вычислений. - Оптимизатор – включены две «фишки»:
use_slow_update=trueиuse_meta_skill=true. Они полезны, когда обучаете модели‑агенты, но накладывают дополнительные требования к памяти и времени. Планируйте ресурсные лимиты заранее. - Сохранение результатов – после завершения обучения в директории
RUNпоявляетсяhistory.json. Если файл пустой или содержит только заголовок, значит, обучение упало ещё до записи метрик.
Как быстро проверить, что всё работает?
- Запустите скрипт с небольшим
train.train_size=0иtrain.num_epochs=1. Это «прогон «на сухую», который покажет, что CLI принимает параметры. - После первого шага откройте
{RUN}/history.jsonи убедитесь, что в нём есть хотя бы один объект с полямиstep,train_accиval_acc. - Проверьте, что в
{RUN}/training_dashboard.pngотрисовалась графика – если нет, скорее всего,matplotlibне нашёл подходящий backend.
Практический совет: автоматизируйте проверку входных колонок
Функция col(*cands) ищет нужную колонку в DataFrame по набору псевдонимов. Она спасает от опечаток, но её стоит дополнить логикой отладки:
- Вывести список найденных колонок, если ни одна из кандидатных не подошла.
- Поднять исключение с чётким сообщением, а не возвращать
None, чтобы сразу увидеть проблему.
Графики, которые действительно помогают
- Skill accuracy over steps – основной индикатор качества. Если кривая валидации «плюсует» ниже базовой линии (
base["hard"]), значит, модель хуже, чем простой сид. - Edit‑budget / LR schedule – отслеживание изменения learning rate важно при косинусной планировке: резкий скачок может свидетельствовать о неверных параметрах
lr_sched. - Cumulative token usage – полезно для оценки затрат на обучение в больших трансформерах. Если рост токенов резко ускоряется, проверьте
gradient.minibatch_sizeиgradient.merge_batch_size.
Типичные ошибки и «чек‑лист» перед запуском
- ✅ Проверить, что все пути (
CFG,SPLIT,RUN) существуют. - ✅ Убедиться, что версии Python и библиотек (pandas, matplotlib) совместимы с
train.py. - ✅ Установить переменные окружения
CUDA_VISIBLE_DEVICES, если работаете на GPU. - ✅ Прописать fallback‑значения в
RUN_KNOBSна случай, если кто‑то забудет задатьlr_schedилиworkers. - ❌ Не забывать про
optimizer.use_slow_update=trueв продакшене – он сильно замедляет обучение без существенного прироста качества.
Где черпать дополнительную информацию?
Все детали реализации scripts/train.py и поддерживаемые параметры описаны в репозитории проекта на GitHub. Рекомендуем регулярно сверяться с основным README и с официальной документацией используемых библиотек (pandas, matplotlib, PyTorch).





















