Repository navigation
[Bugfix] Skip listen-terminated MiniCPM-o units in Talker handoff - #8220
natureofnature wants to merge 2 commits into
Conversation
Signed-off-by: natureofnature <wzliu@connect.hku.hk>
|
This PR appears to belong to: docs/design/module/input_output_modality_contracts.md, docs/design/module/model_integration.md, docs/design/module/ar_runtime.md. Module owners: @gcanlin @tzhouam @alex-jw-brooks Routing: @gcanlin via module of the changed files, CODEOWNERS; @tzhouam via module of the changed files, CODEOWNERS; @alex-jw-brooks via module of the changed files @natureofnature, 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. |
Omni ReviewBot triage noteAutomated triage of commit
These are automated triage suggestions only — the final decision belongs to the maintainers. |
Signed-off-by: natureofnature <wzliu@connect.hku.hk>
|
I tried to find where this started, in case it's useful. I used one RTX 6000 Ada, vLLM 0.30.0, the CI command for the duplex and window files, and a stage memory split adjusted to fit 48 GB. The three tests from #8217 pass at 6715c57 (just before #7695) and fail at 798d52c (#7695) with the own-token error. Bisecting inside #7695, the change that matters is the MiniCPM-o plugin replacing its
The two helpers differ on the Stage-0 output here.
In one failing run, a probe computed each decision with both helpers on the same inputs. 63 decisions differed: 62 listen decisions only gained five metadata keys (including One concern with trimming at the handoff is that these units can carry text. In one of my failures, the skipped unit was |
|
closed as #8227 tries to solve same problem |
Purpose
Fixes #8216.
The benchmark exit code is downstream of a Talker handoff failure. In nightly build 16226, the server raises
missing own-token hidden states for [151717]while handling[speak, turn_eos, listen, speak, text..., chunk_eos]; the client then loses its WebSocket and exits with code 1.Listen-terminated units take the plugin's direct-response path and do not advance the Talker handoff cursor. The next cumulative delta can therefore include an entire earlier unit, rather than just leading listen tokens. The old code attempts to condition the Talker on that earlier unit using the current ledger.
Trim through the last listen token before looking up TTS boundaries. Keep the cumulative cursor recorded before trimming, and retain strict validation of the current unit's hidden states. The regression covers both
speakandtts_bosdecisions in the skipped/current units, checking the actual condition IDs, hidden rows, and absence of a stale turn-end flag.Test Plan
vLLM Version: 0.30.0
vLLM-Omni Commit: base
c8a1419e02efc74d4a2ac5dfec4e9b2848ecd5a8, fix4f31c3a166dee2a97a839aafcf7c983764935af4Environment: isolated container, NVIDIA H800 80 GB; PyTorch 2.13.0+cu130, Transformers 5.14.1, pytest 9.1.1.
Model/config:
openbmb/MiniCPM-o-4_5, checkpoint revision503e754207c94da6bb26850b4469f367c9ea3582; repositoryminicpmo_4_5.yaml, default three-stage/single-GPU execution.The unit regression needs the repository test dependencies; the E2E command additionally needs the checkpoint and a supported GPU. Commands run from the source checkout with
PYTHONPATH=$PWD:Test Result
8905bd5949cc9aaee0602afb95d144b787c22ccf.4f31c3a1; subsequent commit only adds a test): 3 passed, 9 deselected, 15 warnings in 616.30s (10m16s): audio response, video input, and still-image input, each with two turns. Exit code 0; no missing-own-token-hidden-states error in the server log.mypy-3.10. Its 5 diagnostics also reproduce on the unmodified base, with identical messages after normalizing shifted line numbers; no new diagnostic. A subsequent run skipping only this known baseline failure passed.