188188 "stable-diffusion-xl" : 5000 ,
189189 "mixtral-8x7b" : 15000 ,
190190 },
191+ "dataset-size" : {
192+ "resnet" : 50000 ,
193+ "retinanet" : 24781 ,
194+ "bert-99" : 10833 ,
195+ "bert-99.9" : 10833 ,
196+ "dlrm-v2-99" : 204800 ,
197+ "dlrm-v2-99.9" : 204800 ,
198+ "3d-unet-99" : 43 ,
199+ "3d-unet-99.9" : 43 ,
200+ "gptj-99" : 13368 ,
201+ "gptj-99.9" : 13368 ,
202+ "llama2-70b-99" : 24576 ,
203+ "llama2-70b-99.9" : 24576 ,
204+ "stable-diffusion-xl" : 5000 ,
205+ "mixtral-8x7b" : 15000 ,
206+ },
191207 # TODO: Update this list.
192208 "model_mapping" : {
193209 # map model names to the official mlperf model class
466482 "rgat" : 788379 ,
467483 "pointpainting" : 1024 ,
468484 },
485+ "dataset-size" : {
486+ "resnet" : 50000 ,
487+ "retinanet" : 24781 ,
488+ "bert-99" : 10833 ,
489+ "bert-99.9" : 10833 ,
490+ "dlrm-v2-99" : 204800 ,
491+ "dlrm-v2-99.9" : 204800 ,
492+ "3d-unet-99" : 43 ,
493+ "3d-unet-99.9" : 43 ,
494+ "gptj-99" : 13368 ,
495+ "gptj-99.9" : 13368 ,
496+ "llama2-70b-99" : 24576 ,
497+ "llama2-70b-99.9" : 24576 ,
498+ "llama2-70b-interactive-99" : 24576 ,
499+ "llama2-70b-interactive-99.9" : 24576 ,
500+ "stable-diffusion-xl" : 5000 ,
501+ "mixtral-8x7b" : 15000 ,
502+ "llama3.1-405b" : 8313 ,
503+ "rgat" : 788379 ,
504+ "pointpainting" : 39987 ,
505+ },
469506 # model_mapping.json is expected in the root directory of the
470507 # submission folder for open submissions and so the below dictionary is
471508 # not really needed
@@ -888,6 +925,7 @@ def __init__(
888925 self .accuracy_delta_perc = self .base ["accuracy-delta-perc" ]
889926 self .accuracy_upper_limit = self .base .get ("accuracy-upper-limit" , {})
890927 self .performance_sample_count = self .base ["performance-sample-count" ]
928+ self .dataset_size = self .base ["dataset-size" ]
891929 self .latency_constraint = self .base .get ("latency-constraint" , {})
892930 self .min_queries = self .base .get ("min-queries" , {})
893931 self .required = None
@@ -981,6 +1019,12 @@ def get_min_query_count(self, model, scenario):
9811019 if model not in self .min_queries :
9821020 raise ValueError ("model not known: " + model )
9831021 return self .min_queries [model ].get (scenario )
1022+
1023+ def get_dataset_size (self , model ):
1024+ model = self .get_mlperf_model (model )
1025+ if model not in self .dataset_size :
1026+ raise ValueError ("model not known: " + model )
1027+ return self .dataset_size [model ]
9841028
9851029 def get_delta_perc (self , model , metric ):
9861030 if model in self .accuracy_delta_perc :
@@ -1000,10 +1044,9 @@ def has_new_logging_format(self):
10001044 def uses_early_stopping (self , scenario ):
10011045 return scenario in ["Server" , "SingleStream" , "MultiStream" ]
10021046
1003- def requires_equal_issue (self , model , division ):
1047+ def requires_equal_issue (self , model ):
10041048 return (
1005- division in ["closed" , "network" ]
1006- and model
1049+ model
10071050 in [
10081051 "3d-unet-99" ,
10091052 "3d-unet-99.9" ,
@@ -1306,6 +1349,15 @@ def check_accuracy_dir(config, model, path, verbose):
13061349 "%s has loadgen errors, number of errors: %s" , path , mlperf_log .num_errors ()
13071350 )
13081351
1352+ # check the whole dataset was used in the accuracy run
1353+ mlperf_log = MLPerfLog (fname )
1354+ qsl_total_count = mlperf_log ["qsl_reported_total_count" ]
1355+ expected_qsl_total_count = config .get_dataset_size (model )
1356+ if qsl_total_count != expected_qsl_total_count :
1357+ log .error (
1358+ "%s accurcy run does not cover all dataset, accuracy samples: %s, dataset size: %s" , path , qsl_total_count , expected_qsl_total_count
1359+ )
1360+
13091361 return is_valid , result_acc
13101362
13111363
@@ -1423,7 +1475,7 @@ def check_performance_dir(
14231475 equal_issue_used_check = (
14241476 mlperf_log ["effective_sample_concatenate_permutation" ] == True
14251477 )
1426- if not config .requires_equal_issue (model , division ):
1478+ if not config .requires_equal_issue (model ):
14271479 equal_issue_used_check = True
14281480 if not equal_issue_used_check :
14291481 log .error (
0 commit comments