Feat: implement dynamic batch sizing that scales with VRAM per worker#1034
Open
bazzi24 wants to merge 1 commit into
Open
Feat: implement dynamic batch sizing that scales with VRAM per worker#1034bazzi24 wants to merge 1 commit into
bazzi24 wants to merge 1 commit into
Conversation
Contributor
|
CLA Assistant Lite bot All contributors have signed the CLA ✍️ ✅ |
Author
|
I have read the CLA Document and I hereby sign the CLA |
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.
Dynamic Batch Sizing Based on VRAM
This PR implements dynamic batch size scaling in
marker/utils/batch.pyto optimize performance across different GPU configurations. Previously, batch sizes were hardcoded for multi-worker scenarios and not optimized for single-worker high-VRAM setups.Problem
The original
get_batch_sizes_worker_counts()function returned fixed batch sizes whenworkers > 1, but:Solution
The function now calculates batch sizes dynamically by:
1/ Scaling factor calculation:
scale = vram_per_worker / 7.02/ Proportional scaling: All batch sizes multiplied by scale factor
layout_batch_size: 12 → scaleddetection_batch_size: 8 → scaledrecognition_batch_size: 64 → scaled3/ Safety caps:
4/ Single-worker high-VRAM support:
5/ Minimum batch sizes:
6/ Logging:
Example Configurations
Backward Compatibility
{}as before (uses existing defaults in each builder)--config_jsonoverrides) still take precedenceTesting
Added comprehensive test suite in
tests/utils/test_batch.py:Performance Impact
Files Changed
marker/utils/batch.py- Core implementationtests/utils/test_batch.py- Test suite (new)