DVC पाइपलाइनों

Machine Learning के लिए CI/CD

Ravi Bhadauria

Machine Learning Engineer

डेटा पाइपलाइन की ज़रूरत

  • सिर्फ डेटा का वर्ज़निंग बहुत उपयोगी नहीं है
  • डेटा लीनेज ट्रैक करना ज़रूरी है
    • फ़िल्टरिंग, क्लीनिंग, और ट्रांसफ़ॉर्मेशन
    • मॉडल ट्रेनिंग
  • सिर्फ़ ज़रूरी चीज़ें ही चलाएँ
  • स्टेप्स एक Directed Acyclic Graph (DAG) में

मॉडल प्रीप्रोसेसिंग, ट्रेनिंग, और आर्टिफ़ैक्ट्स के बीच संबंध दिखाता DAG का स्कीमैटिक डायग्राम

Machine Learning के लिए CI/CD

DVC पाइपलाइनों

  • ML वर्कफ़्लो और डिपेंडेंसी की स्टेज-सीक्वेंस

  • dvc.yaml फ़ाइल में परिभाषित

    • इनपुट डेटा और स्क्रिप्ट्स (deps)
    • स्टेज चलाने के कमांड्स (cmd)
    • आउटपुट आर्टिफ़ैक्ट्स (outs)
      • विशेष डेटा जैसे metrics और plots
  • GitHub Actions वर्कफ़्लो जैसा

    • CI/CD के बजाय ML टास्क पर फ़ोकस
    • GHA में एक स्टेप के रूप में एब्स्ट्रैक्ट कर सकते हैं
Machine Learning के लिए 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
    
Machine Learning के लिए 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
Machine Learning के लिए 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"`
Machine Learning के लिए CI/CD

कैश्ड रिज़ल्ट्स का उपयोग

  • कैश्ड रिज़ल्ट्स से इटरेशन तेज़ करें
-> dvc repro
Stage 'preprocess' didn't change, skipping
Running stage 'train' with command: ...
Machine Learning के लिए CI/CD

DVC पाइपलाइन का दृश्यांकन

-> dvc dag
+------------+ 
| preprocess | 
+------------+ 
       *       
       *       
       *       
  +-------+    
  | train |    
  +-------+
1 https://dvc.org/doc/command-reference/dag
Machine Learning के लिए CI/CD

सारांश

  • DVC पाइपलाइनें इन कामों में उपयोगी हैं
    • कैशिंग से तेज़ इटरेशन
    • dvc.yaml और dvc.lock से पुनरुत्पादनयोग्यता
    • CI/CD सक्षम करना
  • dvc stage add से पाइपलाइन बनाएँ
  • dvc repro से दोबारा चलाएँ/निष्पादित करें
  • dvc dag से विज़ुअलाइज़ करें
Machine Learning के लिए CI/CD

अभ्यास करते हैं!

Machine Learning के लिए CI/CD

Preparing Video For Download...