Skip to content

[CI/Build] Install fa3-fwd 0.0.3 with the dev extra - #9393

Merged
Gaohan123 merged 3 commits into
vllm-project:mainfrom
NumberWan:ci/dev-extra-fa3-fwd
Oct 26, 2026
Merged

Gaohan123 merged 3 commits into
vllm-project:mainfrom
NumberWan:ci/dev-extra-fa3-fwd

Conversation

@NumberWan

@NumberWan NumberWan commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

Contributor intent (required human answers)

1. What outcome do you want to achieve?

Nightly CUDA CI should install fa3-fwd==0.0.3, so the optional Hopper dense bind from #9201 is present in the image.

2. What is the highest-leverage variable for that outcome?

Whether fa3-fwd is in the dev extra. docker/Dockerfile.ci already runs uv pip install -e ".[dev]". A normal pip install vllm-omni does not.

3. How will this work move that variable?

Pin fa3-fwd==0.0.3 in [project.optional-dependencies] dev. The next nightly image rebuild hashes pyproject.toml and installs the wheel. The runtime bind stays Hopper-only and still does nothing when the package is absent.

4. Whose customer or user needs does this address, and what are those needs?

H100 nightly Qwen-Image performance (#9092). After #9201 merged, those rows stayed on the slow varlen path because the image never installed fa3-fwd. A plain pip install vllm-omni stays unchanged.

Purpose

Before: #7735 removed fa3-fwd from the hard CUDA requirements. #9201 binds fa3_fwd_interface.flash_attn_func only when that package is already installed and the GPU is SM90. Nightly builds docker/Dockerfile.ci with .[dev] and never installs the wheel, so unmasked BF16 dense attention stays on vLLM varlen (fa_version=3).

After: .[dev] installs fa3-fwd==0.0.3. The CUDA nightly image, and the ROCm and XPU images that also install [dev], get the wheel. The bind still runs only on Hopper. requirements/cuda.txt is unchanged, so pip install vllm-omni does not gain a hard dependency.

No user-guide page says the dev extra excludes this package. The optional-bind contract in vllm_omni/diffusion/attention/backends/utils/fa.py is unchanged.

Test Plan

vLLM Version: 0.32.0

vLLM-Omni Commit: selection measured on main c0d14249a with and without the wheel. This PR only adds the pin (089740813).

Test Result

Local L20X (SM90), Qwen-Image 512x512_steps20, same main tree:

  • with fa3-fwd==0.0.3: latency 2.0638 s, path optional_fa3_fwd_dense
  • without the package: latency 3.4662 s, path vllm_varlen_emulation (fa_version=3)

This PR does not change that selection. It was not re-run on 089740813, and the nightly image was not rebuilt here.

pre-commit run --files pyproject.toml passed.

Not run: full pytest, a GPU repro of this commit, a nightly image build.

Nightly builds docker/Dockerfile.ci with .[dev]. vllm-project#9201 binds the Hopper
dense kernel only when fa3-fwd is already installed, and vllm-project#7735 removed it
from the hard CUDA requirements, so the H100 image stays on the slower
varlen path. Pin it in the dev extra so CI gets the package without making
a normal vllm-omni install depend on it.

Signed-off-by: NumberWan <wantszkin2003@gmail.com>
@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ⚠️ Failed 2026-10-26T06:02:21.238029Z
We couldn’t complete this review. Comment @codex review to try again.
0897408 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex usage limits have been reached for code reviews. Please check with the admins of this repo to increase the limits by adding credits.
Credits must be used to enable repository wide code reviews.

@NumberWan

Copy link
Copy Markdown
Contributor Author

@yenuo26 PTAL

@vllm-omni-review-bot

Copy link
Copy Markdown

This PR was classified as CI work.

CI owner: @yenuo26 @Gaohan123 @hsliuustc0106

Routing: @yenuo26 via CI owner; @Gaohan123 via CODEOWNERS; @hsliuustc0106 via CODEOWNERS

@NumberWan, please review your own changes and leave a short self-review comment describing what you checked. PRs without author self-review may not be assigned a reviewer.

Please take a look when you have a chance. If you would like an automated review, mention @vllm-omni-review-bot in a comment.

The nightly-test label only keeps diffusion_qwen_image_perf when that
job's source files change. pyproject.toml is not one of them, so the
perf job would be skipped. Record the Hopper dense-kernel note on the
perf JSON so the job is selected.

Signed-off-by: NumberWan <wantszkin2003@gmail.com>
@yenuo26 yenuo26 added nightly-test label to trigger buildkite nightly test CI cuda-test Used to trigger vllm-omni cuda CI separately. labels Oct 26, 2026
@NumberWan

Copy link
Copy Markdown
Contributor Author

H100 single-GPU Qwen-Image results from Buildkite #18115. The image build installed fa3-fwd==0.0.3. latency_mean versus the H100 baselines in tests/dfx/perf/tests/test_qwen_image_vllm_omni.json:

Case This run Baseline Delta
single 512 2.3215 s 2.4065 s -3.5%
single 1536 23.7729 s 23.5991 s +0.7%
step 512 2.3917 s 2.3953 s -0.2%
step 1536 23.8407 s 23.5768 s +1.1%
step 512 high-concurrency c=1 n=20 2.3182 s 2.5466 s -9.0%
same case c=2 / c=4 / c=8 2.7953 / 5.7926 / 9.6671 s 3.0235 / 6.3884 / 9.9601 s -7.5% / -9.3% / -2.9%

The c=1 row that was 4.088 s vs 2.547 s (+60.5%) on the earlier nightly is 2.318 s here. The 4-GPU job also passed (9m 35s); those rows are not in this table.

@yenuo26 yenuo26 removed nightly-test label to trigger buildkite nightly test CI cuda-test Used to trigger vllm-omni cuda CI separately. labels Oct 26, 2026
@yenuo26 yenuo26 added the ready label to trigger buildkite CI label Oct 26, 2026
@yenuo26 yenuo26 added this to the v0.32.0 milestone Oct 26, 2026
@yenuo26
yenuo26 enabled auto-merge (squash) October 26, 2026 08:35

@hsliuustc0106 hsliuustc0106 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

  • @NumberWan, please make the Qwen-Image performance evidence comparable to 8a08025f9af29bb82ade674e91d9c70739b837e8: provide the exact command, H100/software/model configuration, warmup/repetition counts and raw results for matched runs with and without fa3-fwd==0.0.3 on the same revision (or pinned base/head environments differing only by this dependency). Include the selected attention path and an output-parity/quality guard with its tolerance. The #18115 table versus stored baseline numbers and the earlier c0d14249a smoke do not establish that matched comparison. Acceptance: the restored dense-path timing and output correctness are reproducible under the same workload. If only packaging/install behavior is being claimed, explicitly bound the conclusion accordingly rather than treating the timing table as current-head validation.

@Gaohan123 Gaohan123 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

LGTM

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ready label to trigger buildkite CI

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants