Skip to content

Run most R3 e2e tests through the output store, and sweep each run's leftovers - #4478

Merged
guapisolo merged 4 commits into
mainfrom
jiajun/store-ci-dogfood
Oct 28, 2026
Merged

guapisolo merged 4 commits into
mainfrom
jiajun/store-ci-dogfood

Conversation

@guapisolo

@guapisolo guapisolo commented Oct 27, 2026 •

Copy link
Copy Markdown
Collaborator

Depends on: #4267
Stacked on the parent PR's branch. Review / merge the parent first.

Summary

Run twelve R3 e2e tests through the output store, and sweep each run's store objects when it ends.

Motivation

Only three e2e tests sent replay arrays through the output store. Fully async, MTP speculative decoding, DeepEP, FP8, the FSDP and torchtitan trainers and the ROCm image never ran it, and nothing checked cleanup: objects a run still held when it ended stayed in the store.

Usage

CASE = CaseConfig(..., use_r3=True, use_output_store=True)  # off by default

Design Notes

  • Mental model: a builder appends command_utils.get_output_store_args() only for a case that sets use_output_store, where the trainer's R3 replay check guards the store read as it guards the inline one; at run end, RolloutExecutor.dispose removes every key left under miles-output-store/<run_uuid>/.
  • Under --ci-test, a run that trained every rollout fails if the sweep removed anything, unless --fully-async or --partial-rollout buffered groups.
  • The sweep is forced: a read leaves a lease on its keys, which a plain remove skips (checked on a live Mooncake master).
  • Inline stays in fsdp/r3/test_qwen3_30b_a3b_r3.py as the inline R3 guard, in tests whose flags the store rejects, in the dumper, MiMo and disabled tests.
  • The ROCm image installs radix_transfer_plugins, as the CUDA image does.

Verification

Review Focus

  • The sweep's place at the end of RolloutExecutor.dispose.
  • Which tests stay inline.

@claude claude Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Claude Code Review

This repository is configured for manual code reviews. Comment @claude review for a one-time review, or @claude review always to subscribe this PR to a review on every future push.

Tip: disable this comment in your organization's Code Review settings.

@guapisolo

Copy link
Copy Markdown
Collaborator Author

/rerun-test tests/e2e/fsdp/r3/test_glm47_flash_r3.py

@guapisolo

Copy link
Copy Markdown
Collaborator Author

/rerun-test tests/e2e/fsdp/r3/test_qwen3_5_35b_a3b_r3.py

@guapisolo

Copy link
Copy Markdown
Collaborator Author

/rerun-test tests/e2e/megatron/model_scripts/test_deepseek_v32_5layer_fp8.py

@guapisolo

Copy link
Copy Markdown
Collaborator Author

/rerun-test tests/e2e/megatron/test_glm47_flash/test_nospec_r3_bf16_deepep_sgl_dpattn2x2_meg_tp2cp2_bshd.py

@guapisolo

Copy link
Copy Markdown
Collaborator Author

/rerun-test tests/e2e/megatron/test_glm47_flash/test_spec_mtptrain_r3_bf16_sgl_tp2_meg_tp1cp2_disagg.py

@guapisolo

Copy link
Copy Markdown
Collaborator Author

/rerun-test tests/e2e/megatron/test_glm47_flash/test_spec_mtptrain_r3_bf16_sgl_tp4_meg_tp2pp2.py

@guapisolo

Copy link
Copy Markdown
Collaborator Author

/rerun-test tests/e2e/megatron/test_qwen3_30B_A3B/test_r3_deepep.py

@guapisolo

Copy link
Copy Markdown
Collaborator Author

/rerun-test tests/e2e/megatron/test_qwen3_5_35B_A3B/test_nospec_r3_bf16_sgl_dpattn1x4_meg_tp1cp1_fullyasync.py

@guapisolo

Copy link
Copy Markdown
Collaborator Author

/rerun-test tests/e2e/megatron/test_qwen3_5_35B_A3B/test_spec_mtptrain_r3_fp8_deepep_sgl_dpattn1x4_meg_tp2cp1.py

@guapisolo

Copy link
Copy Markdown
Collaborator Author

/rerun-test tests/e2e/torchtitan/test_glm47_flash_tp_ep_r3.py

@guapisolo

Copy link
Copy Markdown
Collaborator Author

/rerun-test tests/e2e/torchtitan/test_qwen3_30B_A3B_fully_async_r3.py

@guapisolo

Copy link
Copy Markdown
Collaborator Author

/rerun-test tests/e2e/torchtitan/test_qwen3_30B_A3B_tp_pp_ep_cp.py

@github-actions

github-actions Bot commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

✅ tests/e2e/fsdp/r3/test_qwen3_5_35b_a3b_r3.py passed on stage-c-8-gpu-h200 in 37m59s — workflow run

@github-actions

github-actions Bot commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

❌ tests/e2e/megatron/model_scripts/test_deepseek_v32_5layer_fp8.py failed on stage-c-4-gpu-h200 in 15m10s — workflow run

The execution job failed; inspect the workflow run for the failing step.

@github-actions

github-actions Bot commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

✅ tests/e2e/fsdp/r3/test_glm47_flash_r3.py passed on stage-c-8-gpu-h200 in 53m50s — workflow run

@github-actions

github-actions Bot commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

✅ tests/e2e/megatron/test_glm47_flash/test_spec_mtptrain_r3_bf16_sgl_tp2_meg_tp1cp2_disagg.py passed on stage-c-4-gpu-h200 in 41m28s — workflow run

@github-actions

github-actions Bot commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

✅ tests/e2e/megatron/test_glm47_flash/test_nospec_r3_bf16_deepep_sgl_dpattn2x2_meg_tp2cp2_bshd.py passed on stage-c-4-gpu-h200 in 44m08s — workflow run

@github-actions

github-actions Bot commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

✅ tests/e2e/megatron/test_glm47_flash/test_spec_mtptrain_r3_bf16_sgl_tp4_meg_tp2pp2.py passed on stage-c-4-gpu-h200 in 2h03m31s — workflow run

@github-actions

github-actions Bot commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

✅ tests/e2e/megatron/test_qwen3_5_35B_A3B/test_nospec_r3_bf16_sgl_dpattn1x4_meg_tp1cp1_fullyasync.py passed on stage-c-8-gpu-h200 in 1h02m56s — workflow run

@github-actions

github-actions Bot commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

✅ tests/e2e/megatron/test_qwen3_30B_A3B/test_r3_deepep.py passed on stage-c-4-gpu-h200 in 2h08m09s — workflow run

@github-actions

github-actions Bot commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

✅ tests/e2e/megatron/test_qwen3_5_35B_A3B/test_spec_mtptrain_r3_fp8_deepep_sgl_dpattn1x4_meg_tp2cp1.py passed on stage-c-4-gpu-h200 in 2h24m18s — workflow run

@github-actions

github-actions Bot commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

✅ tests/e2e/torchtitan/test_glm47_flash_tp_ep_r3.py passed on stage-c-8-gpu-h200 in 1h12m21s — workflow run

@github-actions

github-actions Bot commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

✅ tests/e2e/torchtitan/test_qwen3_30B_A3B_fully_async_r3.py passed on stage-c-8-gpu-h200 in 1h10m05s — workflow run

@github-actions

github-actions Bot commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

✅ tests/e2e/torchtitan/test_qwen3_30B_A3B_tp_pp_ep_cp.py passed on stage-c-8-gpu-h200 in 1h21m56s — workflow run

@guapisolo
guapisolo added this pull request to stack #4245 October 27, 2026 21:54
@guapisolo
guapisolo force-pushed the jiajun/store-ci-dogfood branch from 5e2af1c to 351b5be Compare October 28, 2026 00:52
@guapisolo

Copy link
Copy Markdown
Collaborator Author

/rerun-test tests/e2e/megatron/model_scripts/test_deepseek_v32_5layer_fp8.py

@github-actions

github-actions Bot commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor

✅ tests/e2e/megatron/model_scripts/test_deepseek_v32_5layer_fp8.py passed on stage-c-4-gpu-h200 in 15m45s — workflow run

@guapisolo
guapisolo force-pushed the jiajun/store-ci-dogfood branch from 351b5be to aacde6d Compare October 28, 2026 01:28
@guapisolo
guapisolo force-pushed the jiajun/store-ci-dogfood branch from 73ea084 to 0901944 Compare October 28, 2026 04:08
Base automatically changed from jiajun/store-plan-switch to main October 28, 2026 04:09
Nothing deleted what a run still held when it ended: untrained rollouts, buffered or in-flight
fully-async groups, retried attempts and failed deletes stayed in the store, and an external
master kept them across runs. The rollout executor's dispose now removes every key under the run's
prefix with a remove-only Mooncake client. The remove is forced, since a read leaves a lease that
blocks a plain one. Under --ci-test a synchronous run, which released every rollout, fails when the
sweep removed anything; a fully-async run only logs it.
The CUDA image installs the output store package from the SGLang checkout; the ROCm image did not,
so --use-output-store failed there at the first import. The store runs over Mooncake in host memory,
which the ROCm image already ships.
Each R3 builder gains an off-by-default use_output_store case field, and twelve tests across
Megatron, FSDP and torchtitan turn it on, so CI exercises the store with fully async, MTP
speculative decoding, DeepEP, FP8, CP and PP. command_utils.get_output_store_args holds the flags.
fsdp/r3/test_qwen3_30b_a3b_r3.py stays inline to guard the inline R3 path.
The run-end sweep failed every synchronous --ci-test run that left an object, and raised on a
failed sweep in any run. A run that stopped before training a rollout still holds that
rollout's objects, so a crash ended in the sweep's AssertionError, with the real error only as
its context. A --partial-rollout run ends with aborted groups back in the data buffer, so a
correct run failed. And a Mooncake failure at teardown turned a finished non-CI run into a
failed one, though a failed delete only logs.

get() now files every rollout until its release, so dispose can tell a run that stopped early.
The sweep holds a CI run to leaving nothing, and to a working sweep, only when no rollout is
left unreleased; a partial-rollout run only logs what it left, like a fully-async one; outside
CI a failed sweep only logs. A dispose test checks the sweep runs once, after the rest of
teardown.
@guapisolo
guapisolo force-pushed the jiajun/store-ci-dogfood branch from 0901944 to 3c67a49 Compare October 28, 2026 04:10
@guapisolo
guapisolo merged commit 7e7a446 into main Oct 28, 2026
27 of 28 checks passed
@guapisolo
guapisolo deleted the jiajun/store-ci-dogfood branch October 28, 2026 04:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant