Анализ данных • 24 сентября 2024 • 5 мин чтения

Optuna: подбор гиперпараметров для вашей модели

Рассказываем, как с помощью библиотеки Optuna автоматизировать поиск оптимальных гиперпараметров на примере квадратичной функции.

Что такое Optuna

Optuna — это библиотека Python с открытым исходным кодом, разработанная для автоматизации настройки гиперпараметров. Она использует несколько алгоритмов оптимизации, таких как TPE и CMA-ES, для поиска лучшего набора гиперпараметров.

Optuna применяет метод «систематического поиска», что позволяет автоматически находить оптимальные гиперпараметры без необходимости ручной настройки. Также библиотека может работать в многопоточных и распределённых средах — это помогает ускорить процесс оптимизации при использовании нескольких ресурсов. Optuna поддерживает интеграцию с популярными фреймворками машинного обучения, такими как TensorFlow, MLflow, PyTorch и Scikit-learn. Как интегрироваться с MLflow, мы расскажем ниже.

Создавать алгоритмы машинного обучения и с их помощью решать задачи учат на курсе «Инженер машинного обучения». Во время обучения студенты создают микросервисы, осваивают Docker, FastAPI, AirFlow, MLflow, Yandex Cloud. После прохождения курса у студента будет три работы для портфолио и возможность устроиться в Яндекс по результатам собеседования.

Установка Optuna

Библиотека Optuna поддерживает Python 3.7 и выше. Её можно установить тремя способами:

1. Из главной ветки репозитория Git — места, где хранится проект и история его изменений. Он может содержать файлы, папки и метаданные, которые позволяют отслеживать изменения в коде и управлять версиями. Установить Optuna можно с помощью команды $ pip install git+https://github.com/optuna/optuna.git.

Так выглядит код установки Optuna из ветки Git

2. Через conda — систему управления пакетами и средами, которая используется в основном для работы с Python, но поддерживает и другие языки программирования. С её помощью можно устанавливать, обновлять библиотеки и управлять ими, а также создавать изолированные среды для проектов. Установить Optuna можно с помощью команды $ conda install -c conda-forge optuna.

Код установки Optuna через conda

3. Через пакетный менеджер для управления библиотеками pip — его рекомендуют использовать разработчики при установке Optuna. Для этого введите команду $ pip install optuna.

Код установки Optuna через pip

Определение функции цели и создание первого исследования

Функция цели — это функция, которую будем оптимизировать. Она определяет, насколько хорошо модель выполняет свою задачу в зависимости от заданных параметров. Функция принимает объект trial в качестве аргумента, который используется для определения значений гиперпараметров. В Optuna необходимо определить целевую функцию как функцию Python. Она принимает пробный объект в качестве входных данных и возвращает значение, которое представляет производительность модели с заданными гиперпараметрами.

Обычно Optuna используется для оптимизации гиперпараметров. Но разработчики в качестве примера приводят оптимизацию квадратичной функции в Python. Для этого установим Optuna через Pip и пропишем функцию (x−2)*2 с переменными x, −10, 10. Нам нужно найти значение x, которое минимизирует выход целевой функции (objective).

В этом коде Optuna неоднократно вызывает и оценивает целевую функцию с разными значениями x

Объект Trial соответствует одной команде целевой функции и создаётся при каждом вызове функции. API-интерфейсы (например, submit_uniform()) вызываются внутри целевой функции для получения параметров. API-интерфейс submit_uniform() выбирает параметры равномерно в пределах выделенного диапазона — в нашем примере от −10 до 10.

Чтобы оптимизировать функцию цели, нужно создать объект исследования и передать целевую функцию optimize().

Многокритериальная оптимизация

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

Применение многокритериальной оптимизации мы можем видеть на сайтах, например, финансовых организаций. На сайтах брокеров инвесторы пользуются онлайн-калькуляторами для подбора портфелей активов с учётом рисков. На сайтах банков размещены калькуляторы для расчёта ипотеки с разными параметрами: сроком, суммой, размером первоначального взноса и т. д. Подробное руководство по настройке многокритериальной оптимизации есть на сайте разработчиков.

Пример функции многоцелевой оптимизации Optuna с интеграцией Fashion MNIST и FLOPS модели. Источник

Интеграция с MLflow

MLflow — это платформа с открытым исходным кодом для управления жизненным циклом моделей машинного обучения. Для интеграции с Optuna необходимо установить MLflow через библиотеку pip с помощью кода pip install optuna mlflow.

Приведём пример обратного вызова для отслеживания испытаний с помощью MLflow на задаче (x−2)*2, которую мы рассмотрели выше. Для испытания мы добавили Add MLflow callback в Optuna. В коде применим URI сервера для отслеживания MLflow — Tracking_uri. Metric_name — имя метрики. Поскольку сама метрика — это просто число, чтобы присвоить ей имя, можно использовать metric_name.

Так будет выглядеть код квадратичной функции в MLflow

Статью подготовили:
Валентина Бокова
Яндекс Практикум
Редактор
Полина Овчинникова
Яндекс Практикум
Иллюстратор

Дайджест блога: ежемесячная подборка лучших статей от редакции

Поделиться

Успейте начать учебу в Практикуме до конца ноября со скидкой 20%

Sat Oct 12 2024 19:34:31 GMT+0300 (Moscow Standard Time)