В рамках данной лабораторной работы предлагается построить два пайплайна:
- Пайплайн, который обучает любой классификатор из sklearn по заданному набору параметров.
- Пайплайн, который выбирает лучшую модель из обученных и производит её хостинг.
Для построения такого пайплайна воспользуемся следующими инструментами:
- Apache Airflow
- MLflow
Для выполнения лабораторной работы рекомендуется использовать докер контейнеры из подготовительного репозитория: https://github.com/ssau-data-engineering/Prerequisites/tree/main
Построенный пайплайн будет выполнять следующие действия поочередно:
- Производить мониторинг целевой папки на предмет появления новых конфигурационных файлов классификаторов (в форматах
.json
или.yaml
). - Обучать классификатор в соответствии с полученными параметрами.
- Производить логгирование параметров модели в MLflow.
- Производить логгирование процесса обучения MLflow.
- Производить тестирование модели и сохранять его результаты в MLflow.
- Сохранять обученный классификатор в
model registry
MLflow.
Построенный пайплайн будет выполнять следующие действия поочередно:
- В соответствии с таймером производит валидацию новых моделей из
model registry
. - Модель с лучшим показателем метрики переводится на
stage: Production
- (Опционально) произвести хостинг лучшей модели
Для успешной сдачи лабораторной работы ваш репозиторий должен содержать следующее:
- Обучить при помощи пайплайнов не менее пяти классификаторов с различными параметрами
- Отчет, описывающий этапы выполнения работы (скриншоты, описание встреченных проблем и их решения приветствуются) в формате .pdf или .md.
- Отчет также должен содержать скриншоты со страниц как Airflow, так и MLflow
- Программный код, реализующий пайплайны.
- Открыт Pull Request в данный репозиторий.
- В рамках настоящей работы можно обойтись без использование
DockerOperator
- Все сохраняемые в рамках работы модели - сохраняются в объектное хранилище Minio (доступное по адресу: http://localhost:9000 minio@minio123). Это можно использовать при построении сложных пайплайнов для осуществления обмена данными между различными узлами системы.
- Чтобы Airflow смог сохранить модель - необходимо в файле описывающем DAG установить также переменные среды:
import os os.environ["AWS_ACCESS_KEY_ID"] = "minio" os.environ["AWS_SECRET_ACCESS_KEY"] = "minio123" os.environ["MLFLOW_S3_ENDPOINT_URL"] = "http://minio:9000"
- Пример файла конфигурации классификатора:
classificator: sklearn.neural_network.MLPClassifier kwargs: - hidden_layer_sizes: - 20 - 100 - 20 - activation: relu - solver: adam - learning_rage: 0.001
- При выполнении работы настоятельно рекомендуется пользоваться официальной докумментацией: