Конвеєри 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...