diff --git a/python/ray/dashboard/client/src/common/formatUtils.ts b/python/ray/dashboard/client/src/common/formatUtils.ts index 582655dce..9518637b5 100644 --- a/python/ray/dashboard/client/src/common/formatUtils.ts +++ b/python/ray/dashboard/client/src/common/formatUtils.ts @@ -30,3 +30,18 @@ export const formatDuration = (durationInSeconds: number) => { `${pad(durationSeconds)}s`, ].join(" "); }; + +export const formatValue = (rawFloat: number) => { + try { + const decimals = rawFloat.toString().split(".")[1].length || 0; + if (decimals <= 3) { + return rawFloat.toString(); + } // Few decimals + if (Math.abs(rawFloat.valueOf()) >= 1.0) { + return rawFloat.toPrecision(5); + } // Values >= 1 + return rawFloat.toExponential(); // Values in (-1; 1) + } catch (e) { + return rawFloat.toString(); + } +}; diff --git a/python/ray/dashboard/client/src/pages/dashboard/tune/TuneTable.tsx b/python/ray/dashboard/client/src/pages/dashboard/tune/TuneTable.tsx index 7a0479bba..ec2874342 100644 --- a/python/ray/dashboard/client/src/pages/dashboard/tune/TuneTable.tsx +++ b/python/ray/dashboard/client/src/pages/dashboard/tune/TuneTable.tsx @@ -21,6 +21,7 @@ import React from "react"; import { connect } from "react-redux"; import { TuneTrial } from "../../../api"; import DialogWithTitle from "../../../common/DialogWithTitle"; +import { formatValue } from "../../../common/formatUtils"; import NumberedLines from "../../../common/NumberedLines"; import { StoreState } from "../../../store"; import { dashboardActions } from "../state"; @@ -387,7 +388,9 @@ class TuneTable extends React.Component< {viewableParams.map((value, index) => ( - {trial["params"][value]} + {typeof trial["params"][value] === "number" + ? formatValue(Number(trial["params"][value])) + : trial["params"][value]} ))} @@ -396,7 +399,9 @@ class TuneTable extends React.Component< {trial["metrics"] && viewableMetrics.map((value, index) => ( - {trial["metrics"][value]} + {typeof trial["metrics"][value] === "number" + ? formatValue(Number(trial["metrics"][value])) + : trial["metrics"][value]} ))} diff --git a/python/ray/dashboard/dashboard.py b/python/ray/dashboard/dashboard.py index 6a3c10005..d2a84d5b3 100644 --- a/python/ray/dashboard/dashboard.py +++ b/python/ray/dashboard/dashboard.py @@ -875,7 +875,7 @@ class TuneCollector(threading.Thread): # round all floats for key in float_keys: - details[key] = round(details[key], 3) + details[key] = round(details[key], 12) # group together config attributes for key in config_keys: