Skip to content

Commit 1d60398

Browse files
ci(nightly): externalize test config and add /nightly dispatch resolver
Move per-platform test configs (A2/A3 single-node, multi-node, double-node, multi-card, accuracy) into a centralized .github/workflows/configs/nightly_config.yaml and replace the old accuracy_groups_a2.json with the new schema. Update resolve_nightly_tests.py to support both the matrix mode (read sections from nightly_config.yaml) and a new dispatch mode (resolve /nightly <name> tokens to a2/a3 dispatch flags + transformed test cases). Wire pr_nightly_command.yml to consume the dispatch outputs so /nightly slash commands can route PR-based runs to the right nightly workflow with proper PR-ref sparse-checkout. Update the developer guide to document the new flow. Signed-off-by: hfadzxy <starmoon_zhang@163.com>
1 parent fa76339 commit 1d60398

13 files changed

Lines changed: 881 additions & 325 deletions
Lines changed: 191 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,191 @@
1+
# Single source of truth for the Nightly-A2 / Nightly-A3 test matrix.
2+
# SOC differentiation: A2 runs on a2b3 runners and -a2 images, A3 runs on
3+
# a3 runners and -a3 images. Adding a new test case is just appending a
4+
# `- name: ...` entry under the matching section. PRs that add entries
5+
# here can be exercised via `/nightly <name>` without merging to main.
6+
7+
a2:
8+
single_node:
9+
test_config:
10+
# pytest-driven tests
11+
- name: test_custom_op_multi_card
12+
os: linux-aarch64-a2b3-4
13+
tests: tests/e2e/nightly/single_node/ops/multicard_ops_a2/
14+
# YAML-driven tests
15+
- name: qwen3-vl-32b-instruct-w8a8
16+
os: linux-aarch64-a2b3-4
17+
config_file_path: Qwen3-VL-32B-Instruct-W8A8.yaml
18+
- name: qwen3-32b-int8
19+
os: linux-aarch64-a2b3-4
20+
config_file_path: Qwen3-32B-Int8-A2.yaml
21+
- name: Qwen3.5-27B-w8a8-A2
22+
os: linux-aarch64-a2b3-2
23+
config_file_path: Qwen3.5-27B-w8a8-A2.yaml
24+
- name: Qwen3.5-397B-A17B-w4a8-mtp
25+
os: linux-aarch64-a2b3-8
26+
config_file_path: Qwen3.5-397B-A17B-w4a8-mtp-A2.yaml
27+
multi_node:
28+
test_config:
29+
- name: multi-node-qwen3-235b-dp
30+
config_file_path: Qwen3-235B-A22B-A2.yaml
31+
size: 2
32+
- name: multi-node-GLM-5.1-w8a8-A2
33+
config_file_path: GLM5_1-W8A8-A2-dual-nodes.yaml
34+
size: 2
35+
- name: multi-node-Kimi-K2.5-W4A8-A2
36+
config_file_path: Kimi-K2_5-W4A8-A2-dual-nodes.yaml
37+
size: 2
38+
accuracy:
39+
nightly:
40+
- name: accuracy-group-1
41+
os: linux-aarch64-a2b3-1
42+
model_list:
43+
- Qwen3-VL-8B-Instruct-W8A8
44+
- Qwen3-8B
45+
- Qwen2-Audio-7B-Instruct
46+
- Qwen3-8B-W8A8
47+
- Qwen3-VL-8B-Instruct
48+
- Minitron-8B-Base
49+
- name: accuracy-group-2
50+
os: linux-aarch64-a2b3-1
51+
model_list:
52+
- ERNIE-4.5-21B-A3B-PT
53+
- Molmo-7B-D-0924
54+
- Llama-3.2-3B-Instruct
55+
- name: accuracy-group-3
56+
os: linux-aarch64-a2b3-2
57+
model_list:
58+
- Qwen3-30B-A3B
59+
- Qwen3-VL-30B-A3B-Instruct
60+
- Qwen3-30B-A3B-W8A8
61+
- name: accuracy-group-4
62+
os: linux-aarch64-a2b3-4
63+
model_list:
64+
- Qwen3-Next-80B-A3B-Instruct
65+
- Qwen3-Omni-30B-A3B-Instruct
66+
- Mixtral-8x7B-Instruct-v0.1
67+
pr_only:
68+
- name: pr-accuracy-group-1
69+
os: linux-aarch64-a2b3-1
70+
model_list:
71+
- gemma-3-4b-it
72+
- internlm3-8b-instruct
73+
- Qwen3-ASR-1.7B
74+
- InternVL3_5-8B-hf
75+
- llava-onevision-qwen2-0.5b-ov-hf
76+
- name: pr-accuracy-group-2
77+
os: linux-aarch64-a2b3-4
78+
model_list:
79+
- Qwen2.5-Math-RM-72B
80+
- Hunyuan-A13B-Instruct
81+
82+
a3:
83+
multi_node:
84+
test_config:
85+
- name: multi-node-deepseek-v3.2-W8A8-EP
86+
config_file_path: DeepSeek-V3_2-W8A8-EP.yaml
87+
size: 4
88+
double_node:
89+
test_config:
90+
- name: multi-node-deepseek-r1-w8a8-longseq
91+
config_file_path: DeepSeek-R1-W8A8-longseq.yaml
92+
size: 2
93+
- name: multi-node-qwen3-dp
94+
config_file_path: Qwen3-235B-A22B.yaml
95+
size: 2
96+
- name: multi-node-qwenw8a8-2node-eplb
97+
config_file_path: Qwen3-235B-W8A8-EPLB.yaml
98+
size: 2
99+
- name: multi-node-dpsk3.2-2node
100+
config_file_path: DeepSeek-V3_2-W8A8-A3-dual-nodes.yaml
101+
size: 2
102+
- name: multi-node-qwen3-dp-mooncake-layerwise
103+
config_file_path: Qwen3-235B-A22B-Mooncake-Layerwise.yaml
104+
size: 2
105+
- name: multi-node-qwenw8a8-2node-longseq
106+
config_file_path: Qwen3-235B-W8A8-longseq.yaml
107+
size: 2
108+
- name: multi-node-qwen-disagg-pd
109+
config_file_path: Qwen3-235B-disagg-pd.yaml
110+
size: 2
111+
- name: multi-node-qwen-vl-disagg-pd
112+
config_file_path: Qwen3-VL-235B-disagg-pd.yaml
113+
size: 2
114+
- name: multi-node-deepseek-v3.1
115+
config_file_path: DeepSeek-V3.1-BF16.yaml
116+
size: 2
117+
- name: multi-node-GLM-5.1-w8a8-A3
118+
config_file_path: GLM5_1-W8A8-A3-dual-nodes.yaml
119+
size: 2
120+
single_node:
121+
test_config:
122+
- name: mtpx-deepseek-r1-0528-w8a8
123+
os: linux-aarch64-a3-16
124+
config_file_path: MTPX-DeepSeek-R1-0528-W8A8.yaml
125+
- name: deepseek-r1-0528-w8a8
126+
os: linux-aarch64-a3-16
127+
config_file_path: DeepSeek-R1-0528-W8A8.yaml
128+
- name: kimi-k2-thinking
129+
os: linux-aarch64-a3-16
130+
config_file_path: Kimi-K2-Thinking.yaml
131+
- name: qwen3-vl-235b-a22b-instruct-w8a8
132+
os: linux-aarch64-a3-16
133+
config_file_path: Qwen3-VL-235B-A22B-Instruct-W8A8.yaml
134+
- name: deepseek-r1-0528-w8a8-prefix-cache
135+
os: linux-aarch64-a3-16
136+
config_file_path: Prefix-Cache-DeepSeek-R1-0528-W8A8.yaml
137+
- name: deepseek-v3-2-w8a8
138+
os: linux-aarch64-a3-16
139+
config_file_path: DeepSeek-V3.2-W8A8.yaml
140+
- name: glm-4.7-w8a8
141+
os: linux-aarch64-a3-16
142+
config_file_path: GLM-4.7.yaml
143+
- name: kimi-k2.5
144+
os: linux-aarch64-a3-16
145+
config_file_path: Kimi-K2.5.yaml
146+
- name: qwen3-235b-a22b-w8a8
147+
os: linux-aarch64-a3-16
148+
config_file_path: Qwen3-235B-A22B-W8A8.yaml
149+
- name: Qwen3.5-397B-A17B-w8a8-mtp
150+
os: linux-aarch64-a3-16
151+
config_file_path: Qwen3.5-397B-A17B-W8A8-mtp-A3.yaml
152+
- name: MiniMax-M2.5-w8a8-QuaRot-A3
153+
os: linux-aarch64-a3-16
154+
config_file_path: MiniMax-M2.5-w8a8-QuaRot-A3.yaml
155+
- name: Qwen3.5-27B-w8a8-A3
156+
os: linux-aarch64-a3-2
157+
config_file_path: Qwen3.5-27B-w8a8-A3.yaml
158+
- name: Qwen3.5-122B-A10B-W8A8-A3
159+
os: linux-aarch64-a3-16
160+
config_file_path: Qwen3.5-122B-A10B-W8A8-A3.yaml
161+
- name: DeepSeek-V4-Flash-W8A8-A3
162+
os: linux-aarch64-a3-16
163+
config_file_path: DeepSeek-V4-Flash-W8A8-A3.yaml
164+
- name: Qwen3.5-397B-A17B-w8a8-mtp-longseq
165+
os: linux-aarch64-a3-16
166+
config_file_path: Qwen3.5-397B-A17B-W8A8-mtp-longseq-A3.yaml
167+
multi_card:
168+
test_config:
169+
# pytest-driven tests
170+
- name: qwen3-30b-acc
171+
os: linux-aarch64-a3-4
172+
tests: tests/e2e/weekly/single_node/models/test_qwen3_30b_acc.py
173+
# YAML-driven tests
174+
- name: qwen3-30b-a3b-w8a8
175+
os: linux-aarch64-a3-4
176+
config_file_path: Qwen3-30B-A3B-W8A8.yaml
177+
- name: qwen3-32b-int8
178+
os: linux-aarch64-a3-4
179+
config_file_path: Qwen3-32B-Int8.yaml
180+
- name: qwen3-32b-int8-prefix-cache
181+
os: linux-aarch64-a3-4
182+
config_file_path: Prefix-Cache-Qwen3-32B-Int8.yaml
183+
- name: Qwen3-30B-A3B-W4A8-llm-compressor
184+
os: linux-aarch64-a3-2
185+
config_file_path: Qwen3-30B-A3B-W4A8-llm-compressor.yaml
186+
- name: Qwen3-30B-QuaRot
187+
os: linux-aarch64-a3-2
188+
config_file_path: Qwen3-30B-QuaRot-eagle3.yaml
189+
- name: Qwen3-32B-QuaRot
190+
os: linux-aarch64-a3-2
191+
config_file_path: Qwen3-32B-QuaRot-eagle3.yaml
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
# Single source of truth for the Weekly-A2 / Weekly-A3 test matrix.
2+
# Mirrors nightly_config.yaml's layout but only contains the sections
3+
# exercised by schedule_weekly_test_a2.yaml and schedule_weekly_test_a3.yaml.
4+
# Adding a new weekly test case is just appending a `- name: ...` entry
5+
# under the matching section.
6+
7+
a2:
8+
accuracy:
9+
# Content migrated from
10+
nightly:
11+
- name: accuracy-group-2
12+
os: linux-aarch64-a2b3-1
13+
model_list:
14+
- ERNIE-4.5-21B-A3B-PT
15+
- Molmo-7B-D-0924
16+
- Llama-3.2-3B-Instruct
17+
pr_only: []
18+
19+
a3:
20+
multi_node:
21+
test_config:
22+
- name: MiniMax-PD-in32k-bs4-1
23+
config_file_path: MiniMax-PD-in32k-bs4-1.yaml
24+
size: 3
25+
double_node:
26+
test_config:
27+
- name: DeepSeek-V3_2-W8A8-EP_weekly
28+
config_file_path: DeepSeek-V3_2-W8A8-EP_weekly.yaml
29+
size: 2
30+
- name: DeepSeek-V3-W8A8_weekly
31+
config_file_path: DeepSeek-V3.yaml
32+
size: 2
33+
- name: multi-node-glm4.7-w8a8c8-layerwise
34+
config_file_path: GLM-4.7-W8A8C8-Mooncake-Layerwise.yaml
35+
size: 2
36+
single_node:
37+
test_config:
38+
- name: deepseek-v3-2-w8a8
39+
os: linux-aarch64-a3-16
40+
config_file_path: DeepSeek-V3.2-W8A8_A3_weekly.yaml
41+
- name: kimi-k2.5
42+
os: linux-aarch64-a3-16
43+
config_file_path: Kimi-K2.5.yaml
44+
- name: kimi-k2.5-32k-512
45+
os: linux-aarch64-a3-16
46+
config_file_path: Kimi-K2.5-32k-512.yaml
47+
- name: Qwen3.5-397B-A17B-w8a8-mtp
48+
os: linux-aarch64-a3-16
49+
config_file_path: Qwen3.5-397B-A17B-W8A8-mtp-A3_weekly.yaml
50+
- name: MiniMax-M2.5-w8a8-QuaRot-A3
51+
os: linux-aarch64-a3-16
52+
config_file_path: MiniMax-M2.5-w8a8-QuaRot-A3.yaml
53+
- name: Qwen3.5-27B-w8a8-A3
54+
os: linux-aarch64-a3-2
55+
config_file_path: Qwen3.5-27B-w8a8-A3.yaml
56+
- name: Qwen3.5-122B-A10B-W8A8-A3
57+
os: linux-aarch64-a3-16
58+
config_file_path: Qwen3.5-122B-A10B-W8A8-A3.yaml
59+
- name: GLM-5_1-W8A8_A3_weekly
60+
os: linux-aarch64-a3-16
61+
config_file_path: GLM-5_1-W8A8_A3_weekly.yaml
62+
- name: glm-5-w4a8
63+
os: linux-aarch64-a3-16
64+
config_file_path: GLM-5.yaml
65+
- name: qwen2-5-vl-7b-epd
66+
os: linux-aarch64-a3-4
67+
config_file_path: Qwen2.5-VL-7B-Instruct-EPD.yaml
68+
- name: MiniMax-M2.5-w8a8
69+
os: linux-aarch64-a3-16
70+
config_file_path: MiniMax-M2.5-W8A8-A3.yaml

0 commit comments

Comments
 (0)