Kod organizasyonu ve yeniden düzenleme

DVC ile Veri Sürümlendirmeye Giriş

Ravi Bhadauria

Machine Learning Engineer

Prototipleme vs. üretim kodu

  • Prototipleme kodu hızlı yineleme sağlar
  • Ancak üretim için uygun değildir
    • Test edilmemiş, hataya açıktır
    • Modüler değildir; tekrarlayan bloklar içerir
    • Muhtemelen tekrarlanabilir değildir
DVC ile Veri Sürümlendirmeye Giriş

İyi üretim kodunun özellikleri

  • Tekrarlanabilir: farklı ortam ve zamanlarda aynı çıktıları üretir

  • Modüler: ayrı, bağımsız ve test edilebilir modüller halinde yazılır

  • Tutarlı: tüm parametreler için tek doğru kaynak

    • Bir yapılandırma/parametre dosyası

Üretim kodunun üç özelliğini gösteren şematik diyagram

DVC ile Veri Sürümlendirmeye Giriş

Yapılandırma dosyaları ve YAML

  • Dosyalar desteklenen biçimde olmalıdır

    • YAML, JSON, TOML, Python
    • Varsayılan params.yaml
  • YAML ile çalışacağız

    • YAML Ain't Markup Language
    • Diller/uygulamalar arasında veriyi standart biçimde aktarır
    • Basit ve temiz bir biçim
    • Geçerli uzantılar: .yaml veya .yml
1 https://dvc.org/doc/command-reference/params#description
DVC ile Veri Sürümlendirmeye Giriş

YAML sözdizimi

  • Parametreleri sözlükler olarak belirtin

    • Anahtarlar ve değerler : ile ayrılır
  • Yorumlar # ile başlar

  • Veri tipleri:

    • Tamsayı, Ondalık, Metin
  • Veri yapıları:

    • Diziler
    • İç içe sözlükler
  • Girinti önemlidir

# Anahtar-değer çiftleri
a: 1
b: 1.2
c: "String value"
# Diziler
a: [1, 2.2, 3, 4.8]
b:
  - 5
  - "String value"
# İç içe sözlükler
a:
  b: "Some value"
  c: "Some other value"
DVC ile Veri Sürümlendirmeye Giriş

Örnek yapılandırma dosyası

# Veri ön işleme parametreleri
preprocess:
  ...
  target_column: RainTomorrow
  categorical_features:
    - Location
    - WindGustDir
    - ...

# Model eğitimi/değerlendirme parametreleri train_and_evaluate: rfc_params: n_estimators: 2 ...
DVC ile Veri Sürümlendirmeye Giriş

Modüler fonksiyon örneği

# model.py içinde
def evaluate_model(model, X_test, y_test):
    """Bir modeli test setinde değerlendirip metrikleri döndürür."""
    y_pred = model.predict(X_test)
    precision = precision_score(y_test, y_pred)
    ...
    return { "accuracy": accuracy, "precision": precision,
        "recall": recall, "f1_score": f1 }
# Giriş noktası kodunda (train_and_evaluate.py)
from model import evaluate_model
metrics = evaluate_model(model, X_test, y_test)
DVC ile Veri Sürümlendirmeye Giriş

Örnek proje kod düzeni

Bir Makine Öğrenimi deposunda kod düzeni görseli

DVC ile Veri Sürümlendirmeye Giriş

Hadi pratik yapalım!

DVC ile Veri Sürümlendirmeye Giriş

Preparing Video For Download...