Skip to content

Commit 3361d2f

Browse files
WIP CR Fixes
1 parent 2889dce commit 3361d2f

File tree

4 files changed

+188
-191
lines changed

4 files changed

+188
-191
lines changed

src/guidellm/benchmark/benchmark.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,8 @@ class BenchmarkRunStats(StandardBaseModel):
219219
error_rate: float = Field(
220220
description=(
221221
"The number of errored requests divided by the number "
222-
"of errored requests. This can be higher than max_error_rate "
222+
"of successful and errored requests. "
223+
"This can be higher than max_error_rate "
223224
"(if applicable) cause it does not take into "
224225
"account incomplete requests."
225226
)

src/guidellm/request/loader.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -127,9 +127,9 @@ def __len__(self) -> int:
127127

128128
if self.iter_type != "infinite":
129129
raise ValueError(f"Invalid iter_type {self.iter_type}")
130-
raise GetInfiniteDatasetLengthError(f"Dataset {self.data} is "
131-
f"infinite and thus "
132-
f"unable to determine length")
130+
raise GetInfiniteDatasetLengthError(
131+
f"Dataset {self.data} is infinite and thus unable to determine length"
132+
)
133133

134134
@property
135135
def description(self) -> GenerativeRequestLoaderDescription:

src/guidellm/scheduler/scheduler.py

Lines changed: 47 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -110,10 +110,9 @@ async def run(
110110
Each SchedulerResult object contains information about the request,
111111
the response, and the run information.
112112
"""
113-
self._validate_scheduler_params(scheduling_strategy,
114-
max_duration,
115-
max_error_rate,
116-
max_number)
113+
self._validate_scheduler_params(
114+
scheduling_strategy, max_duration, max_error_rate, max_number
115+
)
117116

118117
with (
119118
multiprocessing.Manager() as manager,
@@ -122,13 +121,16 @@ async def run(
122121
) as executor,
123122
):
124123
requests_iter: Optional[Iterator[Any]] = None
125-
futures, requests_queue, responses_queue, shutdown_event = \
126-
await self._start_processes(
127-
manager, executor, scheduling_strategy, max_error_rate is not None)
124+
(
125+
futures,
126+
requests_queue,
127+
responses_queue,
128+
shutdown_event,
129+
) = await self._start_processes(
130+
manager, executor, scheduling_strategy, max_error_rate is not None
131+
)
128132
if shutdown_event and shutdown_event.is_set():
129-
raise RuntimeError(
130-
"shutdown_event is set before starting scheduling"
131-
)
133+
raise RuntimeError("shutdown_event is set before starting scheduling")
132134
run_info, requests_iter, times_iter = self._run_setup(
133135
futures, scheduling_strategy, max_number, max_duration, max_error_rate
134136
)
@@ -166,17 +168,23 @@ async def run(
166168
run_info,
167169
)
168170
if iter_result is not None:
169-
if iter_result.request_info.errored \
170-
and not iter_result.request_info.canceled \
171-
and self._is_max_error_rate_reached(iter_result.run_info):
171+
if (
172+
iter_result.request_info.errored
173+
and not iter_result.request_info.canceled
174+
and self._is_max_error_rate_reached(iter_result.run_info)
175+
):
172176
if shutdown_event is None:
173-
raise RuntimeError("We've reached max_error_rate "
174-
"but shutdown_event is corrupt")
177+
raise RuntimeError(
178+
"We've reached max_error_rate "
179+
"but shutdown_event is corrupt"
180+
)
175181
shutdown_event.set()
176182
max_error_rate_reached = True
177-
logger.info(f"Max error rate of "
178-
f"({iter_result.run_info.max_error_rate}) "
179-
f"reached, sending shutdown signal")
183+
logger.info(
184+
f"Max error rate of "
185+
f"({iter_result.run_info.max_error_rate}) "
186+
f"reached, sending shutdown signal"
187+
)
180188
yield iter_result
181189

182190
# yield control to the event loop
@@ -192,14 +200,14 @@ async def run(
192200
await self._stop_processes(futures, requests_queue)
193201

194202
def _validate_scheduler_params(
195-
self,
196-
scheduling_strategy: SchedulingStrategy,
197-
max_duration: Optional[float],
198-
max_error_rate: Optional[float],
199-
max_number: Optional[int]
203+
self,
204+
scheduling_strategy: SchedulingStrategy,
205+
max_duration: Optional[float],
206+
max_error_rate: Optional[float],
207+
max_number: Optional[int],
200208
) -> None:
201209
if scheduling_strategy is None or not isinstance(
202-
scheduling_strategy, SchedulingStrategy
210+
scheduling_strategy, SchedulingStrategy
203211
):
204212
raise ValueError(f"Invalid scheduling strategy: {scheduling_strategy}")
205213
if max_number is not None and max_number < 1:
@@ -213,21 +221,23 @@ def _is_max_error_rate_reached(self, run_info: SchedulerRunInfo) -> bool:
213221
if run_info.max_error_rate is None:
214222
return False
215223
current_error_rate = run_info.errored_requests / run_info.end_number
216-
logger.info(f"Current error rate {current_error_rate} "
217-
f"i.e total_finished [success / error] / max total possible")
224+
logger.info(
225+
f"Current error rate {current_error_rate} "
226+
f"i.e total_finished [success / error] / max total possible"
227+
)
218228
return run_info.max_error_rate < current_error_rate
219229

220230
async def _start_processes(
221231
self,
222232
manager,
223233
executor: ProcessPoolExecutor,
224234
scheduling_strategy: SchedulingStrategy,
225-
create_shutdown_event: bool = False
235+
create_shutdown_event: bool = False,
226236
) -> tuple[
227237
list[asyncio.Future],
228238
multiprocessing.Queue,
229239
multiprocessing.Queue,
230-
Optional[MultiprocessingEvent]
240+
Optional[MultiprocessingEvent],
231241
]:
232242
await self.worker.prepare_multiprocessing()
233243
shutdown_event = manager.Event() if create_shutdown_event else None
@@ -309,8 +319,10 @@ def _run_setup(
309319
)
310320

311321
if end_number == math.inf and max_error_rate is not None:
312-
logger.warning("max_error_rate will be ignored "
313-
"because end_number can not be determined.")
322+
logger.warning(
323+
"max_error_rate will be ignored "
324+
"because end_number can not be determined."
325+
)
314326

315327
if end_number == math.inf and end_time is None:
316328
logger.warning(
@@ -324,16 +336,16 @@ def _run_setup(
324336
end_number=end_number,
325337
processes=len(processes),
326338
strategy=scheduling_strategy,
327-
max_error_rate=max_error_rate
339+
max_error_rate=max_error_rate,
328340
)
329341

330342
return info, requests_iter, times_iter
331343

332344
def _determine_total_requests_count(
333-
self,
334-
scheduling_strategy: SchedulingStrategy,
335-
max_duration: Optional[float],
336-
max_number: Optional[int],
345+
self,
346+
scheduling_strategy: SchedulingStrategy,
347+
max_duration: Optional[float],
348+
max_number: Optional[int],
337349
) -> Union[int, float]:
338350
end_number = max_number or math.inf
339351
try:

0 commit comments

Comments
 (0)