Skip to content

misc: add cancel previous at e2e - #864

Merged
zhyncs merged 1 commit into
sgl-project:mainfrom
zhyncs:upd
Aug 1, 2024
Merged

zhyncs merged 1 commit into
sgl-project:mainfrom
zhyncs:upd

Conversation

@zhyncs

@zhyncs zhyncs commented Aug 1, 2024

Copy link
Copy Markdown
Contributor

Thank you for your contribution, we really appreciate it. The following instructions will help improve your pull request and make it easier to receive feedback. If there are any items you don't understand, don't worry. Just submit the pull request and ask the maintainers for help.

Motivation

Please explain the motivation behind this PR and the goal you aim to achieve with it.

Modification

Briefly describe the changes made in this PR.

Checklist

  1. Ensure pre-commit pre-commit run --all-files or other linting tools are used to fix potential lint issues.
  2. Confirm that modifications are covered by complete unit tests. If not, please add more unit tests for correctness.
  3. Modify documentation as needed, such as docstrings or example tutorials.

@zhyncs
zhyncs merged commit 9e8d2c7 into sgl-project:main Aug 1, 2024
@zhyncs
zhyncs deleted the upd branch August 1, 2024 08:26
timethink pushed a commit to timethink/sglang that referenced this pull request Mar 9, 2025
efschu pushed a commit to efschu/htsglang that referenced this pull request Aug 26, 2026
…ct#868's 15, and one keyword wide

sgl-project#864. The question was whether the 16 standing failures are the same
hermeticity form as the 15 that sgl-project#868 resolved. They are its MIRROR IMAGE,
and the mirror is the direction that hurts:

                       hermetic   cards    the desk gate shows
  sgl-project#868's 15            FAIL       pass     a red nobody can act on
  sgl-project#864's 16            SKIP       FAIL     a GREEN over a standing red

Same class -- the invocation decides the verdict -- but sgl-project#868's announce
themselves on every desk run, while these announce themselves nowhere
anybody looks: the machine that can see them has cards, and the gate people
read does not.

CAUSE, proved without a card. hiradix_cache.py:266-278 calls
all_reduce(tensor, op=op, group=group, async_op=True) unconditionally. The
double at test_unified_radix_cache_unittest.py:2382 is
fake(tensor, op=None, group=None). All 16 die with a TypeError inside
mock's dispatch BEFORE their first assertion, so they are not evidence
about SWA prefetch adoption in either direction. Checked the other half of
the call too rather than assuming: the double returns None, and
hicache_collective.py:190-196 documents None as a completed no-op -- so the
drift is exactly one keyword wide and a one-line fix is the whole fix.
TEST-ONLY. Zero live defects. sgl-project#783 gets nothing from them.

Corrects the prior art it rests on: NOTE_861fg's "16 passed" hermetic is a
numeric COINCIDENCE, not the same 16. Measured: -k tp_swa_prefetch under
CVD="" gives 38 skipped / 0 passed / 0 failed (8+8 for want of a card,
11+11 non-SWA parametrisations; tally 38 == summary 38). They are inside
the 1506 skips, not the 16 passes.

sgl-project#862. mem_cache hermetic: 2 failed / 1774 passed / 1658 skipped, both tally
axes OK (names 2 == summary 2; extracted 1658 == summary 1658). Both
failures DEVICE-caused; REAL defects 0. The 1658 split by reason:

  HARDWARE 996 | DEPENDENCY 12 | CONFIG-not-darkness 645 | BY ACCIDENT 0
  UNCLASSIFIED 5

So the darkness is BY DESIGN -- BY ACCIDENT is zero and the conftest
mechanism explains itself in its own docstring. The ticket is still right
for a finer reason: 1008 of those would run on a card and 645 would never
run anywhere, and the summary line renders those identical facts.

My own classifier was wrong first and the data said so: two buckets put 636
of 1658 in neither. Folding them into "dark" would have inflated the figure
by 62 %. All 36 survivors were read individually and encoded; 5 remain
unclassified and are reported as such rather than tuned away.

Two more corrections to prior art: mem_cache DOES run directory-wide on CPU
here (3396 collected, no abort), so the recorded collection-time abort does
not reproduce on this tree -- reported, not bisected. And the escape behind
it is real but at RUNTIME and two tests wide: rotation_executor.py:344
allocates with pin_memory=True, a device door that never calls get_device(),
which is the one door the conftest guard patches.

THE CHECK, in the CPU lane on purpose. New
test_double_signature_drift_864.py (2 tests, 0.11 s, register_cpu_ci) parses
the double and the production call sites and asserts the first can bind the
second -- no device, no ranks, no import of a module that needs them. It
also asserts production still passes async_op, so the guard reports a change
instead of silently testing a call that no longer exists. Can-fail proven:
re-introducing the drift turns it red with the exact diagnostic.

Regression: mem_cache after the change is 2 failed / 1776 passed / 1658
skipped -- same failures, same skips, +2 from the new guard.

NOT done and recorded: the 16 were never run WITH cards, so the fix is
proved to remove the drift and not proved to make them pass. Every number
here is a CVD="" number, verified on the process; nvidia-smi compute-apps
showed only the other runner's serving ranks throughout.

(cherry picked from commit a428907)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant