From 454ef9439064de7790dc0bb87c63346543a9eb89 Mon Sep 17 00:00:00 2001 From: HermiaHuan <3081497279@qq.com> Date: Thu, 30 Jul 2026 00:05:27 +0800 Subject: [PATCH 1/4] Add MetaX graph serving cases --- tests/models/qwen3_6/27b_tp2_graph_metax.yaml | 43 ++++++++++++++++++ .../qwen3_6/35b_a3b_tp2_graph_metax.yaml | 44 +++++++++++++++++++ tests/platforms/metax.yaml | 6 ++- 3 files changed, 92 insertions(+), 1 deletion(-) create mode 100644 tests/models/qwen3_6/27b_tp2_graph_metax.yaml create mode 100644 tests/models/qwen3_6/35b_a3b_tp2_graph_metax.yaml diff --git a/tests/models/qwen3_6/27b_tp2_graph_metax.yaml b/tests/models/qwen3_6/27b_tp2_graph_metax.yaml new file mode 100644 index 00000000..28895905 --- /dev/null +++ b/tests/models/qwen3_6/27b_tp2_graph_metax.yaml @@ -0,0 +1,43 @@ +# Copyright 2026 FlagOS Contributors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Qwen3.6-27B MetaX smoke configuration (TP=2, graph). + +llm: + model: "/data/models/Qwen/Qwen3.6-27B" + tensor_parallel_size: 2 + pipeline_parallel_size: 1 + max_model_len: 8192 + gpu_memory_utilization: 0.95 + enforce_eager: false + trust_remote_code: false + disable_custom_all_reduce: true + +generate: + prompts: + - "Introduce yourself,please" + sampling: + max_tokens: 100 + temperature: 0.0 + +serve: + served_model_name: "qwen" + endpoints: ["chat"] + stream: false + max_tokens: 256 + chat_messages: + - role: "user" + content: "Introduce yourself,please" + sampling: + temperature: 0.0 diff --git a/tests/models/qwen3_6/35b_a3b_tp2_graph_metax.yaml b/tests/models/qwen3_6/35b_a3b_tp2_graph_metax.yaml new file mode 100644 index 00000000..bba23987 --- /dev/null +++ b/tests/models/qwen3_6/35b_a3b_tp2_graph_metax.yaml @@ -0,0 +1,44 @@ +# Copyright 2026 FlagOS Contributors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Qwen3.6-35B-A3B MetaX smoke configuration (TP=2, graph). + +llm: + model: "/data/models/Qwen/Qwen3.6-35B-A3B" + tensor_parallel_size: 2 + pipeline_parallel_size: 1 + max_model_len: 8192 + gpu_memory_utilization: 0.90 + enforce_eager: false + trust_remote_code: false + disable_custom_all_reduce: true + +generate: + prompts: + - "Introduce yourself,please" + sampling: + max_tokens: 100 + temperature: 0.0 + +serve: + served_model_name: "qwen" + startup_retries: 120 + endpoints: ["chat"] + stream: false + max_tokens: 256 + chat_messages: + - role: "user" + content: "Introduce yourself,please" + sampling: + temperature: 0.0 diff --git a/tests/platforms/metax.yaml b/tests/platforms/metax.yaml index 409f4476..855080e6 100644 --- a/tests/platforms/metax.yaml +++ b/tests/platforms/metax.yaml @@ -42,7 +42,11 @@ c550: inference: qwen3_6: ["27b_tp2_eager_metax"] serving: - qwen3_6: ["35b_a3b_tp2_eager_metax"] + qwen3_6: + - "27b_tp2_eager_metax" + - "27b_tp2_graph_metax" + - "35b_a3b_tp2_eager_metax" + - "35b_a3b_tp2_graph_metax" functional: include: "*" exclude: [] From 5d7b15e3390b22a1142c9db95e10b22a6029af0e Mon Sep 17 00:00:00 2001 From: HermiaHuan <3081497279@qq.com> Date: Thu, 30 Jul 2026 01:49:10 +0800 Subject: [PATCH 2/4] Stabilize MetaX graph serving CI --- .github/scripts/generate_matrix.py | 15 ++++++++++++++- tests/models/qwen3_6/27b_tp2_graph_metax.yaml | 3 ++- tests/models/qwen3_6/35b_a3b_tp2_graph_metax.yaml | 2 +- tests/platforms/metax.yaml | 5 ++++- 4 files changed, 21 insertions(+), 4 deletions(-) diff --git a/.github/scripts/generate_matrix.py b/.github/scripts/generate_matrix.py index 9090a436..cf5b2e3b 100644 --- a/.github/scripts/generate_matrix.py +++ b/.github/scripts/generate_matrix.py @@ -58,6 +58,19 @@ def resolve_task_dir(task_key: str) -> str: return TASK_DIR_MAP.get(task_key, task_key) +def resolve_e2e_timeout(config: dict, device: str, task_dir: str) -> int: + """Return timeout for an E2E task, allowing platform YAML overrides.""" + default = DEFAULT_TIMEOUT.get(task_dir, 60) + timeouts = ( + config.get(device, {}) + .get("tests", {}) + .get("timeouts", {}) + .get("e2e", {}) + ) + value = timeouts.get(task_dir, default) + return int(value) + + def get_device_sections(config: dict) -> list[str]: """Return device section names present in the config. @@ -108,7 +121,7 @@ def build_e2e_matrix( # Build one matrix entry per (task, device) group entries = [] for (task_dir, device), case_list in groups.items(): - timeout = DEFAULT_TIMEOUT.get(task_dir, 60) + timeout = resolve_e2e_timeout(config, device, task_dir) entries.append( { "task": task_dir, diff --git a/tests/models/qwen3_6/27b_tp2_graph_metax.yaml b/tests/models/qwen3_6/27b_tp2_graph_metax.yaml index 28895905..c9fd1841 100644 --- a/tests/models/qwen3_6/27b_tp2_graph_metax.yaml +++ b/tests/models/qwen3_6/27b_tp2_graph_metax.yaml @@ -19,7 +19,7 @@ llm: tensor_parallel_size: 2 pipeline_parallel_size: 1 max_model_len: 8192 - gpu_memory_utilization: 0.95 + gpu_memory_utilization: 0.90 enforce_eager: false trust_remote_code: false disable_custom_all_reduce: true @@ -33,6 +33,7 @@ generate: serve: served_model_name: "qwen" + startup_retries: 300 endpoints: ["chat"] stream: false max_tokens: 256 diff --git a/tests/models/qwen3_6/35b_a3b_tp2_graph_metax.yaml b/tests/models/qwen3_6/35b_a3b_tp2_graph_metax.yaml index bba23987..5dd6edd2 100644 --- a/tests/models/qwen3_6/35b_a3b_tp2_graph_metax.yaml +++ b/tests/models/qwen3_6/35b_a3b_tp2_graph_metax.yaml @@ -33,7 +33,7 @@ generate: serve: served_model_name: "qwen" - startup_retries: 120 + startup_retries: 300 endpoints: ["chat"] stream: false max_tokens: 256 diff --git a/tests/platforms/metax.yaml b/tests/platforms/metax.yaml index 855080e6..186c038a 100644 --- a/tests/platforms/metax.yaml +++ b/tests/platforms/metax.yaml @@ -44,9 +44,12 @@ c550: serving: qwen3_6: - "27b_tp2_eager_metax" - - "27b_tp2_graph_metax" - "35b_a3b_tp2_eager_metax" + - "27b_tp2_graph_metax" - "35b_a3b_tp2_graph_metax" + timeouts: + e2e: + serving: 180 functional: include: "*" exclude: [] From ef9f8684efc3e79739d0756cfd3b87d761c405cc Mon Sep 17 00:00:00 2001 From: HermiaHuan <3081497279@qq.com> Date: Thu, 30 Jul 2026 01:51:29 +0800 Subject: [PATCH 3/4] Fix MetaX matrix format --- .github/scripts/generate_matrix.py | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/.github/scripts/generate_matrix.py b/.github/scripts/generate_matrix.py index cf5b2e3b..bbc4dd6f 100644 --- a/.github/scripts/generate_matrix.py +++ b/.github/scripts/generate_matrix.py @@ -61,12 +61,7 @@ def resolve_task_dir(task_key: str) -> str: def resolve_e2e_timeout(config: dict, device: str, task_dir: str) -> int: """Return timeout for an E2E task, allowing platform YAML overrides.""" default = DEFAULT_TIMEOUT.get(task_dir, 60) - timeouts = ( - config.get(device, {}) - .get("tests", {}) - .get("timeouts", {}) - .get("e2e", {}) - ) + timeouts = config.get(device, {}).get("tests", {}).get("timeouts", {}).get("e2e", {}) value = timeouts.get(task_dir, default) return int(value) From 699bb58128c311046a5a6aa7e5e8f87d916df63f Mon Sep 17 00:00:00 2001 From: HermiaHuan <3081497279@qq.com> Date: Thu, 30 Jul 2026 01:54:52 +0800 Subject: [PATCH 4/4] Apply ruff format to matrix helper --- .github/scripts/generate_matrix.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/scripts/generate_matrix.py b/.github/scripts/generate_matrix.py index bbc4dd6f..2a9b7f0a 100644 --- a/.github/scripts/generate_matrix.py +++ b/.github/scripts/generate_matrix.py @@ -61,7 +61,9 @@ def resolve_task_dir(task_key: str) -> str: def resolve_e2e_timeout(config: dict, device: str, task_dir: str) -> int: """Return timeout for an E2E task, allowing platform YAML overrides.""" default = DEFAULT_TIMEOUT.get(task_dir, 60) - timeouts = config.get(device, {}).get("tests", {}).get("timeouts", {}).get("e2e", {}) + timeouts = ( + config.get(device, {}).get("tests", {}).get("timeouts", {}).get("e2e", {}) + ) value = timeouts.get(task_dir, default) return int(value)