Repository navigation
[CI][Mamba] Use well-conditioned prompts for FlashInfer ReplaySSM parity tests - #60515
Conversation
…ity tests The NVFP4 Nemotron-3.5 checkpoint is not reproducible across engine instances, and "Once upon a time, in a small village," starts with a near-tie that can lead into a flat, degenerate continuation where check_logprobs_close fails even between two identically configured engines. Use a prompt that decodes confidently past the 16-token replay window for the FlashInfer decode and spec-decode parity tests. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: zjy0516 <riverclouds.zhu@qq.com>
|
/ci run --allow-stale |
|
✅ Triggered Buildkite CI #93482 for commit
|
CI selector (shadow): 1 test steps (1 jobs) instead of 2 (2 jobs)Shadow mode: this changes nothing about what CI runs. It shows what the evidence-based selector would pick for this PR, next to today's rules. How it works. Feedback welcome: reply here if it would skip a step this change needs, or runs something unrelated.
Selector would run (1)
Would skip (today's rules run them) (1)
Would add (today's rules do not run them) (0)none AMD mirrors: would skip (0)none AMD mirrors: would add (0)none 1 changed files · base |
|
/ci run --allow-stale |
|
✅ Triggered Buildkite CI #93538 for commit |
Overview
Fix the persistently failing
test_replayssm_flashinfer_decode_matches_baseline[v1-nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-NVFP4]in the(H100) ReplaySSM E2Ejob. The failure comes from an ill-conditioned prompt, not ReplaySSM: the FlashInfer parity tests now use a prompt that decodes confidently past the replay window. Test-only change.Claims
"Once upon a time, in a small village,".PROMPTS; no non-test code changes.Validation
Local, 1x H200 (SM90, same as the CI H100), FlashInfer 0.7.0.post1.
Before (reproduces CI):
After:
test_replayssm_flashinfer_decode_matches_baseline[v1-...]test_replayssm_flashinfer_decode_matches_baseline[v2-...]test_replayssm_flashinfer_spec_decode_matches_baselinePrompt stability across 5 separately started engines (3 baseline, 2 ReplaySSM; same config as
_check_replayssm_parity, CUDA graphs on), compared pairwise (10 pairs) with thecheck_logprobs_closerule:"Once upon a time, in a small village,"(old)"The capital of France is""It was the best of times, it was the worst of times,"(new)Details
Root cause. The NVFP4 Nemotron-3.5 checkpoint does not produce bitwise-identical logits across engine instances, even with an identical baseline config: three baseline-only engines disagreed on prompt 1 from the first generated token (
" there was"vs" there lived", margin 0–0.12). The" there was"branch falls into a degenerate repetition ("...loved to read. a young girl named Maya...") with a nearly flat next-token distribution, where run-to-run noise pushes one side's token out of the other side's top-5. Two identically configured ReplaySSM engines failcheck_logprobs_closeagainst each other the same way, and baseline-vs-ReplaySSM divergence is within baseline-vs-baseline divergence, so ReplaySSM numerics are not the cause. I also checked that vLLM's ring-tracker advance matches the FlashInfercheckpointing_ssuflush rule (prev_k + T > MAX_WINDOW).Fix. Add
FLASHINFER_PROMPTS, replacing the fragile prompt with"It was the best of times, it was the worst of times,", which decodes all 32 tokens confidently and so still exercises the 16-token window flush/replay. The spec-decode parity test uses the same model and prompts and is switched too.test_replayssm_flashinfer_mtponly checks output length and is unchanged.Limitations / follow-up. The underlying run-to-run non-determinism of the NVFP4 baseline (likely MoE kernel/autotune selection) is not addressed here.
Duplicate check. Searched issues/PRs for
test_replayssm_decode,replayssm_flashinfer_decode_matches_baseline, and related keywords: none found. Of the open PRs touching this test file (#46239, #47576, #48792, #49847, #49887, #50380, #52962, #55688), none changes these prompts or addresses this failure. #55688 restructures the file's constants and may need a trivial rebase.Pull Request Checklist
I used vLLM's
/pr-checklistskill. (Mandatory for agents, optional for humans).AI assistance was used during the creation of this PR.
Design Fit: Minimizes impact on core components, reuses existing functionality, and justifies added complexity.
Testing and Validation: Validates the change and ensures any added tests are meaningful and reliable, with CI coverage or documented CI resource constraints and validation performed outside CI.
Code Quality and Style: Keeps code and comments clear and concise, and updates relevant documentation and examples.
Pull Request Contents: Includes a brief summary and relevant links, supports claims with evidence, explains root causes and implementation trade-offs, and follows the contributing guide.
🤖 Generated with Claude Code