-
Notifications
You must be signed in to change notification settings - Fork 518
launcher: add Qwen3-8B/specdec_bench_dflash_vllm.yaml parent (OMNIML-5057) #1764
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
107 changes: 107 additions & 0 deletions
107
tools/launcher/examples/Qwen/Qwen3-8B/specdec_bench_dflash_vllm.yaml
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,107 @@ | ||
| # SPEED-bench DFlash speculative-decoding run for Qwen3-8B via vLLM. | ||
| # | ||
| # Mirror of Qwen3.5-4B/specdec_bench_dflash_vllm.yaml. The draft model | ||
| # (`modelopt/Qwen3-8B-DFlash-bs8-seq4096-150000`) is an INTERNAL NVIDIA | ||
| # checkpoint — NOT on HuggingFace Hub. It is staged on cw_dfw at | ||
| # `/hf-local/modelopt/Qwen3-8B-DFlash-bs8-seq4096-150000` by the Epic's | ||
| # prep_inputs stage (OMNIML-5058). The HF Hub check returns 404 here | ||
| # and that is the expected state — cell.md Step 1's PRIVATE_DRAFT_ORGS | ||
| # branch covers it. | ||
| # | ||
| # Container: `vllm/vllm-openai:v0.22.1`+ is required. DFlash | ||
| # (`vllm/v1/spec_decode/dflash.py`) landed in vLLM v0.22.0. | ||
| # | ||
| # Cells in OMNIML-5057 (t0_d3 / t0_d7 / t1_d3 / t1_d7) override per-cell | ||
| # knobs (temperature, block_size, save_dir, num_requests, max_seq_len) | ||
| # via `pipeline.task_N.args+=[...]` at slurm-invoke time — no per-cell | ||
| # file is committed (post-#1564 convention). | ||
| # | ||
| # Qwen3-8B note: `max_position_embeddings = 40960`. vLLM rejects | ||
| # `--max_seq_len > 40960` without `VLLM_ALLOW_LONG_MAX_MODEL_LEN=1`, | ||
| # and even with that override Qwen3-8B asserts beyond 40960. The | ||
| # throughput_32k split contains rows whose prompts exceed 40960 tokens | ||
| # (e.g. ~45,981 on row 52) — those rows will fail. Acceptable per | ||
| # cell.md "Shape (2)" recovery contract: ship qualitative-only and | ||
| # null the throughput_32k AL fields. See OMNIML-5060 Notes for the | ||
| # 2026-06-15 correction documenting this. | ||
| # | ||
| # Slurm run on cw_dfw (per-cell invocation example, t0_d7): | ||
| # uv run slurm.py \ | ||
| # --yaml modules/Model-Optimizer/tools/launcher/examples/Qwen/Qwen3-8B/specdec_bench_dflash_vllm.yaml \ | ||
| # --yes detach=true \ | ||
| # pipeline.task_0.args+=["--temperature 0","--block_size 8","--save_dir /scratchspace/<sweep>/qualitative"] \ | ||
| # pipeline.task_1.args+=["--temperature 0","--block_size 8","--save_dir /scratchspace/<sweep>/throughput_32k","--num_requests 80","--max_seq_len 40960"] | ||
| # | ||
| # Reference run: cicd_1781655951 (OMNIML-5060, cw_dfw) produced | ||
| # qualitative Average_AL = 3.4849 | ||
| # throughput_32k Average_AL = null (Shape (2), overlong-prompt rows skipped) | ||
| # See OMNIML-5060 INTERN-ARTIFACTS worklog for the full payload. | ||
|
|
||
| job_name: Qwen3-8B_specdec_bench_dflash_vllm | ||
|
|
||
| pipeline: | ||
| global_vars: | ||
| hf_model: /hf-local/Qwen/Qwen3-8B | ||
| draft_model: /hf-local/modelopt/Qwen3-8B-DFlash-bs8-seq4096-150000 | ||
|
|
||
| # task_0: SPEED qualitative split — quality / acceptance-rate numbers. | ||
| # tp_size=2 + concurrency=32 trades aa_timing fidelity for ~30x | ||
| # wall-clock speedup; acceptance-length (AL) is concurrency-independent | ||
| # and is the primary metric we care about for this split. | ||
| task_0: | ||
| script: common/specdec_bench/run.sh | ||
| args: | ||
| - --dataset speed | ||
| - --dataset_path /hf-local/nvidia/SPEED-Bench-Internal/qualitative | ||
| - --engine VLLM | ||
| - --speculative_algorithm DFLASH | ||
| - --draft_model_dir <<global_vars.draft_model>> | ||
| - --block_size 8 | ||
| - --tp_size 2 | ||
| - --ep_size 1 | ||
| - --concurrency 32 | ||
| - --output_length 4096 | ||
| - --aa_timing | ||
| - --show_progress | ||
| - --save_dir /scratchspace/{sweep_name_default}/qualitative | ||
| environment: | ||
| - HF_MODEL_CKPT: <<global_vars.hf_model>> | ||
| - HF_LOCAL: /hf-local | ||
| slurm_config: | ||
| _factory_: "slurm_factory" | ||
| nodes: 1 | ||
| ntasks_per_node: 1 | ||
| gpus_per_node: 2 | ||
| container: vllm/vllm-openai:v0.22.1 | ||
|
|
||
| # task_1: SPEED throughput_32k split — long-context throughput. | ||
| # `--num_requests 80` caps the run at 80 samples (split has 1,536) so | ||
| # it fits in the 4h Slurm time-limit. tp_size=2 doubles the KV-cache | ||
| # budget across 2 GPUs; concurrency=8 keeps 8 * 32K = 256K tokens of | ||
| # in-flight KV under that doubled budget. | ||
| task_1: | ||
| script: common/specdec_bench/run.sh | ||
| args: | ||
| - --dataset speed | ||
| - --dataset_path /hf-local/nvidia/SPEED-Bench-Internal/throughput_32k | ||
| - --engine VLLM | ||
| - --speculative_algorithm DFLASH | ||
| - --draft_model_dir <<global_vars.draft_model>> | ||
| - --block_size 8 | ||
| - --tp_size 2 | ||
| - --ep_size 1 | ||
| - --concurrency 8 | ||
| - --num_requests 80 | ||
| - --output_length 4096 | ||
| - --aa_timing | ||
| - --show_progress | ||
| - --save_dir /scratchspace/{sweep_name_default}/throughput_32k | ||
| environment: | ||
| - HF_MODEL_CKPT: <<global_vars.hf_model>> | ||
| - HF_LOCAL: /hf-local | ||
| slurm_config: | ||
| _factory_: "slurm_factory" | ||
| nodes: 1 | ||
| ntasks_per_node: 1 | ||
| gpus_per_node: 2 | ||
| container: vllm/vllm-openai:v0.22.1 | ||
Oops, something went wrong.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Add required model-config environment variables (
MLM_MODEL_CFG,QUANT_CFG).Line 67-69 and Line 99-101 define task environments for a new model config but omit the required
MLM_MODEL_CFGandQUANT_CFGkeys from the launcher YAML contract.Suggested patch
pipeline: global_vars: hf_model: /hf-local/Qwen/Qwen3-8B draft_model: /hf-local/modelopt/Qwen3-8B-DFlash-bs8-seq4096-150000 + mlm_model_cfg: Qwen/Qwen3-8B + quant_cfg: NVFP4_DEFAULT_CFG # or the correct quant preset for this sweep @@ task_0: @@ environment: - HF_MODEL_CKPT: <<global_vars.hf_model>> - HF_LOCAL: /hf-local + - MLM_MODEL_CFG: <<global_vars.mlm_model_cfg>> + - QUANT_CFG: <<global_vars.quant_cfg>> @@ task_1: @@ environment: - HF_MODEL_CKPT: <<global_vars.hf_model>> - HF_LOCAL: /hf-local + - MLM_MODEL_CFG: <<global_vars.mlm_model_cfg>> + - QUANT_CFG: <<global_vars.quant_cfg>>As per coding guidelines, "Set
MLM_MODEL_CFGenvironment variable to the HuggingFace repo ID when adding a new model config" and "SetQUANT_CFGenvironment variable (e.g.,NVFP4_DEFAULT_CFG,INT8_DEFAULT_CFG) when adding a new model config".Also applies to: 99-101
🤖 Prompt for AI Agents
Source: Coding guidelines