MLops URFU for dz
Автоматизированный конвейер для создания наборов данных, предварительной обработки данных, обучения модели линейной регрессии и тестирования ее производительности. Сценарии разделены на этапы, и для бесперебойного выполнения всего конвейера от начала до конца предусмотрен сценарий bash.
- datacreation.py: Генерирует обучающие и тестовые наборы данных.
- model_preprocessing.py: Предварительно обрабатывает наборы данных (возможности масштабирования).
- model_preparation.py: Обучает модель линейной регрессии.
- model_testing.py: Тестирует обученную модель и вычисляет показатели производительности.
- pipeline.sh: Запускает скрипт Bash для выполнения всего конвейера.
Клонируем репозиторий: git clone https://github.com/dzharlaksl/mlops_eroshin.git
Создайте и активируйте виртуальную среду. Убедитесь, что у вас установлен Python и необходимые библиотеки:
pip install numpy pandas scikit-learn joblib
Сделайте скрипт pipeline.sh исполняемым:
chmod +x pipeline.sh
Запустите весь конвейер:
./pipeline.sh
datacreation.py
: Этот скрипт генерирует обучающие и тестовые наборы данных. Обучающие данные содержат шум, в то время как обычные тестовые данные - нет. Также создается дополнительный тестовый набор с шумом.
datacreation.py создаем и импортируем библиотеки Создаем каталоги Создание и сохранение наборов данных
model_preprocessing.py
: Этот скрипт обрабатывает обучающие и тестовые наборы данных путем масштабирования объектов.
model_preprocessing.py создаем и импортируем библиотеки Загружаем наборы данных Масштабирование данных (стандартное) Сохранить обработанные данные
model_preparation.py
: Этот скрипт обучает модель линейной регрессии, используя обработанные обучающие данные.
model_preparation.py создаем и импортируем библиотеки Загружаем обработанные обучающие данные Обучаем модель линейной регрессии Сохраняем обученную модель
model_testing.py
: Этот скрипт тестирует обученную модель линейной регрессии, используя обработанные данные тестирования, и вычисляет среднеквадратичную ошибку.
model_testing.py создаем и импортируем библиотеки Загружаем обработанные данные тестирования и сохраненную модель Тестируем модель и выводим среднеквадратичную ошибку
pipeline.sh
: Этот bash-скрипт выполняет все шаги последовательно.
Игорь Ерошин
Next labs!!!!!
- Вам нужно разработать собственный конвейер автоматизации для проекта машинного обучения. Для этого вам понадобится виртуальная машина с установленным Jenkins, python и необходимыми библиотеками. В ходе выполнения практического задания вам необходимо автоматизировать сбор данных, подготовку датасета, обучение модели и работу модели.
- Разработанный конвеер требуется выгрузить в файл. Так же все скрипты (этапы конвеера требуется сохранить)
- Все файлы необходимо разместить в подкаталоге lab2 корневого каталога Этапы задания
- Развернуть сервер с Jenkins, установить необходимое программное обеспечение для работы над созданием модели машинного обучения.
- Выбрать способ получения данных (скачать из github, из Интернета, wget, SQL запрос, …).
- Провести обработку данных, выделить важные признаки, сформировать датасеты для тренировки и тестирования модели, сохранить.
- Создать и обучить на тренировочном датасете модель машинного обучения, сохранить в pickle или аналогичном формате.
- Загрузить сохраненную модель на предыдущем этапе и проанализировать ее качество на тестовых данных.
- Реализовать задания и конвеер. Связать конвеер с системой контроля версий. Сохранить конвеер.
В практическом задание по модулю вам необходимо применить полученные знания по работе с docker (и docker-compose). Вам необходимо использовать полученные ранее знания по созданию микросервисов. В этом задании необходимо развернуть микросервис в контейнере докер. Например, это может быть модель машинного обучения, принимающая запрос по API и возвращающая ответ. Вариантом может быть реализация приложения на основе streamlit (https://github.com/korelin/streamlit_demo_app). Результаты работы над этой работой стоит поместить в подкаталог lab3 вашего корневого каталога репозитория. Что необходимо выполнить:
- Подготовить python код для модели и микросервиса
- Создать Docker file
- Создать docker образ
- Запустить docker контейнер и проверить его работу
Дополнительными плюсами будут:
- Использование docker-compose
- Автоматизация сборки образа привязка имени тэга к версии сборки (sha-коммита, имя ветки)
- Деплой (загрузка) образа в хранилище артефактов например dockerhub
В практическом задании данного модуля вам необходимо продемонстрировать навыки практического использования утилиты dvc для работы с данными. В результате выполнения этих заданий вы выполните все основные операции с dvc и закрепите полученные теоретические знания практическими действиями.
Этапы задания:
- Создайте папку lab4 в корне проекта.
- Установите git и dvc. Настройте папку проекта для работы с git и dvc.
- Настройте удаленное хранилище файлов, например на Google Disk или S3.
- Создайте датасет, например, о пассажирах “Титаника” catboost.titanic().
- Модифицируйте датасет, в котором содержится информация о классе (“Pclass”), поле (“Sex”) и возрасте (“Age”) пассажира. Сделайте коммит в git и push в dvc.
- Создайте новую версию датасета, в котором пропущенные (nan) значения в поле “Age” будут заполнены средним значением. Сделайте коммит в git и push в dvc.
- Создайте новый признак с использованием one-hot-encoding для строкового признака “Пол” (“Sex”). Сделайте коммит в git и push в dvc.
- Выполните переключение между всеми созданными версиями датасета.
При правильном выполнении задания и вас появится git репозиторий с опубликованной метаинформацией и папка на Google Disk, в которой хранятся различные версии датасетов. Вам необходимо подготовить отчет в тех функциональностях которые вы настроили. Дополнительно можно настроить DAG, запуск и версионирование экспериментов, например, с использованием Hydra.
В постановке задачи используется датасет из конкурса “Titanic Disaster”, однако вы можете использовать свои наборы данных, в этом случае в п.п.4-8 необходимо использовать информацию и признаки из вашего датасета.
Цель задания: применить средства автоматизации тестирования python для автоматического тестирования качества работы модели машинного обучения на различных датасетах. Результаты размещаются в каталоге lab5.
Этапы задания:
- Создать три датасета с «качественными» данными, на которых можно обучить простую модель линейной регрессии, например
- На одном из этих датасетов обучить модель линейной регрессии
- Создать датасет с шумом в данных, например
- Провести тестирование работы модели на разных датасетах с использованием pytest, анализируя качество предсказания, обнаружить проблему на датасете с шумами.
Критерии: данное задание необходимо полностью выполнить в виде jupyter ноутбука и предоставить его на проверку.
Подсказка: вы можете записать содержимое ячейки jupyter ноутбука в отдельный файл с помощью команды
%%writefile”имя файла”
А также можете выполнить любую linux команду прямо из ячейки jupyter ноутбука, с помощью синтаксиса
! “имя команды”