Revert "[training, perf] fix: THD-aware FLOPS via cu_seqlens (Σᵢ sᵢ²) (re-land of #3839)" - #4464
Conversation
… (re-lan…" This reverts commit 6e8c6bb.
|
Auto-sync is disabled for draft pull requests in this repository. Workflows must be run manually. Contributors can view more details about this message here. |
|
FLOP calc now seems to be broken for MoE models too. |
| num_vision_patches = local_vision_patches * config.data_parallel_size if local_vision_patches > 0 else 0 | ||
|
|
||
| vp_size = getattr(config.model, "virtual_pipeline_model_parallel_size", None) | ||
| if isinstance(vp_size, int) and vp_size > 1: | ||
| local_seqlen_sum = local_seqlen_sum // vp_size | ||
| local_seqlen_sq_sum = local_seqlen_sq_sum // vp_size | ||
| num_vision_patches = num_vision_patches // vp_size |
There was a problem hiding this comment.
Bug: order-of-operations mismatch with train.py.
Here num_vision_patches is scaled by dp_size before the VPP correction (line 1108 divides the already-scaled value). In train.py the order is reversed — VPP correction first, then * dp_size.
With integer division these produce different results. E.g. local=3, vp=2, dp=4:
train.py:(3 // 2) * 4 = 4- here:
(3 * 4) // 2 = 6
Should match train.py's order: VPP-correct the local value first, scale by dp_size after.
| num_vision_patches = local_vision_patches * config.data_parallel_size if local_vision_patches > 0 else 0 | |
| vp_size = getattr(config.model, "virtual_pipeline_model_parallel_size", None) | |
| if isinstance(vp_size, int) and vp_size > 1: | |
| local_seqlen_sum = local_seqlen_sum // vp_size | |
| local_seqlen_sq_sum = local_seqlen_sq_sum // vp_size | |
| num_vision_patches = num_vision_patches // vp_size | |
| num_vision_patches = local_vision_patches | |
| vp_size = getattr(config.model, "virtual_pipeline_model_parallel_size", None) | |
| if isinstance(vp_size, int) and vp_size > 1: | |
| local_seqlen_sum = local_seqlen_sum // vp_size | |
| local_seqlen_sq_sum = local_seqlen_sq_sum // vp_size | |
| num_vision_patches = num_vision_patches // vp_size |
| if local_seqlen_sum > 0: | ||
| seqlen_sum = local_seqlen_sum * config.data_parallel_size | ||
| seqlen_squared_sum = local_seqlen_sq_sum * config.data_parallel_size |
There was a problem hiding this comment.
And the dp_size scaling for num_vision_patches should happen after the VPP block (to match train.py):
| if local_seqlen_sum > 0: | |
| seqlen_sum = local_seqlen_sum * config.data_parallel_size | |
| seqlen_squared_sum = local_seqlen_sq_sum * config.data_parallel_size | |
| if local_seqlen_sum > 0: | |
| seqlen_sum = local_seqlen_sum * config.data_parallel_size | |
| seqlen_squared_sum = local_seqlen_sq_sum * config.data_parallel_size | |
| num_vision_patches = num_vision_patches * config.data_parallel_size if num_vision_patches > 0 else 0 |
|
test |
Review - Revert of #4366 (THD-aware FLOPS) |
Review - Revert of #4366 (THD-aware FLOPS)Bug
Observations (non-blocking)
Suggested test casesNo perf tests impacted. |
Reverts #4366