Versuchsmetriken

Mit DVC lassen sich Metriken einfach erfassen und plotten, die Leistung in Diagrammen visualisieren und Parameter aktualisieren. So könnt ihr viele Iterationen eures ML-Projekts ausführen und vergleichen.

Um die passenden Werte für unsere ML-Attribute zu finden, ,fügen wir unserer früheren Pipeline eine abschließende Auswertungsphase hinzu:

$ uv run dvc stage add \
    -n evaluate \
    -d src/dvc_example/evaluate.py \
    -d model.pkl \
    -d data/features \
    -o eval \
    uv run python src/dvc_example/evaluate.py model.pkl data/features

Dies fügt eine neue Stufe in der dvc.yaml-Datei hinzu:

34evaluate:
35  cmd: uv run python src/dvc_example/evaluate.py model.pkl data/features
36  deps:
37  - data/features
38  - model.pkl
39  - src/dvc_example/evaluate.py
40  outs:
41  - eval
Zeile 39

evaluate.py verwendet DVCLive, um (z. B. AUC) und ROC-Kurve) in das eval-Verzeichnis zu schreiben, die DVC analysieren kann, um sie über Iterationen hinweg zu vergleichen und zu visualisieren. Üblicherweise konfiguriert DVCLive Metriken und Plots in der dvc.yaml-Datei, in diesem Beispiel jedoch passen wir sie an, indem wir Trainings- und Testplots kombinieren.

Zeile 41

Die Metriken und Plots werden im eval-Verzeichnis gespeichert, sodass diese Dateien keinen Einfluss auf den Git-Verlauf nehmen. Alternativ kann in bestimmten Fällen auch sinnvoll sein, bestimmte Metriken und Plots auch in Git nachverfolgen zu können.

Nun können wir unsere Auswertungen laufen lassen und die Ergebnisse sichern:

$ uv run dvc repro
'data/data.xml.dvc' didn't change, skipping
Stage 'prepare' didn't change, skipping
Stage 'featurize' didn't change, skipping
Stage 'train' didn't change, skipping
Running stage 'evaluate':
> uv run python src/dvc_example/evaluate.py model.pkl data/features
$ git add .gitignore dvc.lock dvc.yaml pyproject.toml src/dvc_example/evaluate.py
$ git commit -m ':sparkles: Add evaluation step'

Mit dvc metrics könnt ihr euch Metriken auch über die Kommandozeile erstellen lassen:

dvc metrics show

zeigt Metriken mit optionaler Formattierung, z. B.:

$ uv run dvc metrics show
Path               avg_prec.test    avg_prec.train    roc_auc.test    roc_auc.train
eval/metrics.json  0.9014           0.95704           0.93196         0.97743

Siehe auch

dvc metrics show

dvc metrics diff

zeigt Änderungen in den Metriken zwischen Commits, z. B.:

$ uv run dvc metrics diff
Path               Metric          HEAD    workspace    Change
eval/metrics.json  avg_prec.test   -       0.9014       -
eval/metrics.json  avg_prec.train  -       0.95704      -
eval/metrics.json  roc_auc.test    -       0.93196      -
eval/metrics.json  roc_auc.train   -       0.97743      -

Siehe auch

dvc metrics diff

dvc plots show

generiert eine HTML-Seite mit Plots:

DVC Plot

eval/plots/images/importance.png

workspace

Metriken vergleichen

Wenn ihr jetzt in der params.yaml-Datei die Parameter ändert, könnt ihr euer aktuelles Arbeitsverzeichnis mit dem letzten Commit (HEAD) vergleichen:

$ uv run dvc params diff
Path         Param                   HEAD    workspace
params.yaml  featurize.max_features  100     200
params.yaml  featurize.ngrams        1       2
$ uv run dvc metrics diff
Path               Metric          HEAD     workspace    Change
eval/metrics.json  avg_prec.test   0.9014   0.925        0.0236
eval/metrics.json  avg_prec.train  0.95704  0.97437      0.01733
eval/metrics.json  roc_auc.test    0.93196  0.94602      0.01406
eval/metrics.json  roc_auc.train   0.97743  0.98667      0.00924
$ uv run dvc plots diff
file:///Users/veit/dvc-example/dvc_plots/index.html
DVC Plot

eval/plots/images/importance.png

workspace

HEAD