@@ -358,7 +358,23 @@ def get_requests(args, tokenizer):
358
358
raise ValueError (f"Unknown dataset name: { args .dataset_name } " )
359
359
# Remove None values
360
360
sample_kwargs = {k : v for k , v in sample_kwargs .items () if v is not None }
361
- return dataset_cls (** common_kwargs ).sample (** sample_kwargs )
361
+ requests = dataset_cls (** common_kwargs ).sample (** sample_kwargs )
362
+ requests = filter_requests_for_dp (requests , args .data_parallel_size )
363
+ return requests
364
+
365
+
366
+ def filter_requests_for_dp (requests , data_parallel_size ):
367
+ # Note(zhuohan): The way we get data_parallel_rank is hacky and only
368
+ # works for external launcher mode. Should be cleaned up and deprecated
369
+ # in the future with a better vLLM distributed process design.
370
+ if data_parallel_size == 1 :
371
+ return requests
372
+
373
+ global_rank = int (os .environ ["RANK" ])
374
+ world_size = int (os .environ ["WORLD_SIZE" ])
375
+ data_parallel_rank = global_rank // (world_size // data_parallel_size )
376
+ return [r for i , r in enumerate (requests )
377
+ if i % data_parallel_size == data_parallel_rank ]
362
378
363
379
364
380
def validate_args (args ):
@@ -453,12 +469,17 @@ def validate_args(args):
453
469
if args .backend == "mii" and args .tokenizer != args .model :
454
470
raise ValueError (
455
471
"Tokenizer must be the same as the model for MII backend." )
456
-
457
- # --data-parallel is not supported currently.
458
- # https://github.com/vllm-project/vllm/issues/16222
459
- if args .data_parallel_size > 1 :
472
+
473
+ if args .data_parallel_size > 1 and (
474
+ args .distributed_executor_backend != "external_launcher"
475
+ or args .async_engine ):
476
+ # --data-parallel is not supported fully.
477
+ # Old issue: https://github.com/vllm-project/vllm/issues/16222
478
+ # Currently we only support data parallel with external launcher
479
+ # mode (i.e., launch with toruchrun).
460
480
raise ValueError (
461
- "Data parallel is not supported in offline benchmark, "
481
+ "Data parallel is only supported with external launcher mode "
482
+ "with synchronous engine in offline benchmark, "
462
483
"please use benchmark serving instead"
463
484
)
464
485
0 commit comments