Skip to content

fix(helios): bound history proposals by logical lane length - #289

Open
shadownetX wants to merge 1 commit into
NVIDIA:mainfrom
shadownetX:fix/history-drafts-logical-lane
Open

shadownetX wants to merge 1 commit into
NVIDIA:mainfrom
shadownetX:fix/history-drafts-logical-lane

Conversation

@shadownetX

Copy link
Copy Markdown

Fixes #287.

History drafting previously used the captured graph width even when the scheduler limited a request to a shorter logical lane. This could produce a copy provenance mask exceeding the offered-draft bound and terminate serving.

The fix limits history proposals to lane.tokens.saturating_sub(1) and extends the shared-history worker regression to cover shortened speculative lanes. Completion validation remains unchanged.

Validation

  • Targeted CPU regression fails without the fix and passes with it.
  • Native ARM64 build and serving validated on DGX Spark (GB10 TP1).
  • Previously failing scenario and full FlareBench campaign completed successfully with history drafts enabled.
  • Existing prepared core reused without re-export.
  • Broader native-serving CI failures also observed on unmodified v0.1.0.

Validation covers native MTP with adaptive verification and mixed prefill on Qwen3.8 Flash Next. Additional packed verification narrowing and TP configurations remain untested. Serving on current upstream main has not yet been validated.

History drafting uses the captured graph width even when the scheduler limits a lane to a shorter output or context tail. A rectangular verifier can then report fewer offered drafts than the copy provenance mask represents, violating the bounded completion contract and terminating serving.

Limit the history lookup in input packing to the scheduled lane length minus the pending token rather than the physical graph width. Extend the shared-history upload regression to cover a width-eight graph with a two-token lane and a longer available history match.

This preserves the copy proposal bound for host-selected rectangular lanes without changing graph preparation or weakening completion validation.

The targeted CPU test fails without the fix and passes with it. A release ARM64 build based on v0.1.0 served the existing Qwen3.8 Flash Next core on a single GB10 with native MTP, adaptive verification, mixed prefill and history drafts enabled. The previously failing two-request scenario and the complete cold/warm benchmark campaign passed without request errors. The broader native-serving CI still has failures also observed on the unmodified base; the native runtime step was skipped. Additional device-side reductions of packed lane ceilings and TP configurations are not qualified.

Design-Signed-Off-By: ChatGPT (GPT-6); design-review=ed22
Signed-off-by: vonP <thomas@picollin.fr>
Signed-off-by: ChatGPT <support@openai.com>
Co-authored-by: ChatGPT <support@openai.com>
@shadownetX
shadownetX marked this pull request as ready for review November 13, 2026 21:45
@original-el8 original-el8 added area:scheduling Request scheduling, fairness, batching, and speculative-width selection. bug Something isn't working model:qwen3.8-flash-next Affected recipe or documented reproducer: qwen3.8-flash-next. Impact may be broader. priority:P1 High attention: unresolved correctness, serving failure, or model-data deletion risk. triage:review Proposed change needs code review; this does not imply merge readiness. labels Nov 14, 2026
@original-el8

Copy link
Copy Markdown
Collaborator

Categorized as bug, priority:P1, triage:review, with the Qwen3.8 Flash Next reproducer labeled. #287 now has a concrete proposed repair rather than an unidentified completion failure.

The source change bounds history proposals by the scheduler-selected lane length. The regression deliberately keeps graph capacity at eight while shortening the logical lane to two, then expects only one history proposal. That directly exercises the mismatch behind the reported copy-provenance bound; completion validation is unchanged.

The author reports a failing-before/passing-after CPU regression and successful GB10 TP1 native serving of the previously failing scenario and full campaign, reusing the prepared core. Serving on current upstream main, additional packed-verification narrowing and other TP configurations remain untested. This triage checked source and mergeability, not a new GPU run.

Head 4aab909c74fb merges cleanly with the fetched main. GitHub exposes no check runs or posted commit statuses for this head, so its pending aggregate status is not evidence of a failed test. Keep #287 open until the fix is integrated; Fixes #287 already records the closure link.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:scheduling Request scheduling, fairness, batching, and speculative-width selection. bug Something isn't working model:qwen3.8-flash-next Affected recipe or documented reproducer: qwen3.8-flash-next. Impact may be broader. priority:P1 High attention: unresolved correctness, serving failure, or model-data deletion risk. triage:review Proposed change needs code review; this does not imply merge readiness.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

BUG: History drafts crash the runtime with "invalid bounded token-vector completion" on GB10 TP1

2 participants