diff --git a/src/guidellm/benchmark/aggregator.py b/src/guidellm/benchmark/aggregator.py index 9db93a12..e965c482 100644 --- a/src/guidellm/benchmark/aggregator.py +++ b/src/guidellm/benchmark/aggregator.py @@ -441,7 +441,7 @@ def __call__( def compile( self, state: AggregatorState, scheduler_state: SchedulerState - ) -> dict[Literal["scheduler_stats"], BenchmarkSchedulerStats]: + ) -> dict[Literal["run_stats"], BenchmarkSchedulerStats]: """ Compile scheduler timing metrics into benchmark statistics. @@ -473,7 +473,7 @@ def compile( key="worker_resolve_time", type_="avg", default=0.0 ), worker_resolve_end_delay_avg=state.get_metric( - key="worker_resolve_end_delay", type_="avg" + key="worker_resolve_end_delay", type_="avg", default=0.0 ), finalized_delay_avg=state.get_metric( key="finalized_delay", type_="avg", default=0.0 diff --git a/src/guidellm/benchmark/profile.py b/src/guidellm/benchmark/profile.py index 042179ba..d2f9d70c 100644 --- a/src/guidellm/benchmark/profile.py +++ b/src/guidellm/benchmark/profile.py @@ -680,6 +680,8 @@ def next_strategy( self.throughput_rate = ( prev_benchmark.metrics.requests_per_second.successful.mean ) + if self.synchronous_rate <= 0 and self.throughput_rate <= 0: + raise RuntimeError("Invalid rates in sweep; aborting. Were there any successful requests?") self.measured_rates = list( np.linspace( self.synchronous_rate, @@ -698,7 +700,6 @@ def next_strategy( if strat.type_ == self.strategy_type ] ) - if self.strategy_type == "constant": return AsyncConstantStrategy( rate=self.measured_rates[next_rate_index],