fix: use group-level concurrency in fully-async rollout - #2367
Open
JayPritchet wants to merge 1 commit into
Open
fix: use group-level concurrency in fully-async rollout#2367JayPritchet wants to merge 1 commit into
JayPritchet wants to merge 1 commit into
Conversation
Derive the worker concurrency from the total sample concurrency and n_samples_per_prompt. This keeps the worker's active-task and queue backpressure limits in group units. Update the fully-async documentation and unit tests accordingly.
JayPritchet
force-pushed
the
fix/fully-async-group-concurrency
branch
from
September 7, 2026 06:31
4b03119 to
c950027
Compare
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.
Problem
The fully-async worker receives a concurrency value derived from
sglang_server_concurrency, which represents per-sample concurrency:slime/slime/rollout/fully_async_rollout.py
Lines 58 to 60 in 4c193f1
However, the worker applies this value to the number of active
generate_and_rm_grouptasks and the number of completed groups inoutput_queuewhich are measured in groups rather than samples.slime/slime/rollout/fully_async_rollout.py
Lines 148 to 154 in 4c193f1
When
n_samples_per_prompt > 1, this makes the worker's scheduling and backpressure window larger than intended.For example, with a sample concurrency of 512 and 8 samples per prompt, the worker previously allowed up to 512 active groups instead of roughly 64 groups.
The inner semaphore still limits actual SGLang sample concurrency, so this does not exceed the server request concurrency limit. However, it can cause excessive task creation, prefetching, and completed-group buffering before backpressure takes effect.
Change
Derive the worker's group concurrency from the total sample concurrency:
Rename the worker fields and variables to make their group-level semantics explicit.
This change only affects the outer fully-async scheduling and backpressure window. The existing per-sample SGLang semaphore remains unchanged.
Testing
tests/test_fully_async_rollout.py: 5 passed.