Skip to content

[Klaud Cold] Add H100 Qwen3.8-27B bf16 vLLM TP1 DSpark 1k1k / 新增 H100 Qwen3.8-27B bf16 vLLM TP1 DSpark 1k1k 配方 - #3260

Open
functionstackx wants to merge 3 commits into
mainfrom
feat/qwen38-27b-h100-vllm-dspark
Open

functionstackx wants to merge 3 commits into
mainfrom
feat/qwen38-27b-h100-vllm-dspark

Conversation

@functionstackx

Copy link
Copy Markdown
Collaborator

Add qwen3.827b-bf16-h100-vllm-mtp: Qwen3.8-27B in bf16 (Qwen/Qwen3.8-27B) on a single H100 (80 GB), served by vLLM nightly-cd10ed6f9f6b37a8ace9cf380007e66fe12ec0c3 with TP1 and the RadixArk DSpark drafter Doopeworld/Qwen3.8-27B-DSpark-vLLM (byte-identical weights to RadixArk/Qwen3.8-27B-DSpark; only architectures is changed so vLLM routes it to Qwen3DSparkForCausalLM). Single-turn 1k1k only, concurrency 1-128.

Serve shape: --speculative-config '{"method":"dspark","model":"Doopeworld/Qwen3.8-27B-DSpark-vLLM","num_speculative_tokens":7,"draft_sample_method":"probabilistic"}' (seven tokens is the drafter's trained block size; its card measured k=4 and k=6 slower, and probabilistic sampling ~23% faster than greedy), --kv-cache-dtype fp8, --language-model-only (text-only serving of Qwen3_5ForConditionalGeneration), --reasoning-parser qwen3, --tool-call-parser qwen3_xml, and the matrix context as --max-model-len. Adaptive verification stays off because vLLM's GDN attention backend rejects it for this hybrid architecture. Prompts go through the chat template so draft acceptance reflects real text rather than random tokens; acceptance is real (no golden AL exists yet for this drafter). This PR also adds the Qwen3.8-27B rows to MODELS.md / MODELS_zh.md; the H200 PR references them.

Validation: bash -n, YAML parse, exact-key matrix generation, and changelog append (no deletions) pass. GPU validation pending; full-sweep-fail-fast is set on this PR.

One PR per SKU: h100 and h200 are opened separately.

中文

新增 qwen3.827b-bf16-h100-vllm-mtp:bf16 的 Qwen3.8-27B(Qwen/Qwen3.8-27B)在单张 H100(80 GB)上由 vLLM nightly-cd10ed6f9f6b37a8ace9cf380007e66fe12ec0c3 以 TP1 提供服务,并使用 RadixArk 的 DSpark 草稿模型 Doopeworld/Qwen3.8-27B-DSpark-vLLM(权重与 RadixArk/Qwen3.8-27B-DSpark 逐字节一致,仅修改 architectures 以便 vLLM 路由到 Qwen3DSparkForCausalLM)。仅单轮 1k1k,并发 1-128。

服务参数:--speculative-config '{"method":"dspark","model":"Doopeworld/Qwen3.8-27B-DSpark-vLLM","num_speculative_tokens":7,"draft_sample_method":"probabilistic"}'(7 为草稿模型训练时的 block size;其模型卡实测 k=4、k=6 更慢,probabilistic 采样比 greedy 快约 23%),--kv-cache-dtype fp8--language-model-only(仅文本服务 Qwen3_5ForConditionalGeneration),--reasoning-parser qwen3--tool-call-parser qwen3_xml--max-model-len 使用矩阵上下文。由于 vLLM 的 GDN attention 后端不支持该混合架构的自适应验证,该选项保持关闭。提示词经 chat template 处理,使草稿接受率反映真实文本而非随机 token;接受率为真实值(该草稿模型尚无黄金 AL)。 本 PR 同时在 MODELS.md / MODELS_zh.md 中新增 Qwen3.8-27B 行;H200 PR 引用之。

验证:bash -n、YAML 解析、精确 key 矩阵生成、changelog 追加(无删除)均通过。GPU 验证待完成;本 PR 已添加 full-sweep-fail-fast

每个 SKU 一个 PR:h100 与 h200 分别提交。

🤖 Generated with Claude Code

…k1k recipe on H100

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

Thanks for the contribution!

  • Review: If this PR changes files owned by someone other than a repository admin or @SemiAnalysisAI/core, ask one eligible CODEOWNER to complete the latest PR_REVIEW_CHECKLIST.md before contacting a core maintainer on Slack. Follow the template exactly, including As a PR reviewer and CODEOWNER, I have reviewed this and have, so sign-off verification triggers.
  • PR verification: Sweeps only run on labeled PRs. Add full-sweep-fail-fast (strongly recommended); use full-sweep-enabled only when matrix jobs should continue after a failure.
  • After merging: PR authors must ensure all GitHub Actions jobs pass. Transient failures often pass on rerun; see how to rerun failed jobs.
中文

感谢你的贡献!

  • **审阅:**如果 PR 修改的文件归属于仓库管理员及 @SemiAnalysisAI/core 之外的 CODEOWNER,请先联系一位有资格的 CODEOWNER 填写最新的 PR_REVIEW_CHECKLIST.md,再通过 Slack 联系核心维护者。必须严格遵循模板,并保留 As a PR reviewer and CODEOWNER, I have reviewed this and have,才能触发签核验证。
  • **PR 验证:**扫描仅在带有标签的 PR 上运行。强烈建议添加 full-sweep-fail-fast;仅当需要矩阵任务在失败后继续运行时才使用 full-sweep-enabled
  • **合并后:**PR 作者必须确保所有 GitHub Actions 任务通过。临时性失败通常可以通过重新运行恢复;参见重新运行失败任务的说明

@github-actions

github-actions Bot commented Sep 18, 2026

Copy link
Copy Markdown
Contributor

…isable prefix caching

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

@claude claude Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Beyond the inline finding, I checked whether the changelog's pr-link: TBD would fail CI on this PR: validate_perf_changelog.py's CLI entrypoint (main -> validate_matrix_compatible_change) never calls compare_entries/validate_added_pr_link — only run-sweep.yml's "Validate perf-changelog matrix" step invokes that path, and it skips the pr-link check entirely. So the placeholder doesn't block this PR's CI; it would still need to become a real link (or the XXX convention) via prepare_perf_changelog_merge.py before merge.

Extended reasoning...

A CONFIRMED finding was already surfaced for this PR (the EVAL_ONLY branch in the new script never calls append_lm_eval_summary, unlike the sibling RUN_EVAL path), so per policy this run cannot approve and the inline comment already signals a human should look. I independently traced the pr-link: TBD candidate that was flagged as a possible CI-failure: reading infx/workflows/validate_perf_changelog.py end-to-end, main() only calls validate_matrix_compatible_change, which calls validate_generated_configcompare_entries/validate_added_pr_link (the function that rejects non-canonical, non-placeholder pr-links) is never reached from that entrypoint, and run-sweep.yml invokes exactly that entrypoint. The pr-link validation only runs later, at merge time, via utils/prepare_perf_changelog_merge.py (invoked by utils/merge_with_reuse.sh, not wired into any GitHub Actions workflow), where TBD (not in PR_LINK_PLACEHOLDERS = {"XXX", ".../pull/XXX"}) would need to be corrected before/at merge but does not fail this PR's own CI checks. This is worth recording since it contradicts a plausible-looking claim in the PR's own conventions summary that the placeholder "fails the repo's CI changelog validator."

Comment on lines +75 to +76
if [[ "${EVAL_ONLY:-false}" == true ]]; then
run_eval --framework lm-eval --port "$PORT"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔴 EVAL_ONLY (golden-AL/accuracy) CI runs of this recipe will always fail after this merges, unlike every other fixed-seq-len *_mtp.sh script. The EVAL_ONLY branch calls run_eval --framework lm-eval --port "$PORT" but never calls append_lm_eval_summary, so results*.json/meta_env.json never get staged into the job's working directory from the lm-eval temp dir. Every sibling fixed-seq-len script (e.g. dsr1_fp8_b300.sh, qwen3.5_fp8_h100_mtp.sh) always pairs run_eval with append_lm_eval_summary. Fix: call append_lm_eval_summary right after run_eval in the EVAL_ONLY branch (line 76), matching every sibling recipe.

Extended reasoning...

run_eval() (benchmark_lib.sh:2892) only auto-calls append_lm_eval_summary when EVAL_ONLY=true AND scenario_is_agentic=1 (benchmark_lib.sh:3053). scenario_is_agentic comes from IS_AGENTIC, which benchmark-tmpl.yml:138 sets to '0' for scenario-type fixed-seq-len (this recipe's scenario). So for this script's EVAL_ONLY path, append_lm_eval_summary never runs, automatically or explicitly. run_lm_eval writes results into a mktemp dir stored in EVAL_RESULT_DIR (benchmark_lib.sh:2047,2114), not cwd; only append_lm_eval_summary -> stage_eval_artifacts (benchmark_lib.sh:2407) copies results*.json/meta_env.json into $(pwd). benchmark-tmpl.yml:310-316 then runs ls results*.json and exits 1 with 'Eval-only run failed: no results*.json files found' when EVAL_ONLY=true and none exist. Downstream, the 'Upload eval results' step (benchmark-tmpl.yml:428-444) uses if-no-files-found: error when inputs.eval-only, and validate_scores.py (line 448) has nothing to read. The author apparently copied this EVAL_ONLY/else structure from the agentic dsv41flash_fp4_h100_vllm_mtp.sh script, where the auto-append…

Verification: normal. The new script's EVAL_ONLY path stages no eval artifacts, so eval-only CI runs of this recipe fail the workflow's cwd result check. At qwen3.827b_bf16_h100_vllm_mtp.sh:75-96 the control flow is: `if [[ "${EVAL_ONLY:-false}" == true ]]; then run_eval --framework lm-eval --port "$PORT" (line 76) else run_benchmark_serving ...; if RUN_EVAL: run_eval + append_lm_eval_summary (94-95)…

@functionstackx

Copy link
Copy Markdown
Collaborator Author

/reuse-sweep-run 35359530151

Sync with origin/main after the green sweep run 35359530151; the reuse gate
authorizes that run on this head.

在绿色 sweep 运行 35359530151 之后与 origin/main 同步;reuse gate 在此 head 上授权该运行。

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

full-sweep-fail-fast qwen3.8-27b Qwen3.8-27B (bf16) vLLM TP1 DSpark 1k1k recipes and their eager variants

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

1 participant