From 2b79628b6202456514e3d51fbbdfa1162f39811d Mon Sep 17 00:00:00 2001 From: Caleb Kang Date: Thu, 14 Jan 2021 18:03:34 -0700 Subject: [PATCH] fix: remove learning curve trials where metric values exceed 100000 --- .../ExperimentVisualization/LearningCurve.tsx | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/webui/react/src/pages/ExperimentDetails/ExperimentVisualization/LearningCurve.tsx b/webui/react/src/pages/ExperimentDetails/ExperimentVisualization/LearningCurve.tsx index 96adf27f7bcd..46a7902963fb 100644 --- a/webui/react/src/pages/ExperimentDetails/ExperimentVisualization/LearningCurve.tsx +++ b/webui/react/src/pages/ExperimentDetails/ExperimentVisualization/LearningCurve.tsx @@ -43,6 +43,7 @@ interface TrialHParams { const DEFAULT_MAX_TRIALS = 100; const MAX_DATAPOINTS = 5000; +const MAX_ALLOWED_METRIC_VALUE = 100000; const TOP_TRIALS_OPTIONS = [ 1, 10, 20, 50, 100 ]; const LearningCurve: React.FC = ({ @@ -156,6 +157,7 @@ const LearningCurve: React.FC = ({ const trialHpMap: Record = {}; const batchesMap: Record = {}; const metricsMap: Record> = {}; + const filterTrialMap: Record = {}; consumeStream( detApi.StreamingInternal.determinedTrialsSample( @@ -180,8 +182,6 @@ const LearningCurve: React.FC = ({ (event.promotedTrials || []).forEach(trialId => trialIdsMap[trialId] = trialId); (event.demotedTrials || []).forEach(trialId => delete trialIdsMap[trialId]); - const newTrialIds = Object.values(trialIdsMap); - setTrialIds(newTrialIds); (event.trials || []).forEach(trial => { const id = trial.trialId; @@ -197,10 +197,12 @@ const LearningCurve: React.FC = ({ trialDataMap[id] = trialDataMap[id] || []; metricsMap[id] = metricsMap[id] || {}; + filterTrialMap[id] = filterTrialMap[id] || false; trial.data.forEach(datapoint => { batchesMap[datapoint.batches] = datapoint.batches; metricsMap[id][datapoint.batches] = datapoint.value; + if (datapoint.value > MAX_ALLOWED_METRIC_VALUE) filterTrialMap[id] = true; }); }); @@ -213,6 +215,9 @@ const LearningCurve: React.FC = ({ const newBatches = Object.values(batchesMap); setBatches(newBatches); + const newTrialIds = Object.values(trialIdsMap).filter(trialId => !filterTrialMap[trialId]); + setTrialIds(newTrialIds); + const newChartData = newTrialIds.map(trialId => newBatches.map(batch => { const value = metricsMap[trialId][batch]; return value != null ? value : null;