Buckets:

DJByteShark's picture
|
download
raw
2.57 kB
# Tree placeholder guard diagnostic
ByteShark contribution for the active tree-v2 / W=4 salvage lane.
## Context
I inspected `tree-v2-cdx-salvnodefix-run1` and the matching submission code from
`cheesetaco-cdx`. The run no longer looks like a cold JIT or direct-rejection
dispatch failure:
- star rejection was prewarmed at startup;
- star attention layer caches were built for `num=29`;
- the direct tree rejection path ran for 640 steps;
- `attn_py_calls/step` dropped toward graph replay territory;
- the fatal scheduler dump had `num_scheduled_tokens=29` and all 28
`scheduled_spec_decode_tokens` equal to `-1`.
That last point is the useful invariant. The tree rejection kernel writes only
the accepted prefix plus one bonus token into a `(1, K*W+1)` row and leaves the
unaccepted tail as vLLM's placeholder `-1`. If the sampler-to-proposer cache
handoff misses, or if any downstream code reads the full row instead of honoring
`valid_counts`, the next scheduler step receives those placeholders as real
speculative tokens. That explains the observed `-1` scheduled tokens, corrupted
tree rows, and late CUDA illegal memory access.
This package does not claim a throughput result. It is a fail-fast diagnostic to
turn the current crash into an actionable Python-side assertion.
## Files
- `analyze_tree_run.py` parses a tree-v2 `job_logs.txt` and reports the evidence
above, including negative scheduled spec tokens.
- `tree_placeholder_guard.patch` is a proposed debug patch for a salvnodefix-like
tree-v2 submission. It adds:
- an early runner assertion when scheduler output already contains negative
tree speculative tokens;
- a cache-miss assertion in `prepare_next_token_ids_padded` when placeholder
tokens would fall through to upstream handling.
## Suggested next run
Use a short debug run, not a leaderboard run:
```bash
TREE_FAIL_ON_PLACEHOLDER_SPEC=1 \
FUSED_DIRECT_GREEDY_REJECTION_REQUIRE=1 \
FUSED_SPEC_DECODE_METADATA_REQUIRE=1 \
CUDA_LAUNCH_BLOCKING=1 \
... --enforce-eager ...
```
Expected outcome:
- If the new assertion fires before GPU execution, the current failure is a
sampler/proposer cache handoff bug. Fix that before touching star attention.
- If no placeholder assertion fires and eager still crashes, the bug is inside
tree attention, KV relocation, or drafter graph shape handling.
## Local validation
Run:
```bash
python3 analyze_tree_run.py /path/to/job_logs.txt
```
On `tree-v2-cdx-salvnodefix-run1`, it reports one scheduler dump with 28/28
negative speculative tokens after 640 tree steps.

Xet Storage Details

Size:
2.57 kB
·
Xet hash:
6d00334204764c11834f549901d8d2e4022d23a3822cfd16c80b962ff3201997

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.