[perf]Qwen3-Omni performance optimization (#3164)
Signed-off-by: amy-why-3459 <wuhaiyan17@huawei.com>
This commit is contained in:
1 parent
1069a144a8
commit
335e2eb9e4
9 files changed
+274
-97
No files matched your search
+14
-6
@@ -70,17 +70,17 @@ def _build_serve_args(serve_args: Any) -> list[str]:
|
||||
def create_unique_server_params(
|
||||
configs: list[dict[str, Any]],
|
||||
stage_configs_dir: Path,
|
||||
) -> list[tuple[str, str, str | None, str | None, tuple[str, ...]]]:
|
||||
"""Return one row per unique server configuration (same 5-tuple shape as upstream).
|
||||
) -> list[tuple[str, str, str | None, str | None, tuple[str, ...], bool]]:
|
||||
"""Return one row per unique server configuration.
|
||||
|
||||
``(test_name, model, deploy_yaml_path, stage_overrides_json, extra_cli_args)``.
|
||||
``(test_name, model, deploy_yaml_path, stage_overrides_json, extra_cli_args, use_omni)``.
|
||||
|
||||
JSON ``server_params.serve_args`` (dict/list) is expanded via ``_build_serve_args``
|
||||
and **prepended** to ``extra_cli_args`` so perf / stability ``omni_server`` fixtures
|
||||
stay identical to main while still honoring ``serve_args`` in benchmark JSON.
|
||||
"""
|
||||
unique_params: list[tuple[str, str, str | None, str | None, tuple[str, ...]]] = []
|
||||
seen: set[tuple[str, str, str | None, str | None, tuple[str, ...]]] = set()
|
||||
unique_params: list[tuple[str, str, str | None, str | None, tuple[str, ...], bool]] = []
|
||||
seen: set[tuple[str, str, str | None, str | None, tuple[str, ...], bool]] = set()
|
||||
for config in configs:
|
||||
test_name = config["test_name"]
|
||||
server_params = config["server_params"]
|
||||
@@ -104,8 +104,16 @@ def create_unique_server_params(
|
||||
serve_flat = _build_serve_args(server_params.get("serve_args"))
|
||||
raw_extra = tuple(server_params.get("extra_cli_args") or ())
|
||||
extra_cli_args = tuple(serve_flat) + raw_extra
|
||||
use_omni = bool(server_params.get("use_omni", True))
|
||||
|
||||
server_param = (test_name, model, stage_config_path, stage_overrides_json, extra_cli_args)
|
||||
server_param = (
|
||||
test_name,
|
||||
model,
|
||||
stage_config_path,
|
||||
stage_overrides_json,
|
||||
extra_cli_args,
|
||||
use_omni,
|
||||
)
|
||||
if server_param not in seen:
|
||||
seen.add(server_param)
|
||||
unique_params.append(server_param)
|
||||
|
||||
@@ -65,7 +65,7 @@ def omni_server(request):
|
||||
Multi-stage initialization can take 10-20+ minutes.
|
||||
"""
|
||||
with _omni_server_lock:
|
||||
test_name, model, stage_config_path, stage_overrides, extra_cli_args = request.param
|
||||
test_name, model, stage_config_path, stage_overrides, extra_cli_args, use_omni = request.param
|
||||
|
||||
print(f"Starting OmniServer with test: {test_name}, model: {model}")
|
||||
|
||||
@@ -78,7 +78,7 @@ def omni_server(request):
|
||||
server_args = ["--stage-overrides", stage_overrides] + server_args
|
||||
if extra_cli_args:
|
||||
server_args = list(extra_cli_args) + server_args
|
||||
with OmniServer(model, server_args) as server:
|
||||
with OmniServer(model, server_args, use_omni=use_omni) as server:
|
||||
server.test_name = test_name
|
||||
print("OmniServer started successfully")
|
||||
yield server
|
||||
|
||||
@@ -35,10 +35,10 @@ def omni_server(request: pytest.FixtureRequest):
|
||||
"""Start OmniServer for stability tests, with per-module timeout override."""
|
||||
timeout_args = getattr(request.module, "STABILITY_SERVER_TIMEOUT_ARGS", DEFAULT_STABILITY_SERVER_TIMEOUT_ARGS)
|
||||
with _omni_server_lock:
|
||||
# Same 5-tuple and CLI composition as ``tests/dfx/perf/scripts/run_benchmark.py`` on main;
|
||||
# Same tuple and CLI composition as ``tests/dfx/perf/scripts/run_benchmark.py``;
|
||||
# ``serve_args`` from JSON are folded into ``extra_cli_args`` inside
|
||||
# ``create_unique_server_params``.
|
||||
test_name, model, deploy_path, stage_overrides, extra_cli_args = request.param
|
||||
test_name, model, deploy_path, stage_overrides, extra_cli_args, use_omni = request.param
|
||||
|
||||
print(f"Starting OmniServer with test: {test_name}, model: {model}")
|
||||
server_args = list(timeout_args)
|
||||
@@ -48,7 +48,7 @@ def omni_server(request: pytest.FixtureRequest):
|
||||
server_args = ["--stage-overrides", stage_overrides] + server_args
|
||||
if extra_cli_args:
|
||||
server_args = list(extra_cli_args) + server_args
|
||||
with OmniServer(model, server_args) as server:
|
||||
with OmniServer(model, server_args, use_omni=use_omni) as server:
|
||||
server.test_name = test_name
|
||||
print("OmniServer started successfully")
|
||||
yield server
|
||||
|
||||
Reference in new issue
Block a user