{metricLabel(metricKey)}
{group.model_id} | {group.gpu_type} + {cohortTitle(group)} + {cohortDetail(group)}
diff --git a/.buildkite/performance-benchmarks/tests/wan-t2v-1.3b.json b/.buildkite/performance-benchmarks/tests/wan-t2v-1.3b.json index 8a568ef6b..4af21b6ab 100644 --- a/.buildkite/performance-benchmarks/tests/wan-t2v-1.3b.json +++ b/.buildkite/performance-benchmarks/tests/wan-t2v-1.3b.json @@ -1,9 +1,9 @@ { "benchmark_id": "wan-t2v-1.3b-2gpu", "config_schema_version": 2, - "workload_id": "wan-t2v-1.3b", - "variant_id": "canonical", - "benchmark_version": 1, + "workload_id": "wan-t2v", + "variant_id": "1.3b-sp2", + "benchmark_version": 2, "description": "Wan2.1 T2V 1.3B inference performance", "model": { "model_path": "Wan-AI/Wan2.1-T2V-1.3B-Diffusers", diff --git a/apps/performance_dashboard/frontend/src/App.tsx b/apps/performance_dashboard/frontend/src/App.tsx index 5c85fc643..47173d3ce 100644 --- a/apps/performance_dashboard/frontend/src/App.tsx +++ b/apps/performance_dashboard/frontend/src/App.tsx @@ -1,6 +1,7 @@ import { useEffect, useMemo, useState } from "react"; -import { fetchSummary, fetchTrends, refreshData, RunSource, SummaryResponse, TrendGroup, TrendPoint } from "./api"; +import { fetchSummary, fetchTrends, refreshData } from "./api"; +import type { CohortValue, RunSource, SummaryResponse, TrendGroup, TrendPoint } from "./api"; const METRIC_KEYS = ["latency", "throughput", "memory", "text_encoder_time_s", "dit_time_s", "vae_decode_time_s"]; const RUN_SOURCES: Array<{ value: "" | RunSource; label: string }> = [ @@ -109,6 +110,61 @@ function metricLabel(metricKey: string) { return METRIC_DEFINITIONS[metricKey]?.label ?? metricKey; } +type CohortFields = { + model_id: string; + gpu_type: string; + workload_id: CohortValue; + variant_id: CohortValue; + benchmark_version: CohortValue; + recipe_fingerprint: CohortValue; + hardware_profile_id: CohortValue; + software_profile_id: CohortValue; +}; + +function cohortValue(value: CohortValue) { + if (value === null || value === undefined || value === "") { + return "legacy"; + } + return String(value); +} + +function shortCohortValue(value: CohortValue) { + const text = cohortValue(value); + if (text === "legacy" || text.length <= 14) { + return text; + } + return text.slice(0, 12); +} + +function cohortKey(cohort: CohortFields) { + return [ + cohort.model_id, + cohort.gpu_type, + cohortValue(cohort.workload_id), + cohortValue(cohort.variant_id), + cohortValue(cohort.benchmark_version), + cohortValue(cohort.recipe_fingerprint), + cohortValue(cohort.hardware_profile_id), + cohortValue(cohort.software_profile_id) + ].join("|"); +} + +function cohortTitle(cohort: CohortFields) { + const workload = cohortValue(cohort.workload_id); + const variant = cohortValue(cohort.variant_id); + const version = cohortValue(cohort.benchmark_version); + const versionLabel = version === "legacy" ? version : `v${version}`; + return `${workload} / ${variant} / ${versionLabel}`; +} + +function cohortDetail(cohort: CohortFields) { + return [ + `recipe ${shortCohortValue(cohort.recipe_fingerprint)}`, + shortCohortValue(cohort.hardware_profile_id), + shortCohortValue(cohort.software_profile_id) + ].join(" | "); +} + function formatMetricValue(metricKey: string, value: number | null | undefined, tooltip = false) { const definition = METRIC_DEFINITIONS[metricKey]; if (!definition) { @@ -171,7 +227,9 @@ function TrendChart({ group, metricKey }: { group: TrendGroup; metricKey: string top: `${(activePoint.y / height) * 100}%` } : undefined; - const ariaLabel = `${metricLabel(metricKey)} trend for ${group.model_id} on ${group.gpu_type}`; + const ariaLabel = `${metricLabel(metricKey)} trend for ${group.model_id} on ${group.gpu_type}, ${cohortTitle( + group + )}`; return (
{group.model_id} | {group.gpu_type} + {cohortTitle(group)} + {cohortDetail(group)}