Skip to content

Commit 8e0e5ea

Browse files
committed
Fix issue when procs don't evenly divide concurrency
1 parent 7d04765 commit 8e0e5ea

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

src/guidellm/scheduler/worker_group.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -143,8 +143,8 @@ async def create_processes(self):
143143
if num_processes <= 0:
144144
raise RuntimeError("num_processes resolved to 0; increase limits/config")
145145

146-
per_proc_max_conc = math.ceil(max_conc / num_processes)
147-
per_proc_max_queue = min(2, per_proc_max_conc)
146+
per_proc_max_conc = max_conc // num_processes
147+
per_proc_max_queue = math.floor(math.log(per_proc_max_conc + math.e))
148148
max_queued_requests = ( # Add queue buffer for each process
149149
max_conc + (num_processes * per_proc_max_queue)
150150
)
@@ -160,9 +160,11 @@ async def create_processes(self):
160160
# Initialize worker processes
161161
self.processes = []
162162
for rank in range(num_processes):
163+
# Distribute any remainder across the first R ranks
163164
async_limit = per_proc_max_conc + (
164165
1 if rank < (max_conc % num_processes) else 0
165166
)
167+
166168
worker = WorkerProcess[RequestT, MeasuredRequestTimingsT, ResponseT](
167169
local_rank=rank,
168170
local_world_size=num_processes,

0 commit comments

Comments
 (0)