Пайплайны DVC

CI/CD для машинного обучения

Ravi Bhadauria

Machine Learning Engineer

Зачем нужен пайплайн данных

  • Версионирование данных само по себе малополезно
  • Важно отслеживать происхождение данных
    • Фильтрация, очистка и преобразование
    • Обучение модели
  • Выполнять только необходимое
  • Шаги в виде направленного ациклического графа (DAG)

Схематичная диаграмма DAG, показывающая связи между предобработкой, обучением модели и артефактами

CI/CD для машинного обучения

Пайплайны DVC

  • Последовательность этапов, определяющих ML-процесс и зависимости

  • Описывается в файле dvc.yaml

    • Входные данные и скрипты (deps)
    • Команды выполнения этапов (cmd)
    • Выходные артефакты (outs)
      • Специальные данные, например metrics и plots
  • Аналогично рабочему процессу GitHub Actions

    • Ориентирован на ML-задачи, а не на CI/CD
    • Может быть включён как шаг в GHA
CI/CD для машинного обучения

Определение этапов пайплайна

  • Создайте этапы с помощью dvc stage add
dvc stage add \
-n preprocess \
-d raw_data.csv -d preprocess.py \
-o processed_data.csv \
python preprocess.py
  • Содержимое dvc.yaml
    stages:
    preprocess:
      cmd: python preprocess.py
      deps:
      - preprocess.py
      - raw_data.csv
      outs:
      - processed_data.csv
    
CI/CD для машинного обучения

Графы зависимостей

  • Добавьте этап обучения, используя результат предыдущего шага
    dvc stage add \
    -n train \
    -d train.py -d processed_data.csv \
    -o plots.png -o metrics.txt \
    python train.py
    
stages:
  preprocess:
    cmd: python preprocess.py
    deps:
    - preprocess.py
    - raw_data.csv
    outs:
    - processed_data.csv

train: cmd: python train.py deps: - processed_data.csv - train.py outs: - plots.png
CI/CD для машинного обучения

Воспроизведение пайплайна

  • Воспроизведите пайплайн с помощью dvc repro
-> dvc repro
Running stage 'preprocess':                                      
> python preprocess.py

Running stage 'train': > python train.py Updating lock file 'dvc.lock'
  • Создаётся файл состояния dvc.lock
    • Аналогично файлу .dvc, фиксирует MD5-хэши
    • Зафиксируйте в Git сразу для сохранения состояния git add dvc.lock && git commit -m "first pipeline repro"`
CI/CD для машинного обучения

Использование кэшированных результатов

  • Использование кэшированных результатов для ускорения итераций
-> dvc repro
Stage 'preprocess' didn't change, skipping
Running stage 'train' with command: ...
CI/CD для машинного обучения

Визуализация пайплайна DVC

-> dvc dag
+------------+ 
| preprocess | 
+------------+ 
       *       
       *       
       *       
  +-------+    
  | train |    
  +-------+
1 https://dvc.org/doc/command-reference/dag
CI/CD для машинного обучения

Итоги

  • Пайплайны DVC полезны для
    • Быстрых итераций благодаря кэшированию
    • Воспроизводимости с dvc.yaml и dvc.lock
    • Поддержки CI/CD
  • Создание пайплайнов с помощью dvc stage add
  • Воспроизведение/выполнение с помощью dvc repro
  • Визуализация с помощью dvc dag
CI/CD для машинного обучения

Давайте потренируемся!

CI/CD для машинного обучения

Preparing Video For Download...