Skip to content

[rebase] Sync with upstream/main (2026-07-20) - #28

Closed
oglok wants to merge 338 commits into
mainfrom
rebase/upstream-sync-2026-07-20
Closed

oglok wants to merge 338 commits into
mainfrom
rebase/upstream-sync-2026-07-20

Conversation

@oglok

@oglok oglok commented Jul 21, 2026

Copy link
Copy Markdown

Summary

Rebases nm-vllm-omni-ent onto the latest upstream/main (e24bddfb, 283 commits ahead of our fork point b1a4b08a from 2026-06-15).

What changed

  • vLLM version bumped to v0.25.1 — upstream now requires vLLM v0.25.0+ (PR docs: bump vLLM version references to v0.25.0 for the rebase vllm-project/vllm-omni#5043). Uses nm-cicd wheel build 29766140891 from sync-v0.25.1 branch.
  • 3 carries dropped (merged upstream):
    • endpoint rejection (#4762) — merged Jul 8
    • hack for single stage q3omni (PR #3760) — merged Jun 24
    • fix HTTP status codes for audio voice (#3969) — merged Jun 22
  • 3 additional carries no longer needed (upstream resolved the issues differently):
  • 55 carry commits preserved — all build/infra, smoke tests, bugfix validators, and audio/text merge carries
  • 4 conflicts resolved during cherry-pick:
    • d1c3e9a1 (audio.format + modality): kept modality validation, dropped redundant audio format code (upstream handles via _resolve_audio_format)
    • 25c01b59 (image validators): used upstream's updated layers range (2,10)
    • 87318a70 (audio format constants): skipped — empty after resolution
    • 0d426169 (test helpers): resolved inlined helpers removal against upstream's updated version

Deferred

3 carries from the v0.21.0 branch (lost during v0.23.0 sync) are deferred to a follow-up PR:

  • Drop fa3-fwd from requirements
  • Relax dependency on av
  • WIP: Create an exclude list for packages

Open upstream PRs still carried

Carry Upstream PR Status
Merge text+audio into single choice PR vllm-project#4450 closed, needs new PR Carrying
Validate TTS speech, batch, voice upload PR vllm-project#4749 Open
Add modalities and logprobs validation PR vllm-project#4743 Open
Add audio/generate validators PR vllm-project#4741 Open
Add omni/sleep+wakeup validators PR vllm-project#4740 Open
Reject empty/whitespace image prompts PR vllm-project#4723 Open
Fix unsupported modality empty choices PR vllm-project#4720 Open

Test plan

  • Verify midstream build completes with vLLM v0.25.1 wheel
  • Run smoke tests (Qwen3-Omni, FLUX, Voxtral TTS)
  • Verify python -c "import vllm_omni" works
  • Confirm dropped carries are not duplicated (no double-applied validators)
  • Run unit tests: pytest tests/entrypoints/openai_api/test_audio_format.py tests/entrypoints/openai_api/test_modality_validation.py tests/entrypoints/test_stream_finish_reason.py

lishunyang12 and others added 30 commits June 24, 2026 07:04
…emory, timestamps, max_pixels) + recipe updates (vllm-project#4623)

Signed-off-by: lishunyang12 <125541396+lishunyang12@users.noreply.github.com>
Signed-off-by: Maciej Bala <mbala@nvidia.com>
Co-authored-by: Hongsheng Liu <liuhongsheng4@huawei.com>
…llm-project#1673)

Signed-off-by: rongfu.leng <lenronfu@gmail.com>
Co-authored-by: Gao Han <hgaoaf@connect.ust.hk>
Signed-off-by: amy-why-3459 <wuhaiyan17@huawei.com>
… Registry Eager (vllm-project#3760)

Signed-off-by: Alex Brooks <albrooks@redhat.com>
Signed-off-by: TaffyOfficial <2324465096@qq.com>
Co-authored-by: TaffyOfficial <2324465096@qq.com>
Co-authored-by: Gao Han <hgaoaf@connect.ust.hk>
Signed-off-by: Mr.Dong <1042542469@qq.com>
Signed-off-by: Yueqian Lin <linyueqian@outlook.com>
Co-authored-by: Mr.Dong <1042542469@qq.com>
Co-authored-by: Yueqian Lin <70319226+linyueqian@users.noreply.github.com>
Co-authored-by: Yueqian Lin <linyueqian@outlook.com>
Signed-off-by: Yuanheng <jonathan.zhaoyh@gmail.com>
…ras (vllm-project#4648)

Signed-off-by: ForestWisdom <zszhang01@gmail.com>
vllm-project#4148)

Signed-off-by: zengchuang <zengchuang3@huawei.com>
Co-authored-by: Hongsheng Liu <liuhongsheng4@huawei.com>
…SRF (vllm-project#2565)

Signed-off-by: Nick Cao <ncao@redhat.com>
Co-authored-by: Hongsheng Liu <liuhongsheng4@huawei.com>
Signed-off-by: bjf-frz <frz123db@gmail.com>
…t#4667)

Signed-off-by: Ianniu <985683179yzy@gmail.com>
Signed-off-by: david6666666 <530634352@qq.com>
Co-authored-by: Ianniu <985683179yzy@gmail.com>
…liability/stability test for VoxCPM2 (vllm-project#4600)

Signed-off-by: zhumingjue <zhumingjue@huawei.com>
Signed-off-by: [Your Name] [Your Email]
Signed-off-by: menjiantong <menjiantong@foxmail.com>
Co-authored-by: menjiantong <menjiantong@foxmail.com>
Co-authored-by: Didan Deng <33117903+wtomin@users.noreply.github.com>
…-project#3956)

Signed-off-by: Daniel Socek <daniel.socek@intel.com>
Co-authored-by: Didan Deng <33117903+wtomin@users.noreply.github.com>
Signed-off-by: amy-why-3459 <wuhaiyan17@huawei.com>
Signed-off-by: R2-Y <ruiruyang2@gmail.com>
Signed-off-by: gcanlin <canlinguosdu@gmail.com>
Signed-off-by: Acerak01-fy <wfy2003324@163.com>
Signed-off-by: zwhzzz0821 <2831474076@qq.com>
Signed-off-by: Wang  fuyin <wfy2003324@163.com>
Co-authored-by: zwhzzz0821 <2831474076@qq.com>
Co-authored-by: Hongsheng Liu <liuhongsheng4@huawei.com>
…device (vllm-project#4712)

Signed-off-by: Weiming Liao <liaowm5@gmail.com>
Signed-off-by: z00806815 <zhuhonghan@huawei.com>
Signed-off-by: zhuhh97 <zhuhonghan@huawei.com>
Signed-off-by: dph97 <nenbaying@163.com>
Signed-off-by: zhh <zhh@users.noreply.github.com>
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
Co-authored-by: zhuhh97 <zhuhh97@users.noreply.github.com>
…#4341)

Signed-off-by: LHXuuu <xulianhao.xlh@antgroup.com>
Signed-off-by: Yuanheng Zhao <jonathan.zhaoyh@gmail.com>
Signed-off-by: Hongsheng Liu <liuhongsheng4@huawei.com>
Co-authored-by: Yuanheng Zhao <jonathan.zhaoyh@gmail.com>
Co-authored-by: Yuanheng Zhao <54058983+yuanheng-zhao@users.noreply.github.com>
Co-authored-by: Hongsheng Liu <liuhongsheng4@huawei.com>
…llm-project#4192)

Signed-off-by: Gael Glorian <gael.glorian@gmail.com>
Signed-off-by: Ioannis Lamprou <yiannis.lamprou@gmail.com>
Signed-off-by: Zhen Zhang <zhen.zhang.fr@huawei.com>
Co-authored-by: Ioannis Lamprou <yiannis.lamprou@gmail.com>
Co-authored-by: Zhen Zhang <zhen.zhang.fr@huawei.com>
…llm-project#3927)

Signed-off-by: Mengkejiergeli Ba <mengkejiergeli.ba@intel.com>
Co-authored-by: Hongsheng Liu <liuhongsheng4@huawei.com>
…ageConfigFactory (vllm-project#4729)

Signed-off-by: Yuanheng Zhao <jonathan.zhaoyh@gmail.com>
dougbtv and others added 25 commits July 21, 2026 10:38
Two fixes:
1. Pass bake_targets="cuda cuda-develsdk" to build-image.yml so both
   image variants are produced in a single bake run. Previously only
   the cuda target was built, causing ImagePullBackOff for all
   develsdk smoke tests.

2. Replace createdAt-based polling with vllm_image input matching via
   the GitHub API. When 14 matrix jobs trigger test runs within the
   same second, the old sort_by(.createdAt)|first approach grabbed
   arbitrary runs — a develsdk job could latch onto a cuda run (or
   vice versa) and falsely report success.

Fixes: INFERENG-8005

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Include the cuda-test image variant in full-chain builds so upstream
pytest tests can run against the built image.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Use the new omni validation type (nm-cicd PR vllm-project#576) which tests
multi-modal input/output: text→text, text→text+audio, image→text,
and streaming — instead of the basic single-request chat validation.
The H100 dind runner pool is broken (XFS inode overflow on the only
active node). Use k8s-a100-util instead, which supports image builds
via the Kubernetes buildx driver (nm-cicd PR vllm-project#537).

The dind label can still be used via the build_label_image input
override if needed.

Ref: INFERENG-8339

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Focus on testing models of interest

Signed-off-by: Clodagh Walsh <clodaghwalsh17@gmail.com>
…m related artifacts together

Signed-off-by: Clodagh Walsh <clodaghwalsh17@gmail.com>
Signed-off-by: Clodagh Walsh <clodaghwalsh17@gmail.com>
Signed-off-by: Clodagh Walsh <clodaghwalsh17@gmail.com>
Signed-off-by: Clodagh Walsh <clodaghwalsh17@gmail.com>
…el of interest

Signed-off-by: Clodagh Walsh <clodaghwalsh17@gmail.com>
Signed-off-by: Clodagh Walsh <clodaghwalsh17@gmail.com>
…turning empty choices

Cherry-pick of upstream vllm-project/vllm-omni PRs vllm-project#4718 and vllm-project#4720,
adapted for nm-vllm-omni-ent.

- Wire up request audio.format to existing encoding infrastructure
  instead of hardcoding WAV. Validate format against supported set.
- Remove AAC from supported formats (unsupported by bundled libsndfile).
- Validate requested output modalities against engine capabilities
  upfront, returning 400 for unsupported modalities instead of silently
  returning empty choices with HTTP 200.
- Validate that modalities is a list of strings.

Closes vllm-project#4716
Closes vllm-project#4719

Signed-off-by: Ricardo Noriega De Soto <rnoriega@redhat.com>
…tions

Add a field_validator for the prompt field on ImageGenerationRequest
that rejects empty and whitespace-only strings with a 400 error.
Previously, empty strings passed Pydantic validation and reached the
diffusion engine, which would generate an image from nothing instead
of returning an error.

Unskip the prompt_empty and prompt_whitespace_only test cases that
were blocked on this fix.

Partial fix for vllm-project#3649

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ors for /v1/images/generations

Addresses additional validation gaps from issue vllm-project#3649:
- Add seed range constraint (0 to 2^32-1)
- Add output_format validator restricting to png/jpeg/webp
- Add negative_prompt/system_prompt empty string rejection (Nick's review feedback)
- Unskip seed_negative, seed_above_uint32, output_format_invalid tests

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…/wakeup requests

Reject empty stage_ids lists (min_length=1) and negative sleep levels
(ge=0) at the entrypoint level. Unskip sleep_empty_stage_ids,
sleep_negative_level, and wakeup_empty_stage_ids tests.

Partial fix for vllm-project#3649.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Shaun Walsh <shaunwalsh24@gmail.com>
…erence_steps validators for /v1/audio/generate

- Reject empty/whitespace input prompts
- Constrain audio_length to gt=0
- Constrain guidance_scale to gt=0, le=1000
- Constrain num_inference_steps to ge=1, le=1000
- Unskip all 8 issue vllm-project#3649 tests and update error expectations
  to match entrypoint-level Pydantic validation

Partial fix for vllm-project#3649.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Shaun Walsh <shaunwalsh24@gmail.com>
…completions

ChatCompletionRequest is imported from upstream vllm and cannot have
Pydantic validators added directly. Validate at the handler level by
checking the raw JSON body before dispatch:
- Reject modalities containing non-string elements (e.g. [123])
- Reject logprobs with non-boolean values (Pydantic v2 coerces "yes"
  to True instead of returning 400)

Unskip modalities_list_bad_element and logprobs_wrong_type tests.

Partial fix for vllm-project#3649.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Shaun Walsh <shaunwalsh24@gmail.com>
vllm-project#3649)

Add missing request validators for /v1/audio/speech, /v1/audio/speech/batch,
and /v1/audio/voices endpoints that previously allowed invalid inputs to reach
the engine, causing garbage output, 500s, or subprocess crashes.

Pydantic-level validators (protocol/audio.py):
- OpenAICreateSpeechRequest: reject empty/whitespace voice
- SpeechBatchItem: reject empty input, empty voice, overlong instructions,
  out-of-range max_new_tokens, invalid ref_audio URI scheme
- BatchSpeechRequest: same field validators as SpeechBatchItem

Serving-level validators (serving_speech.py):
- _pre_validate_batch: validate voice against supported speakers (CustomVoice
  task only), empty/unknown language, whitespace-only ref_text for Base task —
  raises ValueError for HTTP 400 instead of embedding errors in per-item results
- upload_voice: validate consent (empty, path separators, length), ref_text
  length, speaker_description length

Unskips 26 test cases in test_invalid_audio_speech.py.

Upstream: vllm-project#4749

Signed-off-by: Shaun Walsh <shawalsh@redhat.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Shaun Walsh <shaunwalsh24@gmail.com>
Sync with upstream PR vllm-project#4720 review feedback: single-stage diffusion
engines that advertise output_modalities=["image"] must also accept
modalities=["text"] for img2text/text2text. Add regression tests for
modality validation.

Signed-off-by: Ricardo Noriega De Soto <rnoriega@redhat.com>
The upstream TTS commit removed the definition since upstream has no
remaining references. The nm fork has 10 additional voice upload test
params that still use this skip marker. Restores the constant to fix
Ruff F821.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Shaun Walsh <shaunwalsh24@gmail.com>
ChatCompletionRequest moved to vllm.entrypoints.openai.chat_completion.protocol
ErrorResponse moved to vllm.entrypoints.openai.engine.protocol

Signed-off-by: Ricardo Noriega De Soto <rnoriega@redhat.com>
…t completions

Signed-off-by: vraiti <vraiti@redhat.com>
Signed-off-by: vraiti <vraiti@redhat.com>
@oglok
oglok force-pushed the rebase/upstream-sync-2026-07-20 branch from 6d5828a to b5a5d8c Compare July 21, 2026 09:20

@dougbtv dougbtv 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.

Reviewed the midstream-specific files (Dockerfiles, midstream-build.yml, docker-bake.hcl, carry commits). CUDA build path looks clean — workflow chains correctly, bake config is consistent, dropped carries are well-justified, and the 55 preserved carries are all present.

Found a few issues in the ROCm/CPU Dockerfiles (missing predownload_tiktoken_tokenizers.py, wrong package names, glob mismatches) but those aren't on the critical path — ROCm/CPU images aren't actively built yet. Tracked separately.

Post-merge action items filed in INFERENG-9317: verify v0.25.1 wheel, bump FlashInfer pins, add fa3-fwd/av constraints in nm-cicd, full smoke matrix run.

LGTM for merge.

@oglok

oglok commented Jul 22, 2026

Copy link
Copy Markdown
Author

Superseded by sync-based PR (merge strategy instead of force-push)

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.