Repository navigation
[Perf][EPD] Batch image requests per encoder - #57095
Merged
Merged
Conversation
Assisted-by: OpenAI Codex <codex@openai.com> Signed-off-by: Tianyu Guo <guoty@inferact.ai>
Contributor
|
Documentation preview: https://vllm--57095.org.readthedocs.build/en/57095/ |
gty111
marked this pull request as ready for review
September 16, 2026 01:49
jiaran-king
reviewed
Sep 16, 2026
Assisted-by: OpenAI Codex <codex@openai.com> Signed-off-by: Tianyu Guo <guoty@inferact.ai>
Contributor
|
This pull request has merge conflicts that must be resolved before it can be |
Preserve image batching semantics while adopting main docstring formatting. Assisted-by: OpenAI Codex <codex@openai.com> Signed-off-by: Tianyu Guo <guoty@inferact.ai>
Keep raw video when its audio/video metadata cannot be uniquely matched and no transport handles need forwarding. Preserve image batching and push-path validation; cover both rewrite modes and transfer boundaries. Co-authored-by: OpenAI Codex <codex@openai.com> Signed-off-by: Zhou ziheng <jiaranran2@gmail.com>
[Bugfix][EPD] Preserve raw video fallback for audio features
jiaran-king
approved these changes
Sep 17, 2026
jiaran-king
left a comment
Contributor
There was a problem hiding this comment.
LGTM. I went through the PR again after the latest fix and don’t see any remaining blockers.
Retain the video/audio fallback fix and annotate its test payload for mypy. Assisted-by: OpenAI Codex <codex@openai.com> Signed-off-by: Tianyu Guo <guoty@inferact.ai>
Collaborator
Author
|
/ci run |
|
✅ Triggered Buildkite CI #89528 for commit |
Contributor
|
Hi @gty111, the pre-commit checks have failed. Please run: uv pip install pre-commit>=4.5.1
pre-commit install
pre-commit run --all-filesThen, commit the changes and push to your branch. For future commits, |
Assisted-by: OpenAI Codex <codex@openai.com> Signed-off-by: Tianyu Guo <guoty@inferact.ai>
Collaborator
Author
|
/ci run |
|
✅ Triggered Buildkite CI #89547 for commit |
Co-authored-by: OpenAI Codex <codex@openai.com> Signed-off-by: Tianyu Guo <guoty@inferact.ai>
Co-authored-by: OpenAI Codex <codex@openai.com> Signed-off-by: Tianyu Guo <guoty@inferact.ai>
Collaborator
Author
|
/ci run |
|
✅ Triggered Buildkite CI #89568 for commit |
khluu
approved these changes
Sep 17, 2026
michael-gpu
pushed a commit
to practical-inference/vllm-ampere-extended
that referenced
this pull request
Oct 20, 2026
Signed-off-by: Tianyu Guo <guoty@inferact.ai> Signed-off-by: Zhou ziheng <jiaranran2@gmail.com> Co-authored-by: Zhou ziheng <jiaranran2@gmail.com> Co-authored-by: OpenAI Codex <codex@openai.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Batch proxy-to-encoder HTTP requests: instead of sending one request per image, the proxy groups images from the same user request assigned to the same E instance into a single multi-image request. Per-image round-robin assignment and parallel requests to different E instances are preserved. Audio/video remain unbatched; no new configuration is added.
Return item positions in EC metadata so the proxy can map each result back to the original image, including repeated images and processing-derived hashes. This changes request fan-out in the proxy, not encoder compute batching; no scheduler or model-runner changes.
Results
Same-node A/B: Qwen3.5-35B-A3B BF16, 4E+4PD on two GB200 nodes, Mooncake RDMA, MRv2, concurrency 96, CUDA graphs up to 16384 tokens, no eager. Each arm: 200 warmup requests, then 2 × 1200 MUIRBench requests with structured choice.
E subrequests per round: 4924 → 3878 (-21.2%). All requests succeeded without proxy retries. No accuracy regression observed; this is a two-round comparison, not a claim of improved model accuracy. Both arms use the same worker metadata addition and differ only in the proxy.
Validation
.venv/bin/python -m pytest tests/v1/ec_connector/unit/{test_epd_proxy_retry,test_epd_proxy_round_robin,test_ec_example_connector}.py -q58 passed; pre-commit passed. Covers repeated images, derived hashes, raw-media mode, metadata ordering and HTTP retries.
Checked #52409 and open PRs for encoder batching/fan-out; no duplicate found. #54176 concerns dynamic registration, not request batching.
AI assistance was used. Draft pending human review.