feat(multimodal): ThreadedMicroBatcher + batcher-backed AsyncVisionEncoder (cross-request batching) - #11037
Merged
Merged
Conversation
furionw
temporarily deployed
to
external_collaborator
June 29, 2026 04:53 — with
GitHub Actions
Inactive
This was referenced Jun 29, 2026
feat(multimodal): CUDA-graph bucket ladder (Dynamo-side target_bucket) + Qwen3-VL ViT example
#11039
Closed
furionw
force-pushed
the
qiwa/partial-embed-assembly
branch
from
June 29, 2026 19:42
768e5c8 to
90cc67e
Compare
furionw
force-pushed
the
qiwa/vision-encoder-batcher
branch
from
June 29, 2026 19:44
fa42f16 to
4be49c4
Compare
furionw
force-pushed
the
qiwa/partial-embed-assembly
branch
from
June 30, 2026 07:04
90cc67e to
1c5be47
Compare
furionw
force-pushed
the
qiwa/vision-encoder-batcher
branch
from
June 30, 2026 07:11
4be49c4 to
3c1f269
Compare
furionw
force-pushed
the
qiwa/partial-embed-assembly
branch
from
June 30, 2026 16:55
1c5be47 to
ada3d9a
Compare
furionw
force-pushed
the
qiwa/vision-encoder-batcher
branch
from
June 30, 2026 16:58
3c1f269 to
729398f
Compare
furionw
force-pushed
the
qiwa/partial-embed-assembly
branch
from
June 30, 2026 17:08
ada3d9a to
b3a7c13
Compare
furionw
force-pushed
the
qiwa/vision-encoder-batcher
branch
from
June 30, 2026 17:08
729398f to
4f361b7
Compare
furionw
force-pushed
the
qiwa/vision-encoder-batcher
branch
from
June 30, 2026 17:27
4f361b7 to
b86a07f
Compare
furionw
force-pushed
the
qiwa/partial-embed-assembly
branch
from
June 30, 2026 18:09
b3a7c13 to
5677c09
Compare
furionw
force-pushed
the
qiwa/vision-encoder-batcher
branch
from
June 30, 2026 18:15
b86a07f to
7d148e3
Compare
furionw
force-pushed
the
qiwa/partial-embed-assembly
branch
from
July 6, 2026 20:00
99e2a74 to
0509d8a
Compare
furionw
force-pushed
the
qiwa/vision-encoder-batcher
branch
from
July 8, 2026 01:06
d175b04 to
13a21ee
Compare
furionw
force-pushed
the
qiwa/vision-encoder-batcher
branch
from
July 8, 2026 01:08
13a21ee to
d1bb143
Compare
furionw
force-pushed
the
qiwa/partial-embed-assembly
branch
2 times, most recently
from
July 8, 2026 04:12
ef2cb58 to
1c33055
Compare
furionw
force-pushed
the
qiwa/vision-encoder-batcher
branch
from
July 8, 2026 04:55
d1bb143 to
be57f96
Compare
furionw
force-pushed
the
qiwa/partial-embed-assembly
branch
2 times, most recently
from
July 10, 2026 15:15
9f5069b to
7e089b8
Compare
furionw
force-pushed
the
qiwa/vision-encoder-batcher
branch
from
July 11, 2026 01:18
0733a55 to
492569d
Compare
furionw
force-pushed
the
qiwa/vision-encoder-batcher
branch
from
July 14, 2026 02:39
492569d to
7286f09
Compare
Contributor
WalkthroughChangesThe PR adds a dedicated Async vision batching
Estimated code review effort: 4 (Complex) | ~60 minutes 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
Comment |
indrajit96
approved these changes
Jul 14, 2026
indrajit96
left a comment
Contributor
There was a problem hiding this comment.
LGTM!
Non Blocking :
IIUC this PR improves GPU utilization for custom multimodal vision encoders by batching images across concurrent requests.
Can we have a readme or any form of docs to explain how to enable this or use it effectively under what conditions?
Add a supervised, thread-affine micro-batcher and route AsyncVisionEncoder forwards through it. Preserve preprocess atomicity while making lifecycle, failures, and teardown deterministic. Signed-off-by: Qi Wang <qiwa@nvidia.com>
Contributor
Author
|
addressed comments by changing code and added docs |
Contributor
Author
|
/ok to test 0392783 |
Contributor
tedzhouhk
approved these changes
Jul 15, 2026
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.
Why
The merged custom encoder path runs each request's image forward independently, underfilling the encoder GPU under concurrent load. Cross-request batching must preserve one actor thread for CUDA-affine work, request ordering, and bounded variable-resolution sizing. Cancellation must retire unclaimed items so abandoned input cannot poison a live request sharing a later batch. Backend authors also need discoverable setup and sizing guidance.
What Change
Test Plan
agg_custome2e returned42.