{{template "head" "Training"}} {{template "nav" "training"}}
{{/* -- Sidebar -- */}}
Overview {{range .ModelGroups}} {{.Model}} {{.BestStatus}} {{end}}
{{/* -- Main content -- */}}
{{if not .SelectedModel}} {{/* -- Overview: all models -- */}}

LEM Training

{{/* -- Scoring progress summary -- */}} {{if .ModelGroups}}
Models
{{.ScoredModels}} / {{len .ModelGroups}}
scored
Scoring Runs
{{.TotalScoringRuns}}
content + capability
Data Points
{{fmtInt .TotalDataPoints}}
across all benchmarks
{{if gt .UnscoredModels 0}}
Awaiting Scoring
{{.UnscoredModels}}
{{.UnscoredNames}}
{{else}}
Status
Done
all models scored
{{end}}
{{end}} {{if .ModelGroups}} {{else}}

No training or benchmark data. InfluxDB refreshes every 60 seconds.

{{end}} {{else}} {{/* -- Detail view: single model -- */}} {{$sel := .SelectedModel}} {{$b := .Benchmarks}} {{$found := false}} {{range .ModelGroups}} {{if eq .Model $sel}}

{{.Model}}

{{.BestStatus}}
{{/* Training run status cards */}} {{if .TrainingRuns}}
{{range .TrainingRuns}}
{{.RunID}}
{{pct .Pct}}%
{{.Iteration}} / {{.TotalIters}} · {{.Status}}
{{end}} {{/* Show latest loss stats from most recent run */}} {{with index .TrainingRuns 0}} {{if gt .LastLoss 0.0}}
Train Loss
{{fmtFloat .LastLoss 3}}
latest
{{end}} {{if gt .ValLoss 0.0}}
Val Loss
{{fmtFloat .ValLoss 3}}
latest
{{end}} {{if gt .TokensSec 0.0}}
Tokens/sec
{{fmtFloat .TokensSec 0}}
throughput
{{end}} {{end}}
{{/* Progress bars for in-progress training runs only */}} {{range .TrainingRuns}} {{if ne .Status "complete"}}
{{.RunID}}
{{end}} {{end}} {{end}} {{/* All benchmark runs for this model -- collect data for tabs */}} {{$runs := runsForModel $b $sel}} {{/* Tabbed charts */}}
{{if anyContent $runs $b.Content}}{{end}} {{if anyCap $runs $b.Capability}}{{end}} {{if anyCap $runs $b.Capability}}{{end}} {{if anyLoss $runs $b.Loss}}{{end}}
{{range $runs}} {{$rid := .RunID}} {{if hasContentKey $b.Content $rid}}
{{contentChart (getContent $b.Content $rid)}}
{{end}} {{if hasCapKey $b.Capability $rid}}
{{capabilityChart (getCap $b.Capability $rid)}}
{{categoryBreakdown (getCap $b.Capability $rid) (getCapJudge $b.CapabilityJudge $rid)}}
{{end}} {{if hasKey $b.Loss $rid}}
{{lossChart (getLoss $b.Loss $rid)}}
{{end}} {{end}} {{if and (not .TrainingRuns) (not $runs)}}

No data for this model yet.

{{end}} {{end}} {{end}} {{end}}
{{template "footer"}}