From 58c6ff3ed099e2e4e08f85e2e1bd595612a105e8 Mon Sep 17 00:00:00 2001 From: h-guo18 <67671475+h-guo18@users.noreply.github.com> Date: Thu, 10 Sep 2026 13:47:08 +0000 Subject: [PATCH] fix(launcher): use the schema's draft_model global var `pipeline.global_vars` is a fixed-field dataclass (`GlobalVariables` in tools/launcher/core.py), not a free-form mapping, so an unknown key fails at launch with "No parameter named 'X' exists". The Nemotron-3.5 DSpark warm-start example (#2149) invented `drafter:`, so the example in the repo could not run at all: Error processing argument 'pipeline.global_vars.drafter=...': Invalid argument: No parameter named 'drafter' exists for `draft_model` is the field that already exists for exactly this purpose. Renaming the key and its one reference fixes the example. The Kimi-K2.5 specdec_bench example had the same latent break with `draft_model_dir:`; only the global-var key is renamed there, the script's `--draft_model_dir` flag is unchanged. Signed-off-by: h-guo18 <67671475+h-guo18@users.noreply.github.com> Co-Authored-By: Claude Opus 5 (1M context) --- .../examples/moonshotai/Kimi-K2.5/specdec_bench.yaml | 6 +++--- .../hf_streaming_dspark_warmstart.yaml | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/tools/launcher/examples/moonshotai/Kimi-K2.5/specdec_bench.yaml b/tools/launcher/examples/moonshotai/Kimi-K2.5/specdec_bench.yaml index a25a3fe3452..d333a606cc8 100644 --- a/tools/launcher/examples/moonshotai/Kimi-K2.5/specdec_bench.yaml +++ b/tools/launcher/examples/moonshotai/Kimi-K2.5/specdec_bench.yaml @@ -32,13 +32,13 @@ pipeline: global_vars: hf_model: /hf-local/nvidia/Kimi-K2.5-NVFP4 - # Trained+exported DFLASH draft; override: pipeline.global_vars.draft_model_dir= - draft_model_dir: /hf-local/nvidia/Kimi-K2.5-DFlash + # Trained+exported DFLASH draft; override: pipeline.global_vars.draft_model= + draft_model: /hf-local/nvidia/Kimi-K2.5-DFlash task_0: script: common/specdec_bench/run.sh args: - - --draft_model_dir <> + - --draft_model_dir <> - --speculative_algorithm DFLASH - --engine VLLM - --mtbench /hf-local/HuggingFaceH4/mt_bench_prompts/raw/question.jsonl diff --git a/tools/launcher/examples/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16/hf_streaming_dspark_warmstart.yaml b/tools/launcher/examples/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16/hf_streaming_dspark_warmstart.yaml index ddf17ba01f1..9b2334b2dc0 100644 --- a/tools/launcher/examples/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16/hf_streaming_dspark_warmstart.yaml +++ b/tools/launcher/examples/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16/hf_streaming_dspark_warmstart.yaml @@ -56,7 +56,7 @@ pipeline: # config.json layer-type vocabulary already patched for tf5 (see header). hf_model: /hf-local/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16 # The published drafter the warm start continues from. - drafter: /hf-local/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16-DSpark + draft_model: /hf-local/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16-DSpark # Build /scratchspace/data/train.jsonl. Point data.data_path at the full # Spec-Decoding-Dataset-v2 corpus to reproduce; eagle_utils also accepts a @@ -80,7 +80,7 @@ pipeline: # causal attention and attention sink all come from this recipe — see header. - --config modules/Model-Optimizer/modelopt_recipes/huggingface/models/nvidia/Nemotron-3.5-Lightning-30B-A3B-BF16/speculative_decoding/dspark_warmstart.yaml - model.model_name_or_path=<> - - dflash.dflash_init_checkpoint=<> + - dflash.dflash_init_checkpoint=<> - data.data_path=/scratchspace/data/train.jsonl # The stock Nemotron template has no {% generation %} tags; without a tagged copy # answer_only_loss trains on an all-zero mask (see header).