From 793899cc6258a23bacfe30bb5ab693b2afeb4122 Mon Sep 17 00:00:00 2001 From: Chenhan Yu Date: Wed, 10 Jun 2026 15:16:26 -0700 Subject: [PATCH] launcher: add draft_model to GlobalVariables for spec-decode parents MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit SPEED-bench MTP / EAGLE3 / DRAFT_TARGET / DFLASH parent YAMLs reference the speculative draft/assistant model path on BOTH the qualitative and throughput_32k tasks via: pipeline: global_vars: hf_model: /hf-local/ draft_model: /hf-local/ task_0: args: - --draft_model_dir <> task_1: args: - --draft_model_dir <> so the path lives in one place. The launcher's ``GlobalVariables`` dataclass had a strict whitelist of keys (``hf_model``, ``hf_data``, ``hf_local``, ``output_dir``) and rejected ``draft_model`` with: ValueError: No parameter named 'draft_model' exists Surfaced on OMNIML-5024 pipeline #54356795: the gemma-4-E4B-it / MTP / vLLM parent (merged in PR #1663) used this indirection but failed at launcher load. The agent worked around it by inlining the literal ``--draft_model_dir /hf-local/google/gemma-4-E4B-it-assistant`` path, but the canonical YAML in #1663 remains broken until this lands. Adds ``draft_model: str = None`` as the fifth top-level field on ``GlobalVariables`` with an inline comment citing the use case. The existing ``<>`` resolution in ``__post_init__`` (uses ``dataclasses.asdict``) picks the new field up automatically — no other changes needed. Tests: 4 existing ``global_vars``-related tests in ``tests/test_core.py`` + ``tests/test_core_extended.py`` continue to pass. Signed-off-by: Chenhan Yu --- tools/launcher/core.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tools/launcher/core.py b/tools/launcher/core.py index 7d53cca0db4..2cde1b94034 100644 --- a/tools/launcher/core.py +++ b/tools/launcher/core.py @@ -154,6 +154,16 @@ class GlobalVariables: hf_data: str = None hf_local: str = None output_dir: str = None + # Speculative-decoding draft / assistant model path. SPEED-bench + # MTP/EAGLE3/DRAFT_TARGET/DFLASH parent YAMLs reference this via + # ``--draft_model_dir <>`` on both the + # qualitative + throughput_32k tasks so the path lives in one + # place. Surfaced on OMNIML-5024: the gemma-4-E4B-it / MTP / vLLM + # parent used the indirection but the launcher rejected it with + # ``No parameter named 'draft_model' exists`` because the + # dataclass schema didn't include the key; the agent worked + # around it inline but the canonical YAML stayed broken. + draft_model: str = None @dataclass