Code organization and refactoring

DVC के साथ डेटा वर्ज़निंग परिचय

Ravi Bhadauria

Machine Learning Engineer

Prototyping बनाम production code

  • प्रोटोटाइपिंग कोड तेज़ iteration देती है
  • लेकिन प्रोडक्शन के लिए उपयुक्त नहीं
    • अनटेस्टेड और त्रुटि-प्रवण
    • मॉड्यूलर नहीं, कई दोहराए गए कोड ब्लॉक
    • संभवतः पुनरुत्पादन योग्य नहीं
DVC के साथ डेटा वर्ज़निंग परिचय

Good production code की विशेषताएँ

  • Reproducible: अलग environments और समय में वही outputs पुनः बनाएँ

  • Modular: अलग, स्वतंत्र, और testable modules के रूप में लिखा हुआ

  • Consistent: सभी parameters के लिए single source of truth

    • एक configuration/parameter फ़ाइल

प्रोडक्शन कोड की तीन विशेषताओं का योजनाबद्ध आरेख

DVC के साथ डेटा वर्ज़निंग परिचय

Configuration फ़ाइलें और YAML

  • फ़ाइलें supported format में हों

    • YAML, JSON, TOML, Python
    • डिफ़ॉल्ट है params.yaml
  • हम YAML के साथ काम करेंगे

    • YAML Ain't Markup Language
    • भाषाओं/एप्लिकेशनों के बीच डेटा ट्रांसफ़र का standard format देता है
    • सिंपल और क्लीन format
    • वैध एक्सटेंशन: .yaml या .yml
1 https://dvc.org/doc/command-reference/params#description
DVC के साथ डेटा वर्ज़निंग परिचय

YAML सिंटैक्स

  • parameters को dictionaries के रूप में specify करें

    • Keys और values : से अलग होती हैं
  • Comments # से शुरू होते हैं

  • Data types:

    • Integer, Floats, Strings
  • Data structures:

    • Arrays
    • Nested Dictionaries
  • Indentation महत्वपूर्ण है

# Key-value pairs
a: 1
b: 1.2
c: "String value"
# Arrays
a: [1, 2.2, 3, 4.8]
b:
  - 5
  - "String value"
# Nested dictionaries
a:
  b: "Some value"
  c: "Some other value"
DVC के साथ डेटा वर्ज़निंग परिचय

उदाहरण configuration फ़ाइल

# Data preprocessing paramters
preprocess:
  ...
  target_column: RainTomorrow
  categorical_features:
    - Location
    - WindGustDir
    - ...

# Model training/evaluation paramters train_and_evaluate: rfc_params: n_estimators: 2 ...
DVC के साथ डेटा वर्ज़निंग परिचय

उदाहरण modular function

# In model.py
def evaluate_model(model, X_test, y_test):
    """Evaluate a model on a test set and return metrics."""
    y_pred = model.predict(X_test)
    precision = precision_score(y_test, y_pred)
    ...
    return { "accuracy": accuracy, "precision": precision,
        "recall": recall, "f1_score": f1 }
# In entry-point code (train_and_evaluate.py)
from model import evaluate_model
metrics = evaluate_model(model, X_test, y_test)
DVC के साथ डेटा वर्ज़निंग परिचय

सैंपल प्रोजेक्ट कोड लेआउट

Machine Learning रिपॉज़िटरी में कोड लेआउट की छवि

DVC के साथ डेटा वर्ज़निंग परिचय

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

DVC के साथ डेटा वर्ज़निंग परिचय

Preparing Video For Download...