В последнее время я искал разные альтернативы для mlops на моей работе. В итоге мы остановились на mlflow, и в этой статье я хочу обобщить свои выводы.
Ресурсы
На сегодняшний день лучший способ узнать об этом — посмотреть эти три видео из блоков данных:
И вот вам документация: https://www.mlflow.org/docs/latest/quickstart.html
Показатель
- Что такое млфлоу?
- Режим сервера
2.1. Отслеживание экспериментов
2.2. Отслеживание модели - Режим клиента
3.1. Отслеживание экспериментов
3.2. Беговые модели - Что еще можно сделать с помощью mlflow?
1. Что такое млфлоу?
По сути, это библиотека, и с помощью библиотеки вы можете делать массу вещей. Его можно использовать в качестве клиентской библиотеки для проведения экспериментов, выполнения проектов, построения моделей и т. д. Также его можно использовать в качестве сервера для получения метрик экспериментов, артефактов и даже для запуска http-сервера для обслуживания модели машинного обучения... Все от такой же пакет.
2. Режим сервера
2.1 Отслеживание экспериментов
Запустив mlflow server
, вы запустите http-сервер, который может получать информацию об отслеживании для хранения в базе данных (sqlite, mysql, progresql…) и артефактах (google cloud, s3…). Пример:
mlflow server \
--default-artifact-root gs://<bucket>/<folder> \
--backend-store-uri postgresql://user:pass@host:port/db
Пользовательский интерфейс предлагает очень приятный и интуитивно понятный способ взаимодействия с загруженной информацией.
Вы можете сравнить разные прогоны, чтобы узнать, какие из них работают лучше, используя разные модели и/или разные наборы параметров.
Даже включает раздел для настройки гиперпараметров.
2.2 Отслеживание моделей
Для каждого эксперимента вы можете (и должны) регистрировать артефакты, включая используемую модель. MLflow предлагает функции для автоматической регистрации моделей, чтобы упростить ее, но вы можете регистрировать все, что хотите (изображения, текст, аудио, двоичные файлы, параметры, метрики…). Самое классное в этих моделях то, что они добавляют файл conda.yaml
для указания зависимостей. Больше никакой головной боли с конфликтующими версиями пакетов или выяснением настроек автора! (у вас могут возникнуть головные боли, чтобы правильно настроить файл).
Еще одна интересная функция — возможность загрузить образец ввода и схему для ожидаемого ввода и вывода. Если схема предоставлена, mlflow может проверить ее во время вывода, чтобы отклонить недопустимые вызовы.
Из приведенного выше интерфейса вы можете создать модель. Модель — это всего лишь рекламный эксперимент. Модели имеют уникальное имя, версии и этапы, поэтому вы легко узнаете, какая из них находится в стадии производства.
3. Режим клиента
3.1 Отслеживание экспериментов
Отследить эксперименты так же просто, как сделать это:
with mlflow.start_run() as run: rfr = RandomForestRegressor(**params).fit([[0, 1]], [1]) mlflow.log_params(params) mlflow.sklearn.log_model(rfr, artifact_path="sklearn-model")
Это запишет все параметры, используемые для создания RandomForest (включая значения по умолчанию), и загрузит модель с некоторыми дополнительными параметрами, такими как оценки набора поездов, оценка oob и т. д.
Сделав это несколько раз, вы можете перейти на панель инструментов, выбрать модель, которая работает лучше, и повысить ее до модели мл-потока.
3.2 Запущенные модели
Когда у вас есть модель, вы можете загрузить ее с помощью исполняемого файла командной строки:
mlflow models serve -m models:/model-name/version
Модель может содержать или не содержать файл conda.yaml. Если он содержит conda.yaml, все зависимости и правильная версия Python будут установлены автоматически, это означает, что среда вывода будет такой же, как исследовательская среда, используемая для обучения модели.
4. Что еще можно сделать с помощью mlflow?
Это всего лишь введение во многие функции, которые предлагает mlflow. Есть еще много вещей, которые вы можете сделать с ним:
- Параметризованные задачи
- Выполнение заданий в kubernetes
- Создание докер-файлов
- Аутентифицированное подключение к серверу отслеживания через базовую аутентификацию http или SSL-сертификаты.
- Управление версиями набора данных