aboutsummaryrefslogtreecommitdiffstats
path: root/resources/libraries/python/MLRsearch/multiple_loss_ratio_search.py
diff options
context:
space:
mode:
Diffstat (limited to 'resources/libraries/python/MLRsearch/multiple_loss_ratio_search.py')
-rw-r--r--resources/libraries/python/MLRsearch/multiple_loss_ratio_search.py19
1 files changed, 15 insertions, 4 deletions
diff --git a/resources/libraries/python/MLRsearch/multiple_loss_ratio_search.py b/resources/libraries/python/MLRsearch/multiple_loss_ratio_search.py
index b48e2e7547..9f7be4fcd1 100644
--- a/resources/libraries/python/MLRsearch/multiple_loss_ratio_search.py
+++ b/resources/libraries/python/MLRsearch/multiple_loss_ratio_search.py
@@ -38,7 +38,10 @@ from .trimmed_stat import TrimmedStat
@dataclass
class MultipleLossRatioSearch:
- """Optimized binary search algorithm for finding conditional throughputs.
+ """Implementation of the controller part of MLRsearch algorithm.
+
+ The manager part is creating and calling this,
+ the measurer part is injected.
Traditional binary search algorithm needs initial interval
(lower and upper bound), and returns final narrow bounds
@@ -88,6 +91,14 @@ class MultipleLossRatioSearch:
There are also subtle optimizations related to candidate selection
and uneven splitting of intervals, too numerous to list here.
+
+ The return values describe performance at the relevant lower bound
+ as "conditional throughput", which is based on loss ratio of one of trials
+ selected as a quantile based on exceed ratio parameter.
+ Usually this value may be quite pessimistic, as MLRsearch stops
+ measuring a load as soon as it becomes a lower bound,
+ so conditional throughput is usually based on forwarding rate
+ of the worst on the good long trials.
"""
config: Config
@@ -123,11 +134,11 @@ class MultipleLossRatioSearch:
:param measurer: Measurement provider to use by this search object.
:param debug: Callable to optionally use instead of logging.debug().
- :returns: Structure containing conditional throughputs and other stats,
- one for each search goal.
:type measurer: AbstractMeasurer
:type debug: Optional[Callable[[str], None]]
- :returns: Mapping from goal to lower bound (none if min load is hit).
+ :returns: Structure containing conditional throughputs and other stats,
+ one for each search goal. If a value is None it means there is
+ no lower bound (min load turned out to be an upper bound).
:rtype: Pep3140Dict[SearchGoal, Optional[TrimmedStat]]
:raises RuntimeError: If total duration is larger than timeout,
or if min load becomes an upper bound for a search goal