Skip to content

[Bugfix] Restore MiniCPM duplex Seed-TTS startup - #8152

Merged
Gaohan123 merged 2 commits into
vllm-project:mainfrom
NolenLiang:fix/minicpm-native-text-seed-8138
Sep 25, 2026
Merged

Gaohan123 merged 2 commits into
vllm-project:mainfrom
NolenLiang:fix/minicpm-native-text-seed-8138

Conversation

@NolenLiang

@NolenLiang NolenLiang commented Sep 25, 2026 •

Copy link
Copy Markdown
Contributor

Purpose

Fixes #8138. Since #7974, native duplex Seed-TTS can remain listening without starting its first response. Mark nonempty initial text as pending input during session initialization; existing generation logic consumes it while preserving forced listening and post-response silence.

Keep #7974's discarded-lookahead guard. Source inspection and synthetic-logits replay indicate that earlier discarded sampling could clear current_turn_ended, masking the missing seed initialization. No historical GPU token/state trace was captured.

Test Plan

vLLM Version: 0.30.0.

vLLM-Omni Commit: 6fb2b36 before/after the patch; b308e19 + patch; pristine controls d486bf0 and 7a8d956.

One GB200; openbmb/MiniCPM-o-4_5 at 503e754, zhaochenyang20/seed-tts-eval at 8f5e1aa. Retain the original deployment, four English targets, two warmups, assertions and timeouts; model/dataset paths point to local copies. CI uses H100. Benchmark command from CI, followed by focused checks:

export BENCHMARK_DIR=tests/dfx/perf/results
pytest -s -v tests/dfx/perf/scripts/run_benchmark.py \
  --test-config-file tests/dfx/perf/tests/test_minicpmo_4_5_duplex_seed_tts.json \
  -m "H100 and B200 and cards_1"
pytest -q tests/worker/test_native_duplex_hooks.py
pytest -s -v tests/e2e/online_serving/test_minicpmo_4_5_duplex.py \
  -k "seeded or sequential_sessions_are_independent" \
  -m "H100 and cards_1" --run-level advanced_model

Test Result

  • Original benchmark: d486bf0 passes; its child 7a8d956 and issue revision 6fb2b36 fail in both warmups and the measured request. 6fb2b36 + patch completes 1/1 request and four audio targets.
  • Eight new regression cases: baseline 3 fail, 5 pass; patched hooks test file 91 pass, including on b308e19. Coverage includes empty/missing text, forced listening and post-response silence. Changed-file pre-commit checks pass with the repository-pinned tools.
  • Existing seeded E2E: 5 pass, 1 fail. The remaining test_duplex_seeded_text_to_text_needs_no_reference_voice case was also run in isolation:
Source Isolated no-reference text result
d486bf0 Pass
7a8d956 Fail: 12 listen events, no response.done
b308e19 + patch Same failure

The controlled comparisons use the same GPU, runtime, model and inputs; comparability checks pass. This confirms the text-only regression at #7974, but the patch leaves it unresolved. Its remaining internal cause is not isolated. The demonstrated repair is Seed-TTS startup, not the entire Duplex Test step or #8123.

Nightly 16046 already passed Seed-TTS on vLLM 0.30.0 before #7974; merge build 16048 used the same version and failed all five seeded cases. This boundary is reproduced locally above.

AI assistance: Codex assisted with testing and drafting; Claude performed an independent review.

Mark nonempty initial user text as pending input when preparing a native duplex session. Preserve the accepted-terminator guard introduced by vllm-project#7974 and the existing input-consumption lifecycle.

Add regression coverage for seeded and empty input, explicit forced listening, and silence after completion.

Signed-off-by: Nolen Liang <nliang@nvidia.com>
Signed-off-by: bcsdhjew <nliang@nvidia.com>
@vllm-omni-review-bot

Copy link
Copy Markdown

This PR appears to belong to: docs/design/module/model_integration.md, docs/design/module/ar_runtime.md.

Module owners: @tzhouam @fake0fan @Gaohan123

Routing: @tzhouam via module of the changed files, CODEOWNERS; @fake0fan via module of the changed files; @Gaohan123 via module of the changed files

@NolenLiang, 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.

@vllm-omni-review-bot

vllm-omni-review-bot commented Sep 25, 2026 •

Copy link
Copy Markdown

Omni ReviewBot triage note

Automated triage of commit c0cc95db19a0 produced:

  • Priority: high. Prompt maintainer attention is suggested.

These are automated triage suggestions only — the final decision belongs to the maintainers.

@NolenLiang

NolenLiang commented Sep 25, 2026 •

Copy link
Copy Markdown
Contributor Author

Self review: Passed multiple repeated experiments, minimal fix is done.

@Gaohan123 Gaohan123 added this to the v0.30.0 milestone Sep 25, 2026

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

@Gaohan123 Gaohan123 added the ready label to trigger buildkite CI label Sep 25, 2026
@Gaohan123
Gaohan123 enabled auto-merge (squash) September 25, 2026 14:28
@Gaohan123
Gaohan123 merged commit fe9e22d into vllm-project:main Sep 25, 2026
6 of 9 checks passed
nagisa-kunhah pushed a commit to nagisa-kunhah/vllm-omni that referenced this pull request Oct 3, 2026
Signed-off-by: Nolen Liang <nliang@nvidia.com>
Signed-off-by: bcsdhjew <nliang@nvidia.com>
Signed-off-by: nagisa-kun <1434936049@qq.com>
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.

[Bug]: Nightly CI, MiniCPM-o 4.5 Duplex Seed-TTS Perf Test - turn 0 never starts after 30.2s of silence

3 participants