Feat: Support verl release/v0.8.0 and harden NPU vLLM workflows - #41
Merged
Conversation
|
Caution The consumer version of Gemini Code Assist on GitHub has been sunset. All code review activity has officially ceased. |
tpx818
pushed a commit
that referenced
this pull request
Aug 6, 2026
…43) * perf(profiler): add opt-in bubble-time metrics for online draft training SPECO inserts an extra draft-training stage into each RL step on top of the base rollout -> old_log_prob -> update_actor pipeline. That stage runs serially after update_actor, so part of every step is spent doing training work that could in principle overlap the generation window. Today nothing measures how big that opportunity is, which makes bubble-time optimization hard to justify or track. Add a pure, config-gated profiler that turns the per-stage timing_s/* metrics the trainer already emits into a small set of derived bubble/* metrics: - bubble/unaccounted_s|ratio: wall-clock not attributed to any instrumented stage (pipeline gaps, sync, host overhead). - bubble/drafter_s|ratio: the serial draft-training add-on relative to the step. - bubble/overlap_headroom_s|ratio: min(gen, drafter), an upper bound on the wall-clock recoverable by overlapping draft training into generation. The logic lives in a standalone stdlib-only module (bubble_profiler.py) and is injected at the existing Tracking.log choke point, reusing the metrics dict after drafter timing has been split out of update_actor. It is off by default (actor_rollout_ref.rollout.drafter.profile_bubble) and adds no work to a step when disabled; sub-stage timings are excluded so nothing is double counted, and timer skew is clamped so ratios stay in [0, 1]. The tracking hook's duplicated per-branch data rewrite is factored into a single _speco_augment_log_data helper. Signed-off-by: khazic <khazzz1c@gmail.com> * fix(ci): repair three CPU test failures shipped by #41 CPU unit tests have been red on main since #41. Three self-contained failures, one fix each; no behavior change beyond the corrected default. 1. tests/compat/test_verl_release_api.py resolved required modules from <root>/verl while the REQUIRED_MODULES keys already begin with the verl package segment, so every path doubled to <root>/verl/verl/... and the test reported the entire release/v0.8.0 API as missing. Resolve from the checkout root instead. Verified green against a real release/v0.8.0 checkout. 2. verl_speco/config/speco_base.yaml set the default drafter lr_scheduler_type to "constant", which is incoherent with the lr_decay_steps / min_lr_ratio cosine knobs sitting next to it and with the config-overlay test that asserts "global_cosine". #41 introduced both the value and the assertion in the same commit; restore the intended "global_cosine" default. 3. tests/integration/test_vllm_runtime_contract.py asserted an exact source substring for the NPU quant guard that #41's refactor split into an assignment plus an "is not None" check (to surface the quant type in the reason). Match the current, behavior-equivalent source. Signed-off-by: khazic <khazzz1c@gmail.com> * chore(license): use the repo-standard Apache header on the new profiler files check-license only accepts the header strings listed in tests/special_sanity/check_license.py. The new test file had no header at all, and bubble_profiler.py used a 'SPECO Authors' copyright line that is not on that list, so the hook would have failed again on the next run once it got past the test file. Signed-off-by: khazic <khazzz1c@gmail.com> --------- Signed-off-by: khazic <khazzz1c@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR updates SpeCo to track
verlrelease/v0.8.0and improves runtime stability for vLLM-based NPU workflows, including both drafter-enabled and no-drafter execution.Key Changes
release/v0.8.0version and API compatibility contract.FusedMoEfactory and Transformers configuration import behavior.pip install -e .without requiring the SpeCo repository inPYTHONPATH.Compatibility
The changes cover:
The latest upstream changes must be retained when rebasing, especially the drafter gradient reduction fix from #29 and the P-EAGLE backend from #18.