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 derdvc.yaml-Datei, in diesem Beispiel jedoch passen wir sie an, indem wir Trainings- und Testplots kombinieren.Siehe auch
- 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 showzeigt 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 diffzeigt Ä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 plots showgeneriert eine HTML-Seite mit Plots:
DVC Plot eval/plots/images/importance.png
Siehe auch
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
eval/plots/images/importance.png