@@ -418,11 +418,11 @@ void ParamAndGradBucketGroup::SetNextParamGatherBucketGroup(std::shared_ptr<Para
418418}
419419
420420ParamAndGradBuffer::ParamAndGradBuffer (const std::vector<std::shared_ptr<Tensor>> ¶ms, DataType ¶m_dtype,
421- DataType &grad_dtype, const ProcessGroup *process_group ,
421+ DataType &grad_dtype, const ProcessGroup *ddp_pg ,
422422 DistributedDataParallelConfig ddp_config)
423- : params_(std::move(params)), process_group_(process_group ), ddp_config_(ddp_config) {
424- CHECK_NOTNULL (process_group_ );
425- process_group_size_ = static_cast <size_t >(process_group_ ->GetGroupSize ());
423+ : params_(std::move(params)), ddp_pg_(ddp_pg ), ddp_config_(ddp_config) {
424+ CHECK_NOTNULL (ddp_pg_ );
425+ ddp_world_size_ = static_cast <size_t >(ddp_pg_ ->GetGroupSize ());
426426
427427 grads_.clear ();
428428 grads_.resize (params_.size ());
@@ -448,7 +448,7 @@ void ParamAndGradBuffer::BuildBuckets(DataType param_dtype, DataType grad_dtype)
448448 if (ddp_config_.zero_stage >= 1 ) {
449449 // According to Megatron-LM, ensure that all buckets start at a memory address that is 256B
450450 // aligned(128 values since params and grads use >= 16-bit precision)
451- size_t lcm_val = std::lcm (process_group_size_ , kBucketEndAlignElements );
451+ size_t lcm_val = std::lcm (ddp_world_size_ , kBucketEndAlignElements );
452452 if (ddp_config_.pad_buckets_for_high_nccl_busbw ) {
453453 // According to Megatron-LM, when the bucket size is divisible by a large power of 2 (2^16),
454454 // NCCL collectives can have high bus bandwidth at large DP counts
@@ -519,7 +519,7 @@ void ParamAndGradBuffer::BuildBuckets(DataType param_dtype, DataType grad_dtype)
519519 CHECK (numel_unpadded_ <= numel_);
520520 if (ddp_config_.zero_stage >= 1 ) {
521521 // numel must be multiple of ddp size (so that reduce-scatter could easily shard the buffer among ranks)
522- CHECK_EQ (numel_ % process_group_size_ , 0 );
522+ CHECK_EQ (numel_ % ddp_world_size_ , 0 );
523523 } else {
524524 CHECK_EQ (numel_, numel_unpadded_);
525525 }
@@ -550,8 +550,8 @@ void ParamAndGradBuffer::BuildBuckets(DataType param_dtype, DataType grad_dtype)
550550 = [&](const std::vector<std::shared_ptr<Tensor>> &bucket_params, size_t start_index, size_t end_index,
551551 size_t num_elements_unpadded, size_t bucket_id) -> std::shared_ptr<ParamAndGradBucket> {
552552 if (ddp_config_.zero_stage >= 1 ) {
553- CHECK_EQ (start_index % process_group_size_ , 0 );
554- CHECK_EQ (end_index % process_group_size_ , 0 );
553+ CHECK_EQ (start_index % ddp_world_size_ , 0 );
554+ CHECK_EQ (end_index % ddp_world_size_ , 0 );
555555 CHECK_EQ (bucket_indices_.at (bucket_id).first , start_index);
556556 CHECK_EQ (bucket_indices_.at (bucket_id).second , end_index);
557557 }
@@ -691,20 +691,19 @@ PartitionBuckets(const std::vector<std::shared_ptr<ParamAndGradBuffer>> &buffers
691691 if (force_single_bucket_group) {
692692 std::vector<std::shared_ptr<ParamAndGradBucket>> all_buckets;
693693 auto ddp_config = buffers.front ()->ddp_config ();
694- auto process_group = buffers.front ()->process_group ();
695- auto process_group_size = buffers.front ()->process_group_size ();
694+ auto ddp_pg = buffers.front ()->ddp_pg ();
695+ auto ddp_world_size = buffers.front ()->ddp_world_size ();
696696
697697 for (const auto &buffer : buffers) {
698- CHECK (buffer->process_group () == process_group)
699- << " PartitionBuckets: buffers have different process groups." ;
700- CHECK (buffer->process_group_size () == process_group_size)
701- << " PartitionBuckets: buffers have different process group sizes." ;
698+ CHECK (buffer->ddp_pg () == ddp_pg) << " PartitionBuckets: buffers have different ddp_pg." ;
699+ CHECK (buffer->ddp_world_size () == ddp_world_size)
700+ << " PartitionBuckets: buffers have different ddp_world_size." ;
702701
703702 all_buckets.insert (all_buckets.end (), buffer->buckets ().begin (), buffer->buckets ().end ());
704703 }
705704
706705 bucket_groups.push_back (
707- std::make_shared<ParamAndGradBucketGroup>(all_buckets, process_group, process_group_size , ddp_config));
706+ std::make_shared<ParamAndGradBucketGroup>(all_buckets, ddp_pg, ddp_world_size , ddp_config));
708707 return bucket_groups;
709708 }
710709
@@ -715,7 +714,7 @@ PartitionBuckets(const std::vector<std::shared_ptr<ParamAndGradBuffer>> &buffers
715714 std::vector<std::shared_ptr<ParamAndGradBucket>> single_bucket_list;
716715 single_bucket_list.push_back (bucket);
717716 bucket_groups.push_back (std::make_shared<ParamAndGradBucketGroup>(
718- single_bucket_list, buffer->process_group (), buffer->process_group_size (), buffer->ddp_config ()));
717+ single_bucket_list, buffer->ddp_pg (), buffer->ddp_world_size (), buffer->ddp_config ()));
719718 }
720719 }
721720
0 commit comments