diff --git a/studio/frontend/src/features/studio/sections/charts/eval-loss-chart-card.tsx b/studio/frontend/src/features/studio/sections/charts/eval-loss-chart-card.tsx index a165f62d3a..2a1e837cf3 100644 --- a/studio/frontend/src/features/studio/sections/charts/eval-loss-chart-card.tsx +++ b/studio/frontend/src/features/studio/sections/charts/eval-loss-chart-card.tsx @@ -11,7 +11,15 @@ import { ChartAverageIcon } from "@hugeicons/core-free-icons"; import { HugeiconsIcon } from "@hugeicons/react"; import type { ReactElement } from "react"; import { CartesianGrid, Line, LineChart, XAxis, YAxis } from "recharts"; -import { formatMetric, formatStepTick, placeholderEvalData } from "./utils"; +import { + CHART_CONTAINER_CLASS, + DEFAULT_CHART_MARGIN, + DEFAULT_Y_AXIS_WIDTH, + formatAxisMetric, + formatMetric, + formatStepTick, + placeholderEvalData, +} from "./utils"; const evalLossConfig = { loss: { label: "Eval Loss", color: "#ef4444" }, @@ -33,22 +41,17 @@ export function EvalLossChartCard({ return ( - 0 ? "" : " text-muted-foreground"}`} - > + 0 ? "" : " text-muted-foreground"}`}> Eval Loss {data.length > 0 ? ( - + formatMetric(Number(value))} + width={DEFAULT_Y_AXIS_WIDTH} + tickFormatter={(value) => formatAxisMetric(Number(value))} /> - Gradient Norm + Gradient Norm - + { const num = Number(value); if (!Number.isFinite(num)) { return "0"; } const shown = scale === "log" ? fromLog1p(num) : num; - return formatMetric(shown); + return formatAxisMetric(shown); }} /> - Learning Rate + Learning Rate - + { const num = Number(value); if (!Number.isFinite(num)) { diff --git a/studio/frontend/src/features/studio/sections/charts/training-loss-chart-card.tsx b/studio/frontend/src/features/studio/sections/charts/training-loss-chart-card.tsx index 1edf2bad55..7004108e1d 100644 --- a/studio/frontend/src/features/studio/sections/charts/training-loss-chart-card.tsx +++ b/studio/frontend/src/features/studio/sections/charts/training-loss-chart-card.tsx @@ -19,6 +19,10 @@ import { import type { ScaleMode } from "./types"; import { CHART_SYNC_ID, + CHART_CONTAINER_CLASS, + DEFAULT_CHART_MARGIN, + DEFAULT_Y_AXIS_WIDTH, + formatAxisMetric, formatMetric, formatStepTick, fromLog1p, @@ -65,16 +69,16 @@ export function TrainingLossChartCard({ return ( - Training Loss + Training Loss - + { const num = Number(value); if (!Number.isFinite(num)) { return "0"; } const shown = scale === "log" ? fromLog1p(num) : num; - return formatMetric(shown); + return formatAxisMetric(shown); }} /> = 1000) { + decimals = 0; + } else if (abs >= 100) { + decimals = 1; + } else if (abs >= 1) { + decimals = 3; + } else if (abs >= 0.01) { + decimals = 4; + } else { + decimals = 5; + } + + return value + .toFixed(decimals) + .replace(TRAILING_ZEROES_RE, "") + .replace(NEGATIVE_ZERO_RE, "0"); +} + export function formatStepTick(value: number): string { if (value >= 1_000_000) { return `${(value / 1_000_000).toFixed(1)}M`;