dsv4-fp4-b300-vllm: bump to vllm v0.20.0, deep_gemm_mega_moe MoE#1220
dsv4-fp4-b300-vllm: bump to vllm v0.20.0, deep_gemm_mega_moe MoE#1220functionstackx wants to merge 2 commits into
Conversation
Mirror of #1204 (b200) for the b300 launcher: - Pin image to vllm/vllm-openai:v0.20.0-cu130 (was floating deepseekv4-cu130 tag); DeepGEMM is preinstalled in this image. - Gate --moe-backend deep_gemm_mega_moe and --gpu-memory-utilization 0.85 on DP_ATTENTION=true via MOE_ARGS / GMU_ARGS. - Drop --pipeline-parallel-size 1; keep --no-enable-prefix-caching and --max-cudagraph-capture-size 2048. - Use --attention_config.use_fp4_indexer_cache=True (= form). - Add perf-changelog entry to trigger dsv4-fp4-b300-vllm. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
Thanks for the contribution! For vLLM & SGLang, please ensure that your recipes is similar to the official vLLM recipes and/or the SGLang cookbook If it is not, please create a PR first before we can merge your PR into the master branch. Let's ensure that the documentation is first class such that the entire ML community can benefit from your hard work! Thank you PR authors are responsible for ensuring that after merging, all GitHub Action jobs fully pass. A lot of the time, failures are just flakes and simply re-running the failed jobs will fix it. If re-running failed jobs is attempted, PR authors are responsible for ensuring it passes. See GitHub's docs on re-running failed jobs: https://docs.github.com/en/actions/how-tos/manage-workflow-runs/re-run-workflows-and-jobs#re-running-failed-jobs-in-a-workflow As a rule of thumb, generally, PR authors should request a review & get a PR approval from the respective companies' CODEOWNERS before requesting a review from core maintainers. If additional help is needed, PR authors can reach out to core maintainers over Slack. |
2 similar comments
|
Thanks for the contribution! For vLLM & SGLang, please ensure that your recipes is similar to the official vLLM recipes and/or the SGLang cookbook If it is not, please create a PR first before we can merge your PR into the master branch. Let's ensure that the documentation is first class such that the entire ML community can benefit from your hard work! Thank you PR authors are responsible for ensuring that after merging, all GitHub Action jobs fully pass. A lot of the time, failures are just flakes and simply re-running the failed jobs will fix it. If re-running failed jobs is attempted, PR authors are responsible for ensuring it passes. See GitHub's docs on re-running failed jobs: https://docs.github.com/en/actions/how-tos/manage-workflow-runs/re-run-workflows-and-jobs#re-running-failed-jobs-in-a-workflow As a rule of thumb, generally, PR authors should request a review & get a PR approval from the respective companies' CODEOWNERS before requesting a review from core maintainers. If additional help is needed, PR authors can reach out to core maintainers over Slack. |
|
Thanks for the contribution! For vLLM & SGLang, please ensure that your recipes is similar to the official vLLM recipes and/or the SGLang cookbook If it is not, please create a PR first before we can merge your PR into the master branch. Let's ensure that the documentation is first class such that the entire ML community can benefit from your hard work! Thank you PR authors are responsible for ensuring that after merging, all GitHub Action jobs fully pass. A lot of the time, failures are just flakes and simply re-running the failed jobs will fix it. If re-running failed jobs is attempted, PR authors are responsible for ensuring it passes. See GitHub's docs on re-running failed jobs: https://docs.github.com/en/actions/how-tos/manage-workflow-runs/re-run-workflows-and-jobs#re-running-failed-jobs-in-a-workflow As a rule of thumb, generally, PR authors should request a review & get a PR approval from the respective companies' CODEOWNERS before requesting a review from core maintainers. If additional help is needed, PR authors can reach out to core maintainers over Slack. |
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
closing this claude vibecoded update as @wzhao18 already working on an b300 0.20 megamoe pr and will be in ready state soon |
| - config-keys: | ||
| - dsv4-fp4-b300-vllm | ||
| description: | ||
| - "Pin image to vllm/vllm-openai:v0.20.0-cu130 (was floating deepseekv4-cu130 tag); DeepGEMM is preinstalled in this image" | ||
| - "Use --attention_config.use_fp4_indexer_cache=True and --compilation-config {\"cudagraph_mode\": \"FULL_AND_PIECEWISE\", \"custom_ops\": [\"all\"]} for all configs" | ||
| - "Gate --moe-backend deep_gemm_mega_moe and --gpu-memory-utilization 0.85 on DP_ATTENTION=true per the v0.20.0 recipe" | ||
| - "Drop --pipeline-parallel-size 1; keep --no-enable-prefix-caching and --max-cudagraph-capture-size 2048" |
There was a problem hiding this comment.
🔴 The new perf-changelog.yaml entry at lines 1973-1979 is missing the required pr-link field, which the Pydantic ChangelogEntry schema (utils/matrix_logic/validation.py:344) declares as a required str with no default on a model that uses extra='forbid'. When utils/process_changelog.py:144 calls ChangelogEntry.model_validate on the diff-extracted entry, it will raise a ValidationError and break the changelog processing workflow. The PR description acknowledges the gap ("pr-link to be filled in via follow-up commit") — please add pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/1220 (or whatever the assigned PR number ends up being) before merging.
Extended reasoning...
What the bug is. The new entry appended to perf-changelog.yaml (lines 1973-1979) only carries config-keys and description keys — it has no pr-link. Every other entry in the file (100+ of them, including the mirrored PR #1204 entry just above at line 1963) has a pr-link, so this is unambiguously the required schema.
Why it breaks. utils/matrix_logic/validation.py:344 declares the field as:
pr_link: str = Field(alias="pr-link")…with no default value, no Optional marker, on a ChangelogEntry model that sets model_config = ConfigDict(extra="forbid", populate_by_name=True) (line 340). Pydantic treats this as a required field — omitting it raises ValidationError: Field required.
The triggering code path. utils/process_changelog.py extracts the added lines from the PR diff (lines 17-41), parses them as YAML via yaml.safe_load (line 118), and then iterates through the resulting list calling ChangelogEntry.model_validate(entry_data) on each entry (line 144). Because this entry is literally what was added in the diff, it is exactly what gets validated — and it will fail.
Impact. The changelog-processing workflow that consumes this file will error out on this entry, blocking whichever CI step / downstream automation depends on it. The PR description itself acknowledges the gap: "Adds a perf-changelog.yaml entry to trigger the affected configs (pr-link to be filled in via follow-up commit once this PR has a number)." Until that follow-up lands, the entry is invalid.
How to fix. Add the pr-link field to the entry, mirroring the format used by every other entry in the file:
- config-keys:
- dsv4-fp4-b300-vllm
description:
- "Pin image to vllm/vllm-openai:v0.20.0-cu130 ..."
- ...
pr-link: https://github.com/SemiAnalysisAI/InferenceX/pull/1220Step-by-step proof.
- The diff appends the new entry;
process_changelog.pycollects the added lines and runsyaml.safe_loadon them, producing a list whose last element is{"config-keys": [...], "description": [...]}— nopr-linkkey. - The loop at
process_changelog.py:144callsChangelogEntry.model_validate(entry_data)on this dict. - Pydantic walks the model fields.
pr_link: str = Field(alias="pr-link")has no default and is notOptional, so Pydantic looks for eitherpr_link(becausepopulate_by_name=True) or the aliaspr-linkin the input. Neither key is present. - Pydantic raises
pydantic.ValidationErrorwithtype=missing,loc=('pr-link',), message "Field required". - That exception propagates up, aborting the processing run and breaking whichever CI/automation step invokes
process_changelog.pyfor this PR.
Summary
Mirror of #1204 for the b300 launcher.
dsv4-fp4-b300-vllmimage tovllm/vllm-openai:v0.20.0-cu130(canonical v0.20.0 tag) — replaces the floatingdeepseekv4-cu130tag. DeepGEMM is preinstalled in this image, so noinstall_deepgemm.shstep is needed at benchmark time.--compilation-config '{"cudagraph_mode":"FULL_AND_PIECEWISE","custom_ops":["all"]}'and--attention_config.use_fp4_indexer_cache=True.--moe-backend deep_gemm_mega_moeand--gpu-memory-utilization 0.85onDP_ATTENTION=trueper the v0.20.0 recipe. The two flags travel together viaMOE_ARGS/GMU_ARGS.--pipeline-parallel-size 1(no longer in the v0.20.0 recipe). Retain--no-enable-prefix-cachingand--max-cudagraph-capture-size 2048.PARALLEL_ARGSswitching onDP_ATTENTION,MAX_NUM_BATCHED_TOKENS=2048on the DP-attn path,BENCHMARK_MAX_MODEL_LEN/EVAL_ONLYblocks.Resulting flag matrix
{tp:4}/{tp:8}FULL_AND_PIECEWISE,custom_ops:all{tp:4, ep:4, dp-attn:true}FULL_AND_PIECEWISE,custom_ops:alldeep_gemm_mega_moe0.85{tp:8, ep:8, dp-attn:true}FULL_AND_PIECEWISE,custom_ops:alldeep_gemm_mega_moe0.85PARALLEL_ARGS/EP_ARGS/GMU_ARGS/MOE_ARGSarrays are preserved so the existingDP_ATTENTION/EP_SIZEsearch-space branching drives the right flags cleanly.Adds a
perf-changelog.yamlentry to trigger the affected configs (pr-link to be filled in via follow-up commit once this PR has a number).Test plan
dsv4-fp4-b300-vllmbenchmark workflow on a B300 runner and confirm the engine starts and the sweep completes for at least one cell in each row of the matrix above.v0.20.0-cu130image pulls and DeepGEMM is already importable inside the container (no install step at runtime).server.logper branch:--moe-backend, no--gpu-memory-utilization.--moe-backend deep_gemm_mega_moe --gpu-memory-utilization 0.85.--compilation-config '{"cudagraph_mode":"FULL_AND_PIECEWISE","custom_ops":["all"]}',--no-enable-prefix-caching,--max-cudagraph-capture-size 2048, no--pipeline-parallel-size.🤖 Generated with Claude Code