Fix multivalidation - #3388
Conversation
Signed-off-by: rprenger <rprenger@nvidia.com>
… into fix_multivalidation Signed-off-by: rprenger <rprenger@nvidia.com>
|
/ok to test 2c4221b |
| if split == Split.valid and args.full_validation: | ||
| batch_sampler = MegatronPretrainingSampler( | ||
| # Use specialized sampler for full validation that handles small datasets | ||
| batch_sampler = MegatronFullValidationSampler( |
There was a problem hiding this comment.
Should we only use MegatronFullValidationSampler when required? (When using small datasets & full_validation)
Otherwise keep MegatronPretrainingSampler
Note we can access len(dataset) & DP size
There was a problem hiding this comment.
No, we need it whenever we're doing full_validation. The wording of the comment is a little confusing though. Should I change it?
|
/ok to test 66028ab |
…erators The previous change ran the cross-DP all-reduce of eval_iters unconditionally and dropped the per-dataloader _get_iterator calls, which (1) failed with `TypeError: object of type 'list_iterator' has no len()` when dataloader_type="external" and (2) left valid_data_iterators set to None for non-full-validation runs. Gate the all-reduce on args.full_validation and restore the _get_iterator calls for both multiple_validation_sets and single-set paths, using "cyclic" iteration only under full_validation so short DP ranks loop up to the MAX-reduced eval_iters.
|
/ok to test 0fcfa93 |
…alidation data loader
|
/ok to test b4855d3 |
|
/ok to test 72d6cf1 |
|
🔄 Merge queue validation started! You can track the progress here: https://github.com/NVIDIA/Megatron-LM/actions/runs/24910443901 |
|
🔄 Merge queue validation started! You can track the progress here: https://github.com/NVIDIA/Megatron-LM/actions/runs/24938930211 |
Signed-off-by: rprenger <rprenger@nvidia.com>
Signed-off-by: rprenger <rprenger@nvidia.com> Signed-off-by: yhgalaxy <yhgalaxy@outlook.com>
Signed-off-by: rprenger <rprenger@nvidia.com> Signed-off-by: Jon Barker <jbarker@aws-cmh-slurm-1-vscode-02.cm.cluster>
Signed-off-by: rprenger <rprenger@nvidia.com>
What does this PR do ?
This fixes a bug where using multiple validation sets hangs training if the validation sets are small compared to data parallel size.
Contribution process
flowchart LR A[Pre-checks] --> B[PR Tests] subgraph Code Review/Approval C1[Expert Review] --> C2[Final Review] end B --> C1 C2 --> D[Merge]Pre-checks
Core 0.8)Code review
The following process is enforced via the CODEOWNERS file for changes into
megatron/core. For changes outside ofmegatron/core, it is up to the PR author whether or not to tag the Final Reviewer team.For MRs into `main` branch
Feel free to message or comment the @mcore-oncall to help accelerate your merge into main. The less complex your PR is, the faster it will be approved and merged!
(Step 1): Add PR label
Expert Review(Step 2): Collect the expert reviewers reviews
Expert Reviewlabel when your PR is ready for review.Final Review might get declined if these requirements are not fulfilled.
(Step 3): Final Review
Final Reviewlabel(Optional Step 4): Cherry-pick into release branch
If this PR also needs to be merged into
core_r*release branches, after this PR has been merged, selectCherry-pickto open a new PR into the release branch.For MRs into `dev` branch
The proposed review process for `dev` branch is under active discussion.MRs are mergable after one approval by either
eharper@nvidia.comorzijiey@nvidia.com.Merging your PR
Any member of core-adlr and
core-nemowill be able to merge your PR.