Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
98 changes: 60 additions & 38 deletions .github/codeowner-signoff-verify-prompt.md
Original file line number Diff line number Diff line change
Expand Up @@ -123,63 +123,85 @@ not merely that the job is green:
the same inference-engine image as this PR's config. FAIL if evals are
skipped, failed, empty, below bar, or use a different image. Say exactly which condition applies.

## Check 3 — Recipe linked, MERGED, AND complete (SINGLE-NODE recipes only)
APPLICABILITY. Read this first. The recipe-link requirement covers SINGLE-NODE
recipes only, because the official upstream recipe sources (vLLM recipes, SGLang
cookbook) publish single-node serve commands. Disaggregated / multi-node
submissions have NO recipe-link requirement. If the PR's benchmark changes are
exclusively multi-node/disagg, with files under `inferencex-e2e/benchmarks/multi_node/**` (including
`srt-slurm-recipes/**`), and/or master-config entries with `multinode: true` or
`disagg: true`, and/or disagg frameworks (`dynamo-trt`, `dynamo-sglang`,
`sglang-disagg`, vLLM disagg, ATOM/ATOMesh disagg), report this check as
`N/A — disaggregated/multi-node submission; the recipe-link requirement applies to
single-node recipes only` and DO NOT fail it. A sign-off note like "this is a
disagg submission, no recipe update required" is a legitimate statement of that
fact, not a violation. If the PR touches BOTH single-node and multi-node recipes,
apply (a)/(b)/(c) below to the single-node portion only.

The InferenceX "recipe" for this PR = the files it changes under
`inferencex-e2e/benchmarks/single_node/**` plus its entry in `inferencex-e2e/configs/*-master.yaml`. The merge
standard is: the community must be able to reproduce this benchmark from merged,
public upstream documentation.
## Check 3 — Production-useful recipe linked, MERGED, AND complete
APPLICABILITY. Read this first. The deciding factor is whether a serving setting
is useful in a realistic production deployment. The upstream recipe requirement
covers every affected vLLM/SGLang production serving configuration: single-node
agg, multi-node agg, single-node disagg, and multi-node disagg. Dynamo is a
deployment layer; `dynamo-vllm` needs vLLM recipe coverage and `dynamo-sglang`
needs SGLang cookbook coverage, just like direct engine deployments and
`sglang-disagg`. Node count, `multinode: true`, `disagg: true`, benchmark paths,
or Dynamo use MUST NOT be used as an exemption. A sign-off note like "this is a
disagg submission, no recipe update required" does not satisfy this criterion.

Inspect the affected master-config entries under `inferencex-e2e/configs/*-master.yaml`
and their effective recipes, scripts, and inherited settings under BOTH
`inferencex-e2e/benchmarks/single_node/**` and
`inferencex-e2e/benchmarks/multi_node/**`, including `srt-slurm-recipes/**`.
In a mixed submission, assess every affected production serving variant. Several
variants may share one upstream page/PR if it covers each; sharing a dashboard
curve does not establish recipe coverage. An agg-only example does not cover
disagg prefill/decode/frontend settings.

Report N/A only when no vLLM/SGLang production serving configuration is affected
(for example, documentation-only or InferenceX-only harness/collection changes).
State the inspected scope and why it is N/A. Existing merged/published coverage
can satisfy this check without a new upstream PR. The merge standard is that
production users can reproduce the serving configuration from merged, public
upstream documentation, without needing InferenceX benchmark infrastructure.
- (a) LINK PRESENT: The sign-off's "Additional detail section" MUST contain a link to
the corresponding merged recipe PR in
`https://github.com/vllm-project/recipes` or
`https://github.com/sgl-project/sglang` (cookbook under `docs_new`), or the
`https://github.com/sgl-project/sglang` (cookbook under `docs/cookbook/`), or the
published recipe page (`https://recipes.vllm.ai/` or
`https://docs.sglang.io/cookbook/...`). If no such link is present, FAIL.
New SGLang cookbook PRs belong in `sgl-project/sglang`, under `docs/cookbook/`;
the published site deploys from that repository's `main` branch and `docs/`
directory. The cookbook copy in `sgl-project/sgl-docs` is not the current
deployment source, and `sgl-project/sgl-cookbook` is archived. For legacy
merged PR links from those copies, require a current published cookbook page
covering the configuration; a historical merge alone does not establish
current coverage.
- (b) UPSTREAM CHANGE MERGED: For a linked GitHub PR, query the upstream repository
directly (for example, `gh pr view <URL> --json state,mergedAt,url`) and require
`state: MERGED` with a non-null `mergedAt`. An open PR, draft PR, closed-unmerged
PR, bare branch, or bare commit does NOT pass. A published recipe/cookbook page
containing the required recipe counts as merged upstream documentation. If the
linked artifact's merge/publication status cannot be verified, FAIL. Never infer
that it merged from an approval, a green check, or the sign-off author's claim.
- (c) MAJOR SERVER ARGS MATCH: Fetch the merged or published recipe with the `fetch`
- (c) PRODUCTION-USEFUL SETTINGS AND COMMANDS MATCH: Fetch the merged or published recipe with the `fetch`
MCP tool or WebFetch. For a merged recipe PR, read its diff via `gh pr diff` against
that repo if accessible. Compare it to this PR's launch command. The recipe
only needs to match the MAJOR, deployment-defining server args, not every flag.
It explicitly does not need to match knobs specific to InferenceX benchmark/harness
tuning.
MAJOR (must match because these define the model, parallelism, precision, and which
kernels run, determining the perf profile):
that repo if accessible. Compare it to this PR's effective serving configuration,
including flags, environment variables, and launch commands for every affected
role (aggregated worker, prefill, decode, and router/frontend). Upstream recipes
may include Dynamo installation, router/frontend commands, and engine launch
commands. A link to an InferenceX/srt-slurm config alone is not sufficient.
PRODUCTION-USEFUL (must match, including optimizations useful in realistic
deployments even when the submission also uses them for benchmark tuning):
- model / model-path, hardware/SKU
- parallelism: TP / EP / DP / PP and DP-attention flags
(`--enable-dp-attention`, `--enable-dp-lm-head`, etc.)
- quantization and kv-cache dtype
- kernel-selection backends: `--attention-backend`, `--moe-runner-backend`,
`--enable-flashinfer-allreduce-fusion` and similar
- other flags that materially change the served model or its throughput
INFERENCEX-SPECIFIC (do NOT require a match, and list as informational only, never a
failure): per-lane sweep tuning and harness plumbing such as
`--scheduler-recv-interval`, `--chunked-prefill-size`, `--disable-piecewise-cuda-graph`,
`SGLANG_RADIX_FORCE_MISS` and similar env toggles, concurrency / sequence-length
sweep ranges, ports, result filenames, and image tag/version.
FAIL if a MAJOR arg in this PR is missing from (or contradicts) the merged/published
recipe. List exactly those. Treat the InferenceX-specific diffs as expected and
mention them only as a brief informational note, not as blockers. If a flag's effect
is equivalent to a recipe default (e.g. quantization auto-detected from an FP4
model), say so and do not count it against the recipe.
- scheduling, cache/offload, chunked-prefill, and graph/eager settings when
useful in production, including their environment variables
- prefill/decode worker topology, transport settings, and router/frontend
settings and commands needed to run the deployment
- other flags or environment variables useful in production that change
serving behavior or performance
INFERENCEX-ONLY (do NOT require upstream coverage): harness plumbing, result
collection, synthetic benchmark controls, and concurrency/sequence-length
sweep ranges. Do not classify serving flags as benchmark-only by name or by
their presence in a benchmark file; inspect their actual effect. Require the
sign-off to explain exclusions in its additional detail section.
FAIL if a production-useful setting or required role's launch command is missing
from (or contradicts) the merged/published recipe. List the affected variant,
role, and missing setting/command. Treat justified InferenceX-only differences
as informational. A flag need not be repeated when equivalent behavior follows
from a documented setting or framework default (e.g. quantization auto-detected
from an FP4 model); verify that behavior against the pinned upstream version
and require the reviewer to record the evidence.
- Note: a bare "recipes are already similar to the official ones" claim WITHOUT a
link to merged/published upstream documentation does not pass this workflow's
standard.
Expand Down
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@ A friendly reminder. Please follow the latest checklist template **correctly**:
- The sign-off can be posted as a regular conversation comment, a review summary, or an inline review comment. All three trigger verification.
- Submit a new checklist when the PR is open and ready. Editing that checklist triggers verification again. Pushes, reopening, and leaving draft do not trigger verification. If a review event was missed during a merge conflict, retry after resolving it using manual dispatch.
- Starting Claude requires an eligible human actor with repository write access.
- Fill in the "Additional detail section" with the links the checklist asks for (validation/eval workflow runs, the corresponding [vLLM recipe](https://github.com/vllm-project/recipes) / [SGLang cookbook](https://github.com/sgl-project/sglang/tree/main/docs_new) PR, and any exception reasoning).
- Fill in the "Additional detail section" with the links the checklist asks for (validation/eval workflow runs, the corresponding [vLLM recipe](https://github.com/vllm-project/recipes) / [SGLang cookbook](https://github.com/sgl-project/sglang/tree/main/docs/cookbook) PR, and any exception reasoning). Submit new SGLang cookbook PRs to `sgl-project/sglang`, under `docs/cookbook/`, which supplies the published site. The cookbook copy in `sgl-project/sgl-docs` is not the current deployment source; `sgl-project/sgl-cookbook` is archived.

Once the sign-off is posted, CI independently re-verifies the review checklist claims, including CODEOWNER status, a green sweep and evals on a commit in the PR, the linked recipe, the reuse command, use of the latest checklist template, upstream [vLLM](https://hub.docker.com/u/vllm)/[SGLang](https://hub.docker.com/u/lmsysorg) images, no architecture-changing benchmark hacks, chat-template usage for speculative decoding, and unchanged draft-model/head weights and precision. It creates one verdict comment for that sign-off resource, including the SHA actually assessed. Editing the same checklist updates only its associated verdict. A replacement or additional checklist receives a separate verdict, and verdicts associated with older sign-offs remain unchanged. Failing criteria stay visible; passing and N/A criteria appear together in a collapsed section. Checkmarks are not taken on trust, so please only check items you have actually verified.

Expand Down
2 changes: 1 addition & 1 deletion CONTRIBUTING_zh.md
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ CODEOWNER 自动验证目前仅供审阅参考。工作流会核验新提交及
- 签署可以以普通会话评论、review 总结或行内 review 评论的形式发布。这三种方式都会触发验证。
- 请在 PR 处于打开且非草稿状态时提交新清单。编辑该清单会再次触发验证;推送、重新打开或退出草稿状态不会触发验证。如果合并冲突期间遗漏了 Review 事件,请在解决冲突后手动分发工作流来重试。
- 启动 Claude 要求触发者为具有合格仓库写权限的人类用户。
- 请在 "Additional detail section" 中填写清单要求的链接(验证/评测工作流运行、对应的 [vLLM recipe](https://github.com/vllm-project/recipes) / [SGLang cookbook](https://github.com/sgl-project/sglang/tree/main/docs_new) PR,以及任何例外理由)。
- 请在 "Additional detail section" 中填写清单要求的链接(验证/评测工作流运行、对应的 [vLLM recipe](https://github.com/vllm-project/recipes) / [SGLang cookbook](https://github.com/sgl-project/sglang/tree/main/docs/cookbook) PR,以及任何例外理由)。新的 SGLang cookbook PR 应提交到 `sgl-project/sglang` 的 `docs/cookbook/` 下,该目录是已发布网站的来源。`sgl-project/sgl-docs` 中的 cookbook 副本并非当前部署来源;`sgl-project/sgl-cookbook` 已归档。

签署发布后,CI 会独立复核审阅清单中的各项声明,包括 CODEOWNER 身份、PR 内 commit 上的全绿 sweep 与 evals、所链接的 recipe、复用命令、是否使用最新清单模板、上游 [vLLM](https://hub.docker.com/u/vllm)/[SGLang](https://hub.docker.com/u/lmsysorg) 镜像、没有更改模型架构的基准测试 hack、投机解码是否使用 chat template,以及 draft 模型和 draft head 的权重与精度是否保持不变。CI 会为该签署资源创建一条裁定评论,并注明实际评估的 SHA。编辑同一清单时只更新与其关联的裁定。替代清单或新增清单会获得独立裁定;与旧签署关联的裁定保持不变。未通过的条目直接显示;已通过和不适用(N/A)的条目统一放入折叠区域。勾选项不会被无条件信任,请只勾选你确实核实过的条目。

Expand Down
Loading