@@ -483,3 +483,32 @@ def args_sanity_check(args: dict) -> None:
483483 assert args .wandb_key is not None , "wandb logger needs \" wandb_key\" "
484484 assert args .wandb_prj_name is not None , "wandb logger needs \" wandb_prj_name\" "
485485 assert args .wandb_job_name is not None , "wandb logger needs \" wandb_job_name\" "
486+
487+
488+ def build_perf_env_plugin (args , pp_size : int | None = None , user_buffer_registration : Optional [bool ] = None ):
489+ """
490+ Create a PerfEnvPlugin with consistent defaults across scripts.
491+
492+ - enable_vboost only when gpu is h100
493+ - set nccl_pp_comm_chunksize when pipeline parallelism is used
494+ - set gpu_sm100_or_newer when gpu is in ['b200', 'gb200']
495+
496+ Args:
497+ args: Parsed CLI args that include `gpu`.
498+ pp_size: Pipeline parallel size to decide comm chunk size.
499+ user_buffer_registration: Optional flag to enable user buffer registration.
500+ """
501+ from nemo .lightning .run .plugins import PerfEnvPlugin
502+
503+ gpu_str = getattr (args , "gpu" , "" ).lower ()
504+ enable_vboost = args .enable_vboost
505+ gpu_sm100_or_newer = gpu_str in ["b200" , "gb200" ]
506+ nccl_pp_comm_chunksize = 2097152 if (pp_size is not None and pp_size > 1 ) else None
507+ user_buf = bool (user_buffer_registration ) if user_buffer_registration is not None else False
508+
509+ return PerfEnvPlugin (
510+ enable_vboost = enable_vboost ,
511+ nccl_pp_comm_chunksize = nccl_pp_comm_chunksize ,
512+ gpu_sm100_or_newer = gpu_sm100_or_newer ,
513+ user_buffer_registration = user_buf ,
514+ )
0 commit comments