@@ -301,7 +301,7 @@ class BenchmarkAggregator(
301301 "The completed requests for this benchmark run broken down by status"
302302 "and excluding warmup and cooldown requests."
303303 ),
304- default_factory = lambda : StatusBreakdown (
304+ default_factory = lambda : StatusBreakdown ( # type: ignore[arg-type]
305305 successful = [],
306306 errored = [],
307307 incomplete = [],
@@ -360,43 +360,44 @@ def add_result(
360360 f"Got { result .request_info } "
361361 )
362362
363- self .requests_stats .queued_time += (
363+ self .requests_stats .queued_time . update (
364364 result .request_info .dequeued_time - result .request_info .queued_time
365365 )
366- self .requests_stats .scheduled_time_delay += (
366+ self .requests_stats .scheduled_time_delay . update (
367367 result .request_info .scheduled_time - result .request_info .dequeued_time
368368 )
369369 sleep_time = max (
370370 0.0 ,
371371 result .request_info .targeted_start_time
372372 - result .request_info .scheduled_time ,
373373 )
374- self .requests_stats .scheduled_time_sleep += sleep_time
374+ self .requests_stats .scheduled_time_sleep . update ( sleep_time )
375375 time_to_worker_start = (
376376 result .request_info .worker_start - result .request_info .scheduled_time
377377 )
378- self .requests_stats .worker_start_delay += time_to_worker_start - sleep_time
379- self .requests_stats .worker_time += (
378+ self .requests_stats .worker_start_delay . update ( time_to_worker_start - sleep_time )
379+ self .requests_stats .worker_time . update (
380380 result .request_info .worker_end - result .request_info .worker_start
381381 )
382- self .requests_stats .worker_start_time_targeted_delay += (
382+ self .requests_stats .worker_start_time_targeted_delay . update (
383383 result .request_info .worker_start - result .request_info .targeted_start_time
384384 )
385- self .requests_stats .request_start_time_delay += (
385+ self .requests_stats .request_start_time_delay . update (
386386 result .request_info .worker_start - result .request_info .targeted_start_time
387387 )
388- self .requests_stats .request_start_time_targeted_delay += (
388+ self .requests_stats .request_start_time_targeted_delay . update (
389389 result .request_info .worker_start - result .request_info .targeted_start_time
390390 )
391- self .requests_stats .request_time_delay += (
392- result .request_info .worker_end - result .request_info .worker_start
393- ) - (result .request_info .worker_end - result .request_info .worker_start )
394- self .requests_stats .request_time += (
391+ self .requests_stats .request_time_delay .update (
392+ (result .request_info .worker_end - result .request_info .worker_start )
393+ - (result .request_info .worker_end - result .request_info .worker_start )
394+ )
395+ self .requests_stats .request_time .update (
395396 result .request_info .worker_end - result .request_info .worker_start
396397 )
397398
398399 # Add result to the list of results provided we are not in warmup or cooldown
399- total_completed = self .requests_stats .totals .total
400+ total_completed = self .requests_stats .totals .total . total
400401 global_start_time = self .requests_stats .totals .total .start_time
401402
402403 in_warmup_number = (
@@ -521,6 +522,20 @@ class GenerativeBenchmarkAggregator(
521522 "any specific configuration for loading or processing."
522523 ),
523524 )
525+ worker_description : GenerativeRequestsWorkerDescription = Field (
526+ description = (
527+ "The description and specifics for the worker used to resolve requests "
528+ "for this benchmark."
529+ ),
530+ discriminator = "type_" ,
531+ )
532+ request_loader_description : GenerativeRequestLoaderDescription = Field (
533+ description = (
534+ "The description and specifics for the request loader used to create "
535+ "requests for this benchmark."
536+ ),
537+ discriminator = "type_" ,
538+ )
524539 requests_stats : GenerativeRequestsRunningStats = Field (
525540 description = (
526541 "The running statistics for the requests for this benchmark run. "
@@ -548,22 +563,22 @@ def add_result(
548563 if result .response is None :
549564 raise ValueError ("Response is None, cannot add result." )
550565
551- self .requests_stats .request_start_time_delay += (
566+ self .requests_stats .request_start_time_delay . update (
552567 result .response .start_time - result .request_info .worker_start
553568 )
554- self .requests_stats .request_start_time_targeted_delay += (
569+ self .requests_stats .request_start_time_targeted_delay . update (
555570 result .response .start_time - result .request_info .targeted_start_time
556571 )
557- self .requests_stats .request_time_delay += (
572+ self .requests_stats .request_time_delay . update (
558573 (result .response .start_time - result .request_info .worker_start )
559574 + result .request_info .worker_end
560575 - result .response .end_time
561576 )
562- self .requests_stats .request_time += (
577+ self .requests_stats .request_time . update (
563578 result .response .end_time - result .response .start_time
564579 )
565580 if result .response .first_iter_time :
566- self .requests_stats .time_to_first_token += (
581+ self .requests_stats .time_to_first_token . update (
567582 result .response .first_iter_time - result .response .start_time
568583 )
569584 if result .response .last_iter_time and result .response .first_iter_time :
@@ -598,10 +613,10 @@ def compile(self) -> GenerativeBenchmark:
598613 start_time = self .requests_stats .totals .total .start_time ,
599614 end_time = time .time (),
600615 requests_made = StatusBreakdown (
601- successful = self .requests_stats .totals .successful .total ,
602- errored = self .requests_stats .totals .errored .total ,
603- incomplete = self .requests_stats .totals .incomplete .total ,
604- total = self .requests_stats .totals .total .total ,
616+ successful = int ( self .requests_stats .totals .successful .total ) ,
617+ errored = int ( self .requests_stats .totals .errored .total ) ,
618+ incomplete = int ( self .requests_stats .totals .incomplete .total ) ,
619+ total = int ( self .requests_stats .totals .total .total ) ,
605620 ),
606621 queued_time_avg = self .requests_stats .queued_time .mean ,
607622 scheduled_time_delay_avg = self .requests_stats .scheduled_time_delay .mean ,
@@ -653,6 +668,7 @@ def _compile_results(
653668 last_token_time = result .response .last_iter_time or - 1.0 ,
654669 )
655670 for result in self .results .successful
671+ if result .request and result .response
656672 ]
657673 incomplete : List [GenerativeTextErrorStats ] = [
658674 GenerativeTextErrorStats (
@@ -682,6 +698,7 @@ def _compile_results(
682698 last_token_time = result .response .last_iter_time ,
683699 )
684700 for result in self .results .incomplete
701+ if result .request and result .response
685702 ]
686703 error : List [GenerativeTextErrorStats ] = [
687704 GenerativeTextErrorStats (
@@ -711,6 +728,7 @@ def _compile_results(
711728 last_token_time = result .response .last_iter_time ,
712729 )
713730 for result in self .results .errored
731+ if result .request and result .response
714732 ]
715733
716734 return successful , incomplete , error
0 commit comments