Giter Site home page Giter Site logo

xflow's Introduction

Лабораторная УрФУ MLops: xFlow

Все сделал в docker. Контейнеры собраны с пробросом CUDA, для корректной настройки - документация.

Главные папки airflow и mlflow пробрасываются на хост для дальнейшей работы (после рестарта контейнера). Так же докеры крутятся с открытой консолью, что тоже не очень DevOps 😐.

Виртуальное окружение создавать в докере не стал, так как получается слишком много слоев изоляции 😊.

AirFlow

Размер контейнера (после иницализации) ~14 Gb. Контейнер сам пересобрал, так как релиз слишком большой и раскатывает продакшн инфраструктуру (redis, postgres и прочие радости), плюс в стандарте карточка не пробрасывается, а как нам в ML без GPU😁.

Билд контейнера:

cd ...\xFlow\Airflow\
docker build --tag service/airflow ./

tag можно указать любой, какой нравится.

Для запуска в файле \xFlow\Airflow\start.bat поменять папку для маппинга скриптов внутрь контейнера, (в моем случа: e:\ML-OPS\xFlow\scripts), а также папку airflow (в моем случае e:\ML-OPS\xFlow\main_folders\Airflow):

docker run --gpus all -it --rm -p 8080:8080 -d -v e:\ML-OPS\xFlow\scripts:/scripts -v e:\ML-OPS\xFlow\main_folders\Airflow:/root/airflow service/airflow

!!ПЕРЕД ЗАПУСКОМ СОЗДАТЬ ПАПКИ, КОТОРЫЕ МОНТИРУЮТСЯ!!

Порты, при желании тоже можно поменять. После запуска (.\start.bat) подключиться к контейнеру (например через Docker Desctop) и инициализировать Airflow:

/init_airflow.sh

В процессе попросит пароль, пользователь в Airflow:

После инициализации Airflow запустится в фоновом режиме. Доступ к консоле останется. Для проверки идем в браузер 127.0.0.1:8080, если попросит данные для входа и потом покажет дашборд - все работает.

Для добавления DAG - копируем скрипты в примотнированную папку (в моем случае e:\ML-OPS\xFlow\main_folders\Airflow\dags) и ждем, пока airflow их подцепит. Вызываемые скрипты размещаем в scripts (в моем случае e:\ML-OPS\xFlow\scripts), обратите внимание, что внутри контейнера точка монтирования scripts - /scripts (из корня).

MLFlow

Сборка контейнера:

cd \xFlow\MLFlow
docker build --tag service/mlflow ./ 

Для запуска контейнера используется скрипт \xFlow\MLFlow\start.bat. При необходимости - заменить маппинг папки с артефактами, папку скриптов и маппинг портов

docker run -it --rm -p 5000:5000 --name mlflow -d -v e:\ML-OPS\xFlow\artefacts:/artifacts -v e:\ML-OPS\xFlow\scripts\mlflow:/scripts service/mlflow

!!ПЕРЕД ЗАПУСКОМ СОЗДАТЬ ПАПКИ, КОТОРЫЕ МОНТИРУЮТСЯ!!

Порты, при желании тоже можно поменять. После запуска (.\start.bat) подключиться к контейнеру (например через Docker Desctop) и инициализировать MLFlow:

/init_mlflowsh

Будет запущен сервер (проверить: http:/127.0.0.1:5000, порт по умолчанию 5000)

Задача

Так как цель практики MLops - задача очень далека от практики. Если делать хорошо, то в срок точно ничего не сдать. Возможно, если будет время, можно аналитику покрутить и до ума довести. Может даже одностраничник сделать

  • Источник данных: hh

  • Домены ML: nlp, classic ML

  • Зачем пайплайн: рынок меняется, оценки ползут. Если постоянно собирать и пересчитывать будут данные о динамике рынка вакансий.

Постановка задачи:

По тексту responsibility предсказать зарплату (когорту) [1] и потребность в специалисте (когорта, чем меньше время существования вакансии тем выше потребность в текущее время) [2]

Что сделать:

  • два набора лейблов - зп и время онбординга (считаем, от текущего времени)
  • токенизация
  • моделька - вот тут прям лениво крутить трансформеры - просто скормим XGBoost 😑

В reseach\reseach.ipynb содержится краткий ресеч перед построением пайплайна.

Airflow - 1 задача, MLflow - 2я

Результат Airflow:

Результат Airflow

MLFlow

Я разнес airflow и mlflow так как контейнеры достаточно прожорливые.

Для работы последовательно запустить скрипт в докере:

cd /scripts
./run_experiment.sh

Результат MLFlow:

Результат MLFlow

xflow's People

Contributors

xausssr avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.