|
98 | 98 |
|
99 | 99 | echo "benchmark_configs is: ${{ steps.set-parameters.outputs.benchmark_configs }}"
|
100 | 100 |
|
101 |
| - prepare-test-specs: |
102 |
| - runs-on: linux.2xlarge |
103 |
| - needs: set-parameters |
104 |
| - strategy: |
105 |
| - matrix: ${{ fromJson(needs.set-parameters.outputs.benchmark_configs) }} |
106 |
| - fail-fast: false |
107 |
| - steps: |
108 |
| - - uses: actions/checkout@v3 |
109 |
| - |
110 |
| - - name: Prepare the spec |
111 |
| - id: prepare |
112 |
| - shell: bash |
113 |
| - env: |
114 |
| - BENCHMARK_CONFIG: ${{ toJSON(matrix) }} |
115 |
| - working-directory: extension/benchmark/apple/Benchmark |
116 |
| - run: | |
117 |
| - set -eux |
118 |
| -
|
119 |
| - # The model will be exported in the next step to this S3 path |
120 |
| - MODEL_PATH="https://gha-artifacts.s3.amazonaws.com/${{ github.repository }}/${{ github.run_id }}/artifacts/${{ matrix.model }}_${{ matrix.config }}/model.zip" |
121 |
| - # We could write a script to properly use jinja here, but there is only one variable, |
122 |
| - # so let's just sed it |
123 |
| - sed -i -e 's,{{ model_path }},'"${MODEL_PATH}"',g' default-ios-device-farm-appium-test-spec.yml.j2 |
124 |
| -
|
125 |
| - BENCHMARK_CONFIG_ID=$(echo "${{ matrix.model }}_${{ matrix.config }}" | sed -e 's/[^A-Za-z0-9._-]/_/g') |
126 |
| - # The config for this benchmark runs, we save it in the test spec so that it can be fetched |
127 |
| - # later by the upload script |
128 |
| - sed -i -e 's,{{ benchmark_config_id }},'"${BENCHMARK_CONFIG_ID}"',g' default-ios-device-farm-appium-test-spec.yml.j2 |
129 |
| -
|
130 |
| - cp default-ios-device-farm-appium-test-spec.yml.j2 default-ios-device-farm-appium-test-spec.yml |
131 |
| - # Just print the test spec for debugging |
132 |
| - cat default-ios-device-farm-appium-test-spec.yml |
133 |
| -
|
134 |
| - # Save the benchmark configs so that we can use it later in the dashboard |
135 |
| - echo "${BENCHMARK_CONFIG}" > "${BENCHMARK_CONFIG_ID}.json" |
136 |
| - echo "benchmark-config-id=${BENCHMARK_CONFIG_ID}" >> $GITHUB_OUTPUT |
137 |
| -
|
138 |
| - - name: Upload the spec |
139 |
| - uses: seemethere/upload-artifact-s3@v5 |
140 |
| - with: |
141 |
| - s3-bucket: gha-artifacts |
142 |
| - s3-prefix: | |
143 |
| - ${{ github.repository }}/${{ github.run_id }}/artifacts/${{ matrix.model }}_${{ matrix.config }} |
144 |
| - retention-days: 1 |
145 |
| - if-no-files-found: error |
146 |
| - path: extension/benchmark/apple/Benchmark/default-ios-device-farm-appium-test-spec.yml |
147 |
| - |
148 |
| - - name: Update the benchmark configs |
149 |
| - uses: seemethere/upload-artifact-s3@v5 |
150 |
| - with: |
151 |
| - s3-bucket: gha-artifacts |
152 |
| - s3-prefix: | |
153 |
| - ${{ github.repository }}/${{ github.run_id }}/artifacts/benchmark-configs/ |
154 |
| - retention-days: 1 |
155 |
| - if-no-files-found: error |
156 |
| - path: extension/benchmark/apple/Benchmark/${{ steps.prepare.outputs.benchmark-config-id }}.json |
157 |
| - |
158 | 101 | export-models:
|
159 | 102 | name: export-models
|
160 | 103 | uses: pytorch/test-infra/.github/workflows/macos_job.yml@main
|
@@ -344,6 +287,68 @@ jobs:
|
344 | 287 | fi
|
345 | 288 | echo "::endgroup::"
|
346 | 289 |
|
| 290 | + prepare-test-specs: |
| 291 | + runs-on: linux.2xlarge |
| 292 | + needs: |
| 293 | + - set-parameters |
| 294 | + - export-models |
| 295 | + strategy: |
| 296 | + matrix: ${{ fromJson(needs.set-parameters.outputs.benchmark_configs) }} |
| 297 | + fail-fast: false |
| 298 | + steps: |
| 299 | + - uses: actions/checkout@v3 |
| 300 | + |
| 301 | + - name: Prepare the spec |
| 302 | + id: prepare |
| 303 | + shell: bash |
| 304 | + env: |
| 305 | + BENCHMARK_CONFIG: ${{ toJSON(matrix) }} |
| 306 | + working-directory: extension/benchmark/apple/Benchmark |
| 307 | + run: | |
| 308 | + set -eux |
| 309 | +
|
| 310 | + # The model will be exported in the next step to this S3 path |
| 311 | + MODEL_PATH="https://gha-artifacts.s3.amazonaws.com/${{ github.repository }}/${{ github.run_id }}/artifacts/${{ matrix.model }}_${{ matrix.config }}/model.zip" |
| 312 | + # Check if the model artifact exists, fail this step skip generating test-spec. |
| 313 | + curl -s --head -f ${MODEL_PATH} |
| 314 | + # We could write a script to properly use jinja here, but there is only one variable, |
| 315 | + # so let's just sed it |
| 316 | + sed -i -e 's,{{ model_path }},'"${MODEL_PATH}"',g' default-ios-device-farm-appium-test-spec.yml.j2 |
| 317 | +
|
| 318 | + BENCHMARK_CONFIG_ID=$(echo "${{ matrix.model }}_${{ matrix.config }}" | sed -e 's/[^A-Za-z0-9._-]/_/g') |
| 319 | + # The config for this benchmark runs, we save it in the test spec so that it can be fetched |
| 320 | + # later by the upload script |
| 321 | + sed -i -e 's,{{ benchmark_config_id }},'"${BENCHMARK_CONFIG_ID}"',g' default-ios-device-farm-appium-test-spec.yml.j2 |
| 322 | +
|
| 323 | + cp default-ios-device-farm-appium-test-spec.yml.j2 default-ios-device-farm-appium-test-spec.yml |
| 324 | + # Just print the test spec for debugging |
| 325 | + cat default-ios-device-farm-appium-test-spec.yml |
| 326 | +
|
| 327 | + # Save the benchmark configs so that we can use it later in the dashboard |
| 328 | + echo "${BENCHMARK_CONFIG}" > "${BENCHMARK_CONFIG_ID}.json" |
| 329 | + echo "benchmark-config-id=${BENCHMARK_CONFIG_ID}" >> $GITHUB_OUTPUT |
| 330 | +
|
| 331 | + - name: Upload the spec |
| 332 | + uses: seemethere/upload-artifact-s3@v5 |
| 333 | + with: |
| 334 | + s3-bucket: gha-artifacts |
| 335 | + s3-prefix: | |
| 336 | + ${{ github.repository }}/${{ github.run_id }}/artifacts/${{ matrix.model }}_${{ matrix.config }} |
| 337 | + retention-days: 1 |
| 338 | + if-no-files-found: error |
| 339 | + path: extension/benchmark/apple/Benchmark/default-ios-device-farm-appium-test-spec.yml |
| 340 | + |
| 341 | + - name: Update the benchmark configs |
| 342 | + uses: seemethere/upload-artifact-s3@v5 |
| 343 | + with: |
| 344 | + s3-bucket: gha-artifacts |
| 345 | + s3-prefix: | |
| 346 | + ${{ github.repository }}/${{ github.run_id }}/artifacts/benchmark-configs/ |
| 347 | + retention-days: 1 |
| 348 | + if-no-files-found: error |
| 349 | + path: extension/benchmark/apple/Benchmark/${{ steps.prepare.outputs.benchmark-config-id }}.json |
| 350 | + |
| 351 | + |
347 | 352 | build-benchmark-app:
|
348 | 353 | name: build-benchmark-app
|
349 | 354 | uses: pytorch/test-infra/.github/workflows/macos_job.yml@main
|
|
0 commit comments