[Feature][MiniMax-H3] Support diffusion continuous batching (#5810)
Signed-off-by: princepride <wangzhipeng628@gmail.com> Signed-off-by: lishunyang12 <lishunyang12@163.com> Co-authored-by: Claude Opus 5 <noreply@anthropic.com> Co-authored-by: lishunyang12 <lishunyang12@163.com> Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
15 files changed
+1834
-140
No files matched your search
@@ -25,7 +25,7 @@ from vllm_omni.diffusion.sched import (
|
||||
StepScheduler,
|
||||
)
|
||||
from vllm_omni.diffusion.sched.interface import CachedRequestData, NewRequestData
|
||||
from vllm_omni.diffusion.worker.utils import RunnerOutput
|
||||
from vllm_omni.diffusion.worker.utils import BatchRunnerOutput, RunnerOutput
|
||||
from vllm_omni.inputs.data import OmniDiffusionSamplingParams
|
||||
|
||||
pytestmark = [pytest.mark.core_model, pytest.mark.cpu, pytest.mark.diffusion]
|
||||
@@ -1559,6 +1559,39 @@ class TestStepScheduler:
|
||||
assert sched_output.num_running_reqs == 2
|
||||
assert sched_output.num_waiting_reqs == 0
|
||||
|
||||
def test_mixed_batch_error_finishes_only_failed_request(self) -> None:
|
||||
scheduler = StepScheduler()
|
||||
scheduler.initialize(SimpleNamespace(max_num_seqs=2))
|
||||
|
||||
req_bad = scheduler.add_request(_make_step_request("bad", num_inference_steps=2))
|
||||
req_good = scheduler.add_request(_make_step_request("good", num_inference_steps=2))
|
||||
first = scheduler.schedule()
|
||||
|
||||
finished = scheduler.update_from_output(
|
||||
first,
|
||||
BatchRunnerOutput.from_list(
|
||||
[
|
||||
_make_step_output(
|
||||
req_bad,
|
||||
step_index=0,
|
||||
finished=True,
|
||||
error="invalid request input",
|
||||
),
|
||||
_make_step_output(req_good, step_index=1),
|
||||
]
|
||||
),
|
||||
)
|
||||
|
||||
assert finished == {req_bad}
|
||||
assert scheduler.get_request_state(req_bad).status == DiffusionRequestStatus.FINISHED_ERROR
|
||||
assert scheduler.get_request_state(req_good).status == DiffusionRequestStatus.RUNNING
|
||||
assert scheduler.get_request_state(req_good).req.sampling_params.step_index == 1
|
||||
|
||||
second = scheduler.schedule()
|
||||
assert second.finished_req_ids == {req_bad}
|
||||
assert _new_ids(second) == []
|
||||
assert _cached_ids(second) == [req_good]
|
||||
|
||||
def test_step_batch_rejects_different_sampling_key(self) -> None:
|
||||
scheduler = StepScheduler()
|
||||
scheduler.initialize(SimpleNamespace(max_num_seqs=3))
|
||||
|
||||
Reference in new issue
Block a user