E· Universitetmodelltraning-finjustering· ca 60 min· utvecklande· verifierad 2026-09-20
Experimentspårning
Kunna logga körningar med parametrar och mått och jämföra dem systematiskt.
Förkunskaper
- EReproducerbarhetkrävs
Intuition
Efter 40 körningar med olika lr, batch, data och kodändringar minns ingen vilken som gav 0,87. Experimentspårning = varje körning loggar automatiskt:
- konfiguration (alla hyperparametrar, modellnamn, datamängd + version),
- kodversion (git-commit, och om arbetsträdet var smutsigt),
- mått per epok (loss, val-F1 …),
- artefakter (modellvikter, förväxlingsmatris, exempel på fel),
- miljö (paketversioner, GPU, frö).
Verktyg: MLflow, Weights & Biases, eller en enkel JSONL-fil + git. Verktyget är oviktigt; disciplinen att aldrig köra något som inte loggas är allt.
Kod
import json, subprocess, time, uuid
from pathlib import Path
class Run:
def __init__(self, config: dict, log_dir="runs"):
self.id = time.strftime("%Y%m%d-%H%M%S-") + uuid.uuid4().hex[:6]
self.dir = Path(log_dir) / self.id; self.dir.mkdir(parents=True)
git = subprocess.run(["git", "rev-parse", "HEAD"], capture_output=True, text=True).stdout.strip()
dirty = bool(subprocess.run(["git", "status", "--porcelain"], capture_output=True, text=True).stdout)
(self.dir / "config.json").write_text(json.dumps({**config, "git": git, "dirty": dirty}, indent=2))
self.f = (self.dir / "metrics.jsonl").open("a")
def log(self, step: int, **m):
self.f.write(json.dumps({"step": step, "t": time.time(), **m}) + "\n"); self.f.flush()
run = Run({"lr": 2e-5, "epochs": 3, "data": "support-v3", "seed": 0})
for epok in range(3):
run.log(epok, train_loss=0.5 / (epok + 1), val_f1=0.7 + 0.05 * epok)
# jämföra: läs alla runs/*/config.json + sista metrics-raden → tabell (pandas)
Med MLflow: mlflow.log_params(config); mlflow.log_metric("val_f1", f1, step=epok); mlflow.log_artifact("cm.png").
Behärskning innebär
- Loggar körningar med parametrar, mått och artefakter
- Jämför körningar systematiskt
- Kopplar varje resultat till kod-commit och data-version
Logga in för att göra övningarna och bygga upp din behärskning.
Källor
- MLflow — dokumentation (Apache-2.0) — Apache-2.0