fix(ci): enable ft-long fault-tolerance soak tests#1653
Open
guapisolo wants to merge 5 commits into
Open
Conversation
The run-ci-ft-long label already reaches the full-node H200 suite, but all three matching registrations are disabled. Remove those temporary gates so the label schedules every FT soak entry.
Contributor
There was a problem hiding this comment.
Code Review
This pull request re-enables several fault-tolerance (FT) soak tests by removing the disabled parameter from the register_cuda_ci registration calls in test_trainer_ft_random_dp2_cp2_real_rollout.py, test_trainer_ft_random_dp2_cp2_tp2_ep2.py, and test_trainer_ft_realistic_gsm8k.py. I have no additional feedback to provide as there are no review comments.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
The newly enabled ft-long tests exceeded their stale per-file budgets while still making progress. Propagate metric-checker success to the train loops, opt the realistic GSM8K soak into early completion without relaxing its threshold, and calibrate all three soak estimates from the observed H200 run.
The standalone metric checker test is implicitly collected by stage-a-cpu and is not useful for this FT soak change. Drop it from the PR without changing the metric checker implementation or the remaining stop-on-success coverage.
FT soak tests must complete their configured rollout counts instead of stopping after a metric passes. Remove the early-stop flag and its wiring, restore the original estimates, and keep realistic GSM8K disabled so this PR only enables the two random FT cases.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Enable all three
ft-longH200 soak tests and stop GSM8K once its accuracy target passes.Symptom & Reproduction
run-ci-ft-longpath could not complete its three intended H200 soak tests: registrations were disabled, then enabled runs exceeded stale time budgets.Root Cause
register_cuda_cistored adisabledreason for eachft-longregistration.filter_testsskipped every matching registration whiledisabledremained set.est_timevalues predated the enabled H200 runs and produced 3000s and 11250s timeouts.MetricChecker.on_evalrecorded target success without returning it to the training loop.Fix
Remove the temporary registration gates and calibrate all three
est_timevalues from observed H200 runtimes. Add the opt-in--ci-metric-checker-stop-on-successpath soMetricChecker.on_evalreports cumulative success throughRolloutManager.evaltotrain.pyandtrain_async.py; the realistic GSM8K soak enables it while retaining the0.55threshold and 250-rollout upper bound.Verification
test_on_eval_reports_cumulative_successcovers cumulative success across evaluations.test_dispose_rejects_runs_without_a_successful_evalcovers rejection when no evaluation reaches the target.TestEval.test_reports_stop_after_metric_successcovers the stop signal returned after a successful evaluation.test_ci_metric_checker_stop_on_success_flag_is_parsedcovers the new opt-in CLI flag.ft-longtests.eval/gsm8k=0.561789exceeds0.55.Review Focus
MetricChecker.on_eval,RolloutManager.eval,train.py, andtrain_async.py.miles_validate_argstoscenario_realistic_gsm8k.py.est_timecalibrations relative to observed H200 elapsed times under the runner timeout multiplier.