Pipeline DVC

CI/CD untuk Machine Learning

Ravi Bhadauria

Machine Learning Engineer

Kebutuhan akan data pipeline

  • Versi data saja kurang berguna
  • Penting melacak garis keturunan data
    • Penyaringan, pembersihan, transformasi
    • Pelatihan model
  • Jalankan hanya yang perlu
  • Langkah-langkah dalam Directed Acyclic Graph (DAG)

Diagram skematik DAG yang menjabarkan hubungan antara prapemrosesan model, pelatihan, dan artefak

CI/CD untuk Machine Learning

Pipeline DVC

  • Rangkaian stage yang mendefinisikan alur kerja ML dan dependensi

  • Didefinisikan di berkas dvc.yaml

    • Data masukan dan skrip (deps)
    • Perintah eksekusi stage (cmd)
    • Artefak keluaran (outs)
      • Data khusus, mis. metrics dan plots
  • Mirip workflow GitHub Actions

    • Berfokus pada tugas ML, bukan CI/CD
    • Dapat diabstraksikan sebagai satu langkah di GHA
CI/CD untuk Machine Learning

Mendefinisikan stage pipeline

  • Buat stage dengan dvc stage add
dvc stage add \
-n preprocess \
-d raw_data.csv -d preprocess.py \
-o processed_data.csv \
python preprocess.py
  • Isi dvc.yaml
    stages:
    preprocess:
      cmd: python preprocess.py
      deps:
      - preprocess.py
      - raw_data.csv
      outs:
      - processed_data.csv
    
CI/CD untuk Machine Learning

Graf dependensi

  • Tambah langkah pelatihan dengan output dari langkah sebelumnya
    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 untuk Machine Learning

Mereproduksi pipeline

  • Reproduksi pipeline dengan dvc repro
-> dvc repro
Menjalankan stage 'preprocess':                                      
> python preprocess.py

Menjalankan stage 'train': > python train.py Memperbarui berkas kunci 'dvc.lock'
  • Berkas status dvc.lock dibuat
    • Mirip .dvc, menyimpan hash MD5
    • Segera commit ke Git untuk merekam status git add dvc.lock && git commit -m "first pipeline repro"`
CI/CD untuk Machine Learning

Menggunakan hasil cache

  • Gunakan hasil cache untuk mempercepat iterasi
-> dvc repro
Stage 'preprocess' tidak berubah, dilewati
Menjalankan stage 'train' dengan perintah: ...
CI/CD untuk Machine Learning

Visualisasi pipeline DVC

-> dvc dag
+------------+ 
| preprocess | 
+------------+ 
       *       
       *       
       *       
  +-------+    
  | train |    
  +-------+
1 https://dvc.org/doc/command-reference/dag
CI/CD untuk Machine Learning

Ringkasan

  • Pipeline DVC berguna untuk
    • Iterasi cepat berkat caching
    • Reproduksibilitas dengan dvc.yaml dan dvc.lock
    • Mendukung CI/CD
  • Buat pipeline dengan dvc stage add
  • Reproduksi/jalankan dengan dvc repro
  • Visualisasikan dengan dvc dag
CI/CD untuk Machine Learning

Ayo berlatih!

CI/CD untuk Machine Learning

Preparing Video For Download...