DVC'de metrikleri ve grafikleri karşılaştırma

Machine Learning için CI/CD

Ravi Bhadauria

Machine Learning Engineer

DVC YAML dosyasını yapılandırma

  • Deneyler arasında metrikleri izlemek için DVC YAML dosyasını yapılandırın
  • outs öğesinden değiştirin
stages:
  preprocess:
    ...
  train:
    ...
    outs:
    - metrics.json
    - confusion_matrix.png
  • metrics öğesine
stages:
  preprocess:
    ...
  train:
    ...
    outs:
    - confusion_matrix.png

metrics: - metrics.json: cache: false
Machine Learning için CI/CD

DVC metriklerini sorgulama ve karşılaştırma

-> dvc metrics show

Path accuracy f1_score precision recall metrics.json 0.947 0.8656 0.988 0.7702

Bir hiperparametreyi değiştirin ve dvc repro komutunu yeniden çalıştırın

-> dvc metrics diff

Path Metric HEAD workspace Change metrics.json accuracy 0.947 0.9995 0.0525 metrics.json f1_score 0.8656 0.9989 0.1333 metrics.json precision 0.988 0.9993 0.0113 metrics.json recall 0.7702 0.9986 0.2284
1 https://dvc.org/doc/command-reference/metrics
Machine Learning için CI/CD

DVC GitHub Action'ı kurma

  • setup-dvc GitHub Action'ı ekleyin
  • Python betiklerini çalıştırmayı DVC boru hattı ile değiştirin
steps:
  ...
  - name: Setup DVC
    uses: iterative/setup-dvc@v1

- name: Run DVC pipeline run: dvc repro
Machine Learning için CI/CD

DVC GitHub Action'ı kurma

- name: Write CML report
  env:
    REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  run: |
    # Geçerli dalın metriklerini yazdır
    dvc metrics show --md >> report.md

# Ana dal ile metrikleri karşılaştır git fetch --prune dvc metrics diff --md main >> report.md
# CML raporu oluştur cml comment create report.md
Machine Learning için CI/CD

Boru hattı çalışırken

Ana dal ile metrik farkını gösteren bir pull request yorumunun ekran görüntüsü

Machine Learning için CI/CD

DVC'de grafik türleri

  • scatter - saçılım grafiği
  • linear - etkileşimli doğrusal grafik
  • simple - etkileşimsiz, özelleştirilebilir doğrusal grafik
  • smooth - yumuşatmalı doğrusal grafik
  • confusion - karmaşıklık matrisi
  • confusion_normalized - 0–1 aralığına normalize değerlerle karmaşıklık matrisi
  • bar_horizontal - yatay çubuk grafik
  • bar_horizontal_sorted - çubuk boyuna göre sıralı yatay çubuk grafik
1 https://dvc.org/doc/user-guide/experiment-management/visualizing-plots#plot-templates-data-series-only
Machine Learning için CI/CD

Grafikler için DVC YAML yapılandırma

stages:
  train:
    ...
    plots:
    - predictions.csv: # Tahminleri içeren dosyanın adı
        template: confusion # Grafiğin stili

x: predicted_label # CSV'de X ekseni sütun adı y: true_label # CSV'de Y ekseni sütun adı x_label: 'Predicted label' y_label: 'True label' title: Confusion matrix
cache: false # Git'te sakla
Machine Learning için CI/CD

Karmaşıklık Matrisi çizimi

-> dvc plots show predictions.csv
file:///path/to/index.html

DVC tarafından oluşturulan karmaşıklık matrisi grafiği

Machine Learning için CI/CD

Karmaşıklık Matrisini karşılaştırma

-> dvc plots diff --target predictions.csv main
file:///path/to/index.html

DVC tarafından oluşturulan karmaşıklık matrisi fark grafiği

Machine Learning için CI/CD

ROC Eğrilerini karşılaştırma

# Python'daki değişiklikler
y_proba = model.predict_proba(X_test)
fpr, tpr, _ = roc_curve(y_test, 
                        y_proba[:, 1])
# dvc.yaml'daki değişiklikler
plots:
- roc_curve.csv:
    template: simple
    x: fpr
    y: tpr
    x_label: 'False Positive Rate'
    y_label: 'True Positive Rate'
    title: ROC curve
    cache: false

DVC tarafından oluşturulan ROC eğrisi fark grafiği

Machine Learning için CI/CD

Hadi pratik yapalım!

Machine Learning için CI/CD

Preparing Video For Download...