Skip to content
This repository was archived by the owner on Mar 17, 2026. It is now read-only.

Latest commit

 

History

History
95 lines (54 loc) · 8 KB

File metadata and controls

95 lines (54 loc) · 8 KB

Рекомендации по оформлению экспериментов

Что такое эксперимент

Эксперимент — гипотеза про данные или про модель (реже одновременно):

Мы полагаем, что [используя данные] и [метод обучения] мы получим [метрику] не менее [значения]

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

⚠️ Каждый эксперимент — отдельная ветка!

Результат эксперимента — код + данные + модель = положительное изменение метрик в reports/metrics.json:

dvc metrics [show|diff]

Разумеется, если эксперимент не удался и есть интерпретация/обоснование неудачи — это тоже полезный инкремент для проекта и им стоит делиться!

Оформление эксперимента

Общие рекомендации

Воспроизводимость

Для экспериментов важна воспроизводимость. Любые ML-артефакты, будь то новые данные для обучения модели или сама обученная модель, должны быть добавлены в DVC. Если возможно, артефакты нужно связывать с кодом, который их порождает в рамках DVC-пайплайна dvc.yaml. В иных же случаях можно воспользоваться dvc add:

dvc add path/to/artifact

Jupyter Notebook

При исследовании подхода и быстром прототипировании решения может быть достаточно интерактивного ноутбука .ipynb. Однако желательно как можно больше кода выносить в пакет или переиспользовать готового из yoric.

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

Для названия ноутбуков и экспериментов лучше предпочитать snake_case или PascalCase, где уместно.

Обратите внимание, что по умолчанию директория ноутбуков добавлена в исключения Git, поскольку это довольно стандартная директория для черновых скриптов в DS/ML проектах. Чтобы не добавить лишнего, процесс публикации ноутбуков выполняется с ключом --force (-f).

Fix random seed

Крайне важно зафиксировать в коде случайные генераторы, включить детерминированный режим при расчётах на GPU в используемом ML/DL фреймворке.

Good enough but not better

В конечном итоге, если при ревью PR станет понятно, что эксперимент несёт большую ценность, но недостаточно оформлен, мы перенесём его в скрипты и зафиксируем совместными усилиями. Лучшее — враг хорошего.

Что куда

Изменения в данных — это про директорию data, а изменения в модели (веса, предобученный стейт, токенайзеры и т. п.) — model.

Гипотеза про модель

Предположение, что использование определенного метода (модели) улучшит метрику.

Далее следует пример информации об эксперименте, которую следует приложить либо в описании к PR, либо в файле reports/model.md.

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

Название эксперимента/модели: ...

Автор(ы): Имя(имена) участника(ов), проводившего эксперимент или разрабатывавшего модель

Дата: дата завершения эксперимента

Описание: опционально, краткий обзор эксперимента или модели, включая постановку задачи, цели и любую другую соответствующую информацию

Данные: опционально, если были изменения

Метрики: опционально, если есть сравнения или интерпретация

Архитектура/Модель: ...

Гиперпараметры: какие параметры можно перебирать для улучшения метрик, как выбирать при обучении на новых данных или ином железе

Предобработка: опционально, какие-то особенности подготовки данных для модели

Процедура обучения: опционально, какие-то нюансы и особенности обучения модели

Ограничения: на каких кейсах модель не будет работать или результат будет непредсказуем

Дальнейшая работа: что можно попробовать далее на базе эксперимента, как улучшить предложенное решение

Гипотеза про данные

Предположение, что дополнительные данные улучшат метрику.

Здесь нет какого-то конкретного шаблона, важно просто мотивировать обновление данных. Идеально — привести графики, статистики из датасета, показать краевые случаи в работе модели на текущих данных.

Поскольку каждая ветка — это полноценный эксперимент с обученной моделью, если нет возможности обучить модель на новых данных, укажите это в PR. Когда появится нужный компьют, мы запустим обучение на новых данных.

Полезные источники для ознакомления