Найти тему
Data Science

Sacred: Эффективные эксперименты в машинном обучении

В мире научных исследований и машинного обучения существует необходимость в эффективном управлении экспериментами. В этой статье мы рассмотрим Sacred - удобный инструмент, который помогает организовать, регистрировать и воспроизводить вычислительные эксперименты. Он обеспечивает простой и эффективный способ управления гиперпараметрами, сохранения метаданных и результатов экспериментов, а также создания иерархии экспериментов для удобного анализа.

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

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

Cоздадим Sacred эксперимент

Sacred будем использовать в связке с Neptune для визуализации и более удобного взаимодействия с информацией об экспериментах полученных от Sacred

Установим Sacred и Neptune:

pip install -U neptune[sacred] sacred

В качестве примера рассмотрим задачу классификации изображений из набора данных CIFAR10

Импортируем необходимые библиотеки

Для начала эксперимента необходимо создать объект класса Experiment. Для сохранения информации об экспериментах нужно подключить к эксперименту наблюдателя, в нашем случае наблюдателем будет NeptuneObserver.

Для создания прогона Neptune, необходимо создать проект на сайте Neptune и получить API токен
Для создания прогона Neptune, необходимо создать проект на сайте Neptune и получить API токен

Далее необходимо определить конфигурацию эксперимента, создадим функцию cfg с декоратором @ex.config, внутри которой определим необходимые параметры

-3

Создадим простой классификатор:

-4

Прежде чем запустить эксперимент, необходимо определить основную функцию:

-5

Как видите, мы снова используем атрибут объекта эксперимента в качестве декоратора, в данном случае ex.automain. Декоратор позволяет основной функции автоматически обращаться к любым переменным, определенным в конфигурации этого эксперимента. Для сохранения метрик нужно использовать метод log_scalar, в нашем случае мы будем сохранять точность и потери.

Запустить эксперимент можно из командной строки, и вот что мы получим:

-6

Также прямо в командной строке можно изменять параметры эксперимента:

python main.py batch_size=32 lr=0.1

Посмотрим на информацию сохраненную в Neptune:

-7
Сохраненные параметры
Сохраненные параметры

Также Sacred сохраняет метаданные, например, об исходном коде (репозиторий git, файлы, зависимости и т. д.), работающем хосте, времени запуска/остановки и т. д.

Sacred имеет много других возможностей, с которыми можно ознакомится в их документации