Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Осваиваем и дополняем Data Version Control

Осваиваем и дополняем Data Version Control

Артем Селезнев (МегаФон, аналитик больших данных) @ Moscow Python Meetup 67

"Как часто Вы сталкиваетесь с проблемой повторением ваших экспериментов в Ml? А Вы уже следите за Вашим процессом и его репрезентативностью?
Оказываться, что уже давно существуют инструменты позволяющие контролировать процесс ML, один их этих инструментов - DVC.
Инструмент, которые совместно с GIT может хранить не только Ваш код, но и Ваши данные и обученные модели.
Основывая свой доклад на своей повседневной рабочей деятельности, разберем способы инициализации и первой настройки. Разберем, что нужно знать и как правильно использовать дата пайплайны при помощи DVC, да и как же он хранит данные, не только для повторения процесса, но и для совместной работы".

Видео: http://www.moscowpython.ru/meetup/67/data-version-control/

Moscow Python Meetup
PRO

August 21, 2019
Tweet

More Decks by Moscow Python Meetup

Other Decks in Programming

Transcript

  1. Осваиваем
    и дополняем
    Data Version Control
    Селезнев Артем
    Data Scientist @ MegaFon

    View Slide

  2. Когда вы Data Scientist

    View Slide

  3. Когда вы Data Scientist
    У вас есть проблемы

    View Slide

  4. Когда вы Data Scientist
    1. Data Scientist – не программист

    View Slide

  5. Когда вы Data Scientist
    1. Data Scientist – не программист (в основном)

    View Slide

  6. Когда вы Data Scientist
    1. Data Scientist – не программист (в основном)
    2. Jupyter Notebook – Excel 2.0

    View Slide

  7. Когда вы Data Scientist
    1. Data Scientist – не программист (в основном)
    2. Jupyter Notebook – Excel 2.0
    3. Особенный стиль контроля версий

    View Slide

  8. Когда вы Data Scientist
    1. Data Scientist – не программист (в основном)
    2. Jupyter Notebook – Excel 2.0
    3. Особенный стиль контроля версий
    result.csv
    result_210719.csv
    result_210719.csv
    result_25_fin.csv

    View Slide

  9. Когда вы Data Scientist
    1. Data Scientist – не программист (в основном)
    2. Jupyter Notebook – Excel 2.0
    3. Особенный (“Восточный”) стиль контроля версий
    result.csv
    result_210719.csv
    result_210719.csv
    result_25_final.csv
    result_25_finv1.csv
    result_25_finv2.csv
    result_25_finre.csv
    ….csv

    View Slide

  10. Когда вы Data Scientist
    1. Data Scientist – не программист (в основном)
    2. Jupyter Notebook – Excel 2.0
    3. Особенный стиль контроля версий
    result_25_final.csv
    result_25_finv1.csv
    result_25_finv2.csv
    result_25_finre.csv
    ….csv

    View Slide

  11. Когда вы Data Scientist
    1. Data Scientist – не программист (в основном)
    2. Jupyter Notebook – Excel 2.0
    3. Кризис контроля версий
    result_25_final.csv
    result_25_finv1.csv
    result_25_finv2.csv
    result_25_finre.csv
    ….csv
    Data Frame
    Headers
    Pickles
    list of prev.csv

    View Slide

  12. Когда вы Data Scientist

    View Slide

  13. DVC – выход из кризиса

    View Slide

  14. DVC – выход из кризиса. Почему?
    1. Контроль экспериментов

    View Slide

  15. DVC – выход из кризиса. Почему?
    1. Контроль экспериментов
    2. Воспроизведение экспериментов

    View Slide

  16. DVC – выход из кризиса. Почему?
    1. Контроль экспериментов
    2. Воспроизведение экспериментов
    3. Создание pipeline проекта

    View Slide

  17. DVC – выход из кризиса. Почему?
    1. Контроль экспериментов
    2. Воспроизведение экспериментов
    3. Создание pipeline проекта
    4. Data cache

    View Slide

  18. DVC – выход из кризиса. Почему?
    1. Контроль экспериментов
    2. Воспроизведение экспериментов
    3. Создание pipeline проекта
    4. Data cache
    5. Работа с облаками

    View Slide

  19. Экспресс обзор DVC
    Как он работает
    1
    19

    View Slide

  20. DVC обзор
    1. Инициализировав DVC, создайте пространство для файлов
    > git init
    > dvc init
    > git add .
    > git commit -m "init"
    > dvc remote add -d myremote /tmp/storage
    > git commit .dvc/config -m "initialize DVC local remote"

    View Slide

  21. DVC обзор
    1. Инициализировав DVC, создайте пространство для файлов
    > git init
    > dvc init
    > git add .
    > git commit -m "init"
    > dvc remote add -d myremote /tmp/storage
    > git commit .dvc/config -m "initialize DVC local remote"

    View Slide

  22. DVC обзор
    1. Инициализировав DVC, создайте пространство для файлов
    > dvc remote add -d myremote /tmp/storage
    > git commit .dvc/config -m "initialize DVC local remote"
    local / remote , Amazon Storage, Google Cloud, Azure Storage, Hadoop

    View Slide

  23. DVC обзор
    2. Создайте pipeline
    > dvc run -f catboost_dev/data_pre.dvc \
    > -d constants.csv \
    > -d loader.py \
    > -d preparator.py \
    > -o data/raw_feats.csv \
    > python preparator.py

    View Slide

  24. DVC обзор
    2. Создайте pipeline
    > dvc run -f catboost_dev/data_pre.dvc \
    > -d constants.csv \
    > -d loader.py \
    > -d preparator.py \
    > -o data/raw_feats.csv \
    > python preparator.py

    View Slide

  25. DVC обзор
    2. Создайте pipeline
    > dvc run -f catboost_dev/data_pre.dvc \
    > -d constants.csv \
    > -d loader.py \
    > -d preparator.py \
    > -o data/raw_feats.csv \
    > python preparator.py

    View Slide

  26. DVC обзор
    2. Создайте pipeline
    > dvc run -f catboost_dev/data_pre.dvc \
    > -d constants.csv \
    > -d loader.py \
    > -d preparator.py \
    > -o data/raw_feats.csv \
    > python preparator.py
    md5: bbcf9272de50…
    cmd: preparator.py
    wdir: ..
    deps:
    - md5: 34rmrfhc58nr…
    path: constants.csv
    - md5: 8a5123fnf11n…
    path: loader.py
    - md5: 90tj58fh4515…
    path: preparator.py
    outs:
    - md5: 9a05df6702e9…
    path: data/raw_feats.csv

    View Slide

  27. DVC обзор
    2. Создайте pipeline
    > dvc run -f catboost_dev/data_pre.dvc \
    > -d constants.csv \
    > -d loader.py \
    > -d preparator.py \
    > -o data/raw_feats.csv \
    > python preparator.py
    md5: bbcf9272de50…
    cmd: preparator.py
    wdir: ..
    deps:
    - md5: 34rmrfhc58nr…
    path: constants.csv
    - md5: 8a5123fnf11n…
    path: loader.py
    - md5: 90tj58fh4515…
    path: preparator.py
    outs:
    - md5: 9a05df6702e9…
    path: data/raw_feats.csv

    View Slide

  28. DVC обзор
    2. Создайте pipeline
    > dvc run -f catboost_dev/data_pre.dvc \
    > -d constants.csv \
    > -d loader.py \
    > -d preparator.py \
    > -o data/raw_feats.csv \
    > python preparator.py
    md5: bbcf9272de50…
    cmd: preparator.py
    wdir: ..
    deps:
    - md5: 34rmrfhc58nr…
    path: constants.csv
    - md5: 8a5123fnf11n…
    path: loader.py
    - md5: 90tj58fh4515…
    path: preparator.py
    outs:
    - md5: 9a05df6702e9…
    path: data/raw_feats.csv

    View Slide

  29. DVC обзор
    3. Добавьте метрик и отслеживайте их
    > dvc run -f catboost_dev/.dvc \
    > -d constants.csv \
    > -d loader.py \
    > -d preparator.py \
    > -d data/raw_feats.csv \
    > -d catboost_fitter.py \
    > -m metrics/ctb_binary.txt
    > python preparator.py

    View Slide

  30. DVC обзор
    3. Добавьте метрик и отслеживайте их
    > dvc run -f catboost_dev/.dvc \
    > -d constants.csv \
    > -d loader.py \
    > -d preparator.py \
    > -d data/raw_feats.csv \
    > -d catboost_fitter.py \
    > -m metrics/ctb_binary.txt
    > python preparator.py

    outs:
    - md5: 1f41fedm14dk4…
    path: metrics/ctb_binary.txt
    cache: true
    metric: true
    persist: false

    View Slide

  31. Хотелось ещё
    2
    31

    View Slide

  32. Процессы хорошо читаемы
    > dvc run -f catboost_dev/data_pre.dvc \
    > -d constants.csv \
    > -d loader.py \
    > -d preparator.py \
    > -o data/raw_feats.csv \
    > python preparator.py
    md5: bbcf9272de50…
    cmd: preparator.py
    wdir: ..
    deps:
    - md5: 34rmrfhc58nr…
    path: constants.csv
    - md5: 8a5123fnf11n…
    path: loader.py
    - md5: 90tj58fh4515…
    path: preparator.py
    outs:
    - md5: 9a05df6702e9…
    path: data/raw_feats.csv

    View Slide

  33. Процессы хорошо читаемы
    > dvc run -f catboost_dev/data_pre.dvc \
    > -d constants.csv \
    > -d loader.py \
    > -d preparator.py \
    > -o data/raw_feats.csv \
    > python preparator.py
    md5: bbcf9272de50…
    cmd: preparator.py
    wdir: ..
    deps:
    - md5: 34rmrfhc58nr…
    path: constants.csv
    - md5: 8a5123fnf11n…
    path: loader.py
    - md5: 90tj58fh4515…
    path: preparator.py
    outs:
    - md5: 9a05df6702e9…
    path: data/raw_feats.csv
    > dvc run -f catboost_dev/cat_b.dvc \
    > -d constants.csv \
    > -d data/raw_feats.csv \
    > -d cat_b.py
    > -o data/cat_result.csv
    > python cat_b.py
    md5: 8fsdhfe5rceq…
    cmd: cat_b.py
    wdir: ..
    deps:
    - md5: 1ee41dxqecs1…
    path: constants.csv
    - md5: 3x34r45ce14r…
    path: data/raw_feats.csv
    - md5: 8fsdhfe5rceq…
    path: cat_b.py
    outs:
    - md5: 15df8tadcacm495…
    path: data/cat_result.csv

    View Slide

  34. Процессы хорошо читаемы
    > dvc run -f catboost_dev/data_pre.dvc \
    > -d constants.csv \
    > -d loader.py \
    > -d preparator.py \
    > -o data/raw_feats.csv \
    > python preparator.py
    md5: bbcf9272de50…
    cmd: preparator.py
    wdir: ..
    deps:
    - md5: 34rmrfhc58nr…
    path: constants.csv
    - md5: 8a5123fnf11n…
    path: loader.py
    - md5: 90tj58fh4515…
    path: preparator.py
    outs:
    - md5: 9a05df6702e9…
    path: data/raw_feats.csv
    > dvc run -f catboost_dev/cat_b.dvc \
    > -d constants.csv \
    > -d data/raw_feats.csv \
    > -d cat_b.py
    > -o data/cat_result.csv
    > python cat_b.py
    md5: 8fsdhfe5rceq…
    cmd: cat_b.py
    wdir: ..
    deps:
    - md5: 1ee41dxqecs1…
    path: constants.csv
    - md5: 3x34r45ce14r…
    path: data/raw_feats.csv
    - md5: 8fsdhfe5rceq…
    path: cat_b.py
    outs:
    - md5: 15df8tadcacm495…
    path: data/cat_result.csv
    > dvc run -f catboost_dev/m.dvc \
    > -d data/cat_resutlt.csv
    > -d cat_eval.py
    > -m metrics/ctb_m.txt
    > python cat_eval.py
    md5: 93miew4123cdas…
    cmd: cat_eval.py
    wdir: ..
    deps:
    - md5: 15df8tadcacm495…
    path: data/cat_result.csv
    - md5: 8fsdhfe5rceq…
    path: cat_b.py
    outs:
    - md5: 4t63tcm5t23x4…
    path: metrics/ctb_m.txt
    cache: true
    metric: true
    persist: false

    View Slide

  35. Но визуализировались только…

    View Slide

  36. Сам себе визуализатор
    github.com/artzub/GitHubVisualizer

    View Slide

  37. Сам себе визуализатор
    master
    seleznev
    seleznev
    master
    exp_v
    exp_v
    master
    master

    View Slide

  38. Автоматизация работы

    View Slide

  39. Автоматизация работы
    1. Контекстный менеджер

    View Slide

  40. Автоматизация работы
    1. Контекстный менеджер
    2. Автокоммиты (шт/час)

    View Slide

  41. Автоматизация работы
    1. Контекстный менеджер
    2. Автокоммиты (шт/час)
    3. Редактирование pipeline

    View Slide

  42. Но веток становилось очень много

    View Slide

  43. Решение на сетях Петри
    master
    seleznev
    seleznev
    master
    exp_v
    exp_v
    master
    master

    View Slide

  44. Решение на сетях Петри

    View Slide

  45. Решение на сетях Петри
    Commit = Success

    View Slide

  46. Решение на сетях Петри
    Score / Timing

    View Slide

  47. Решение на сетях Петри
    Дерево достижимости

    View Slide

  48. Вы можете попробовать
    dvc.org

    View Slide

  49. Вы можете попробовать
    dvc.org
    pachyderm.io
    pypi.org/project/kedro

    View Slide

  50. Селезнев Артем, DS @ MegaFon
    @SeleznevArtem
    Спасибо
    FB/seleznev.artem.info

    View Slide