1313 get-jobs :
1414 runs-on : ubuntu-latest
1515 outputs :
16- multi-node-search-space-config : ${{ steps.get-jobs.outputs.multi-node-search-space-config }}
17- single-node-search-space-config : ${{ steps.get-jobs.outputs.single-node-search-space-config }}
16+ search-space-config : ${{ steps.get-jobs.outputs.search-space-config }}
1817 steps :
1918 - name : Checkout code
2019 uses : actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
@@ -29,70 +28,79 @@ jobs:
2928 --base-ref origin/main \
3029 --head-ref ${{ github.sha }})
3130
31+ echo "search-space-config=$CONFIG_JSON" >> $GITHUB_OUTPUT
3232
33- echo "multi-node-search-space-config=$CONFIG_JSON" >> $GITHUB_OUTPUT
34- echo "single-node-search-space-config=$CONFIG_JSON" >> $GITHUB_OUTPUT
35-
36-
37- # # Use existence (or non-existence) of 'prefill' field as a proxy to determined multi-node tests
38- # CONFIG_JSON_MULTI_NODE=$(echo "$CONFIG_JSON" | jq -c '[.[] | select(.prefill != null)]')
39- # CONFIG_JSON_SINGLE_NODE=$(echo "$CONFIG_JSON" | jq -c '[.[] | select(.prefill == null)]')
40-
41- # CONFIG_JSON_MULTI_NODE_1K1K=$(echo "$CONFIG_JSON_MULTI_NODE" | jq -c '[.[] | select(.isl == 1024 and .osl == 1024)]')
42- # CONFIG_JSON_MULTI_NODE_1K8K=$(echo "$CONFIG_JSON_MULTI_NODE" | jq -c '[.[] | select(.isl == 1024 and .osl == 8192)]')
43- # CONFIG_JSON_MULTI_NODE_8K1K=$(echo "$CONFIG_JSON_MULTI_NODE" | jq -c '[.[] | select(.isl == 8192 and .osl == 1024)]')
44-
45- # CONFIG_JSON_SINGLE_NODE_1K1K=$(echo "$CONFIG_JSON_SINGLE_NODE" | jq -c '[.[] | select(.isl == 1024 and .osl == 1024)]')
46- # CONFIG_JSON_SINGLE_NODE_1K8K=$(echo "$CONFIG_JSON_SINGLE_NODE" | jq -c '[.[] | select(.isl == 1024 and .osl == 8192)]')
47- # CONFIG_JSON_SINGLE_NODE_8K1K=$(echo "$CONFIG_JSON_SINGLE_NODE" | jq -c '[.[] | select(.isl == 8192 and .osl == 1024)]')
48-
49- # test-sweep-multi-node:
50- # needs: get-jobs
51- # if: ${{ needs.get-jobs.outputs.multi-node-search-space-config != '[]' }}
52- # uses: ./.github/workflows/benchmark-multinode-tmpl.yml
53- # name: multi-node /
54- # strategy:
55- # fail-fast: false
56- # matrix:
57- # config: ${{ fromJson(needs.get-jobs.outputs.multi-node-search-space-config).single_node['1k1k'] }}
58- # secrets: inherit
59- # with:
60- # isl: ${{ matrix.config.isl }}
61- # osl: ${{ matrix.config.osl }}
62- # max-model-len: ${{ matrix.config.max-model-len }}
63- # runner: ${{ matrix.config.runner }}
64- # image: ${{ matrix.config.image }}
65- # model: ${{ matrix.config.model }}
66- # model-prefix: ${{ matrix.config.model-prefix }}
67- # framework: ${{ matrix.config.framework }}
68- # precision: ${{ matrix.config.precision }}
69- # exp-name: ${{ matrix.config.exp-name }}
70- # conc-list: ${{ toJson(matrix.config.conc) }}
71- # spec-decoding: ${{ matrix.config.spec-decoding }}
72- # disagg: ${{ matrix.config.disagg }}
73-
74- # prefill-num-worker: ${{ matrix.config.prefill.num-worker }}
75- # prefill-tp: ${{ matrix.config.prefill.tp }}
76- # prefill-ep: ${{ matrix.config.prefill.ep }}
77- # prefill-dp-attn: ${{ matrix.config.prefill.dp-attn }}
78- # prefill-additional-settings: ${{ toJson(matrix.config.prefill.additional-settings) }}
79-
80- # decode-num-worker: ${{ matrix.config.decode.num-worker }}
81- # decode-tp: ${{ matrix.config.decode.tp }}
82- # decode-ep: ${{ matrix.config.decode.ep }}
83- # decode-dp-attn: ${{ matrix.config.decode.dp-attn }}
84- # decode-additional-settings: ${{ toJson(matrix.config.decode.additional-settings) }}
33+ sweep-multi-node-1k1k :
34+ needs : get-jobs
35+ if : ${{ needs.get-jobs.outputs.search-space-config.multi_node['1k1k'] != '[]' }}
36+ uses : ./.github/workflows/benchmark-multinode-tmpl.yml
37+ name : multi-node 1k1k /
38+ strategy :
39+ fail-fast : false
40+ matrix :
41+ config : ${{ fromJson(needs.get-jobs.outputs.search-space-config).multi_node['1k1k'] }}
42+ secrets : inherit
43+ with : &multi-node-inputs
44+ isl : ${{ matrix.config.isl }}
45+ osl : ${{ matrix.config.osl }}
46+ max-model-len : ${{ matrix.config.max-model-len }}
47+ runner : ${{ matrix.config.runner }}
48+ image : ${{ matrix.config.image }}
49+ model : ${{ matrix.config.model }}
50+ model-prefix : ${{ matrix.config.model-prefix }}
51+ framework : ${{ matrix.config.framework }}
52+ precision : ${{ matrix.config.precision }}
53+ exp-name : ${{ matrix.config.exp-name }}
54+ conc-list : ${{ toJson(matrix.config.conc) }}
55+ spec-decoding : ${{ matrix.config.spec-decoding }}
56+ disagg : ${{ matrix.config.disagg }}
57+
58+ prefill-num-worker : ${{ matrix.config.prefill.num-worker }}
59+ prefill-tp : ${{ matrix.config.prefill.tp }}
60+ prefill-ep : ${{ matrix.config.prefill.ep }}
61+ prefill-dp-attn : ${{ matrix.config.prefill.dp-attn }}
62+ prefill-additional-settings : ${{ toJson(matrix.config.prefill.additional-settings) }}
63+
64+ decode-num-worker : ${{ matrix.config.decode.num-worker }}
65+ decode-tp : ${{ matrix.config.decode.tp }}
66+ decode-ep : ${{ matrix.config.decode.ep }}
67+ decode-dp-attn : ${{ matrix.config.decode.dp-attn }}
68+ decode-additional-settings : ${{ toJson(matrix.config.decode.additional-settings) }}
69+
70+ sweep-multi-node-1k8k :
71+ needs : get-jobs
72+ if : ${{ needs.get-jobs.outputs.search-space-config.multi_node['1k8k'] != '[]' }}
73+ uses : ./.github/workflows/benchmark-multinode-tmpl.yml
74+ name : multi-node 1k8k /
75+ strategy :
76+ fail-fast : false
77+ matrix :
78+ config : ${{ fromJson(needs.get-jobs.outputs.search-space-config).multi_node['1k8k'] }}
79+ secrets : inherit
80+ with : *multi-node-inputs
81+
82+ sweep-multi-node-8k1k :
83+ needs : get-jobs
84+ if : ${{ needs.get-jobs.outputs.search-space-config.multi_node['8k1k'] != '[]' }}
85+ uses : ./.github/workflows/benchmark-multinode-tmpl.yml
86+ name : multi-node 1k8k /
87+ strategy :
88+ fail-fast : false
89+ matrix :
90+ config : ${{ fromJson(needs.get-jobs.outputs.search-space-config).multi_node['8k1k'] }}
91+ secrets : inherit
92+ with : *multi-node-inputs
8593
8694 sweep-single-node-1k1k :
8795 needs : get-jobs
88- if : ${{ needs.get-jobs.outputs.single-node- search-space-config.single_node['1k1k'] != '[]' }}
96+ if : ${{ needs.get-jobs.outputs.search-space-config.single_node['1k1k'] != '[]' }}
8997 uses : ./.github/workflows/benchmark-tmpl.yml
9098 name : single-node 1k1k /
9199 strategy :
92100 fail-fast : false
93101 matrix :
94- config : ${{ fromJson(needs.get-jobs.outputs.multi-node- search-space-config).single_node['1k1k'] }}
95- secrets : inherit
102+ config : ${{ fromJson(needs.get-jobs.outputs.search-space-config).single_node['1k1k'] }}
103+ secrets : inherit
96104 with : &single-node-inputs
97105 exp-name : ${{ matrix.config.exp-name }}
98106 isl : ${{ matrix.config.isl }}
@@ -113,30 +121,38 @@ jobs:
113121
114122 sweep-single-node-1k8k :
115123 needs : get-jobs
116- if : ${{ needs.get-jobs.outputs.single-node- search-space-config.single_node['1k8k'] != '[]' }}
124+ if : ${{ needs.get-jobs.outputs.search-space-config.single_node['1k8k'] != '[]' }}
117125 uses : ./.github/workflows/benchmark-tmpl.yml
118126 name : single-node 1k8k /
119127 strategy :
120128 fail-fast : false
121129 matrix :
122- config : ${{ fromJson(needs.get-jobs.outputs.multi-node- search-space-config).single_node['1k8k'] }}
123- secrets : inherit
130+ config : ${{ fromJson(needs.get-jobs.outputs.search-space-config).single_node['1k8k'] }}
131+ secrets : inherit
124132 with : *single-node-inputs
125133
126134 sweep-single-node-8k1k :
127135 needs : get-jobs
128- if : ${{ needs.get-jobs.outputs.single-node- search-space-config.single_node['8k1k'] != '[]' }}
136+ if : ${{ needs.get-jobs.outputs.search-space-config.single_node['8k1k'] != '[]' }}
129137 uses : ./.github/workflows/benchmark-tmpl.yml
130138 name : single-node 8k1k /
131139 strategy :
132140 fail-fast : false
133141 matrix :
134- config : ${{ fromJson(needs.get-jobs.outputs.multi-node- search-space-config).single_node['8k1k'] }}
135- secrets : inherit
142+ config : ${{ fromJson(needs.get-jobs.outputs.search-space-config).single_node['8k1k'] }}
143+ secrets : inherit
136144 with : *single-node-inputs
137145
138146 collect-results :
139- needs : [sweep-single-node-1k1k, sweep-single-node-1k8k, sweep-single-node-8k1k]
147+ needs :
148+ [
149+ sweep-single-node-1k1k,
150+ sweep-single-node-1k8k,
151+ sweep-single-node-8k1k,
152+ sweep-multi-node-1k1k,
153+ sweep-multi-node-1k8k,
154+ sweep-multi-node-8k1k,
155+ ]
140156 if : ${{ always() }}
141157 uses : ./.github/workflows/collect-results.yml
142158 secrets : inherit
0 commit comments