Potoki DVC

CI/CD dla uczenia maszynowego

Ravi Bhadauria

Machine Learning Engineer

Potrzeba potoku danych

  • Samo wersjonowanie danych jest mało przydatne
  • Śledzenie rodowodu danych jest ważne
    • Filtrowanie, czyszczenie i transformacja
    • Trenowanie modelu
  • Uruchamiaj tylko to, co niezbędne
  • Kroki w skierowanym grafie acyklicznym (DAG)

Schemat DAG przedstawiający zależności między przetwarzaniem wstępnym, trenowaniem i artefaktami modelu

CI/CD dla uczenia maszynowego

Potoki DVC

  • Sekwencja etapów definiujących przepływ pracy ML i zależności

  • Zdefiniowana w pliku dvc.yaml

    • Dane wejściowe i skrypty (deps)
    • Polecenia wykonania etapu (cmd)
    • Artefakty wyjściowe (outs)
      • Dane specjalne, np. metrics i plots
  • Podobne do przepływu pracy GitHub Actions

    • Skupione na zadaniach ML, nie CI/CD
    • Może być abstrakcją kroku w GHA
CI/CD dla uczenia maszynowego

Definiowanie etapów potoku

  • Twórz etapy za pomocą dvc stage add
dvc stage add \
-n preprocess \
-d raw_data.csv -d preprocess.py \
-o processed_data.csv \
python preprocess.py
  • Zawartość dvc.yaml
    stages:
    preprocess:
      cmd: python preprocess.py
      deps:
      - preprocess.py
      - raw_data.csv
      outs:
      - processed_data.csv
    
CI/CD dla uczenia maszynowego

Grafy zależności

  • Dodaj etap trenowania wykorzystujący dane z poprzedniego etapu
    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 dla uczenia maszynowego

Odtwarzanie potoku

  • Odtwórz potok za pomocą dvc repro
-> dvc repro
Running stage 'preprocess':                                      
> python preprocess.py

Running stage 'train': > python train.py Updating lock file 'dvc.lock'
  • Generowany jest plik stanu dvc.lock
    • Podobnie jak plik .dvc, przechowuje skróty MD5
    • Natychmiast zatwierdź w Git, aby zarejestrować stan git add dvc.lock && git commit -m "first pipeline repro"`
CI/CD dla uczenia maszynowego

Korzystanie z pamięci podręcznej

  • Wykorzystanie pamięci podręcznej do przyspieszenia iteracji
-> dvc repro
Stage 'preprocess' didn't change, skipping
Running stage 'train' with command: ...
CI/CD dla uczenia maszynowego

Wizualizacja potoku DVC

-> dvc dag
+------------+ 
| preprocess | 
+------------+ 
       *       
       *       
       *       
  +-------+    
  | train |    
  +-------+
1 https://dvc.org/doc/command-reference/dag
CI/CD dla uczenia maszynowego

Podsumowanie

  • Potoki DVC są przydatne do
    • Szybkiej iteracji dzięki pamięci podręcznej
    • Odtwarzalności z dvc.yaml i dvc.lock
    • Obsługi CI/CD
  • Tworzenie potoków za pomocą dvc stage add
  • Odtwarzanie/wykonywanie za pomocą dvc repro
  • Wizualizacja za pomocą dvc dag
CI/CD dla uczenia maszynowego

Czas na ćwiczenia!

CI/CD dla uczenia maszynowego

Preparing Video For Download...