Skip to content

feat(runtime): make mixed prefill selectable at load time - #290

Draft
shadownetX wants to merge 1 commit into
NVIDIA:mainfrom
shadownetX:experiment/runtime-mixed-prefill
Draft

shadownetX wants to merge 1 commit into
NVIDIA:mainfrom
shadownetX:experiment/runtime-mixed-prefill

Conversation

@shadownetX

Copy link
Copy Markdown

Motivation

Mixed-prefill exports already contain both separate and mixed execution graphs. However, switching between these execution strategies currently requires a new export, which can be particularly expensive when using the audit tuning profile (4h 18m on a single DGX Spark).

Allowing runtime selection makes it possible to adapt serving to different workloads and compare both strategies using the exact same exported core.

Changes

  • Add --mixed-prefill and --no-mixed-prefill to flare run.
  • Filter mixed graphs at load time, before CUDA initialization.
  • Prune exclusively referenced graph resources and startup tuning dependencies when mixed prefill is disabled.
  • Preserve existing behavior when neither flag is provided.

No changes to the core format, scheduler policy, speculative decoding, or prefix-cache behavior.

Validation

  • Targeted CPU tests: 8 passed, 0 failed.
  • Native Linux and Windows builds: passed.
  • GPU validation on DGX Spark (GB10, SM121) is planned shortly, using the same Qwen3.8 Flash Next core with mixed prefill enabled and disabled.

The GPU comparison will cover TTFT, generation throughput, memory usage, and graph launches.

This PR will remain in draft until GPU validation is complete.

Mixed-enabled cores capture both separate and mixed execution programs, but
serving cannot exclude the mixed programs without replacing the export.
Load-time selection can isolate their scheduling impact using the same core.

Add paired native CLI flags and propagate the optional selection to every
rank. The loader validates the captured catalog, excludes mixed graphs when
disabled, and rejects explicit enable when no eligible mixed graph remains.
Omitting both flags retains existing selection. The existing graph and kernel
pruning path removes unused resources without altering captured storage.

This permits controlled mixed-on/off serving comparisons without re-export
or changes to scheduler policy, MTP selection, or cache behavior.

Add CPU regressions for graph selection, retained separate resources, startup
tuning dependencies, invalid catalogs, CLI forwarding, and scheduler progress
without mixed graphs. Targeted CPU regressions pass in CI; native CUDA loading, performance,
and multi-rank replay remain unqualified.

Co-authored-by: ChatGPT <support@openai.com>
Design-Signed-Off-By: ChatGPT (GPT-6); design-review=ed22
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