-
Notifications
You must be signed in to change notification settings - Fork 523
[OMNIML-4760] synth_support #1696
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
Changes from all commits
74a3371
6262894
530246c
b8b3735
cf1ef82
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,43 @@ | ||
| # Standalone vLLM data synthesis for Qwen3-8B. | ||
| # | ||
| # Usage: | ||
| # uv run slurm.py --yaml modules/Model-Optimizer/tools/launcher/examples/Qwen/Qwen3-8B/hf_synth.yaml --yes | ||
|
|
||
| job_name: qwen3-8b-synth | ||
| pipeline: | ||
| global_vars: | ||
| hf_model: /hf-local/Qwen/Qwen3-8B | ||
| output_dir: /scratchspace/modelopt/qwen3-8b-synth-v1 | ||
|
|
||
| task_0: | ||
| script: common/vllm/query.sh | ||
| args: | ||
| - --model | ||
| - <<global_vars.hf_model>> | ||
| - --tensor-parallel-size | ||
| - "8" | ||
| - --trust-remote-code | ||
| - --enforce-eager | ||
| - --gpu-memory-utilization | ||
| - "0.95" | ||
| - --max-model-len | ||
| - "4096" | ||
| - -- | ||
| - --data | ||
| - nvidia/Speculative-Decoding-Multilingual-Prompt-v2 | ||
| - --save | ||
| - <<global_vars.output_dir>> | ||
| - --shard-id | ||
| - $SLURM_ARRAY_TASK_ID | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. [IMPORTANT Compatibility] This line passes the literal string Two reasons this is risky:
Note you do need Suggestion: confirm a dry-run/cluster run actually expands |
||
| - --num-shards | ||
| - "16" | ||
| environment: | ||
| - VLLM_STARTUP_TIMEOUT: "1800" | ||
| slurm_config: | ||
| _factory_: "slurm_factory" | ||
| nodes: 1 | ||
| ntasks_per_node: 1 | ||
| gpus_per_node: 8 | ||
| container: vllm/vllm-openai:latest | ||
| array: "0-15" | ||
| requeue: true | ||
|
Comment on lines
+36
to
+43
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. [IMPORTANT Compatibility] This task fans work out over 16 shards via Concretely, that breaks this job two ways:
The existing eagle3 examples avoid this because they let Add the array spec so SLURM actually allocates the 16 array tasks: slurm_config:
_factory_: "slurm_factory"
nodes: 1
ntasks_per_node: 1
gpus_per_node: 8
array: "0-15"
container: vllm/vllm-openai:latest |
||
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.
[SUGGESTION]
num_proc = min(args.num_proc, len(shard))evaluates to0when a shard is empty (len(shard) == 0), andDataset.map(num_proc=0)raisesValueError: num_proc must be an integer > 0.The previous code passed
args.num_proc(default 32, always > 0) directly, so this is a newly-introduced crash path. It won't trigger for the largeSpeculative-Decoding-Multilingual-Prompt-v2dataset inhf_synth.yaml, butquery.pyis a general tool: a small/sample dataset (e.g. the existingsample-1K.jsonl) with a high--num-shardsproduces empty tail shards and would crash here instead of writing an empty output +.donemarker.Why it matters: empty shards are a normal outcome of over-sharding, and crashing on them defeats the idempotent
.donedesign — the array job for that shard fails and (withrequeue: true) may retry indefinitely.Suggested fix — clamp to at least 1, or skip empty shards entirely: