Skip to content

Commit 01a4554

Browse files
authored
Reduce mac CI cost (pytorch#19708)
Skip macOS CoreML/MPS jobs on PRs that don't touch their relevant source. Non-PR events (push to main, schedule, workflow_dispatch, ciflow/* tag) bypass the gate so HUD signal on main is preserved. Linux/Windows jobs untouched.
1 parent 2b7a5a2 commit 01a4554

3 files changed

Lines changed: 110 additions & 1 deletion

File tree

.github/workflows/pull.yml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,12 @@ concurrency:
1515
cancel-in-progress: true
1616

1717
jobs:
18+
# Emits PR diff file list; non-PR events emit '*' so the per-job
19+
# `if:` short-circuits via `event_name != 'pull_request'`.
20+
changed-files:
21+
name: Get changed files
22+
uses: ./.github/workflows/_get-changed-files.yml
23+
1824
test-qnn-wheel-packages-linux:
1925
name: test-qnn-wheel-packages-linux
2026
uses: pytorch/test-infra/.github/workflows/linux_job_v2.yml@main
@@ -1511,6 +1517,17 @@ jobs:
15111517
python -m unittest backends/vulkan/test/test_vulkan_delegate.py -k "*torchao*"
15121518
15131519
test-coreml-bc-macos:
1520+
needs: changed-files
1521+
if: |
1522+
github.event_name != 'pull_request' ||
1523+
contains(needs.changed-files.outputs.changed-files, 'backends/apple/coreml') ||
1524+
contains(needs.changed-files.outputs.changed-files, '.ci/scripts/test_coreml_bc.sh') ||
1525+
contains(needs.changed-files.outputs.changed-files, '.ci/scripts/utils.sh') ||
1526+
contains(needs.changed-files.outputs.changed-files, 'install_executorch.py') ||
1527+
contains(needs.changed-files.outputs.changed-files, 'install_executorch.sh') ||
1528+
contains(needs.changed-files.outputs.changed-files, 'install_requirements.py') ||
1529+
contains(needs.changed-files.outputs.changed-files, 'install_requirements.sh') ||
1530+
contains(needs.changed-files.outputs.changed-files, '.github/workflows/pull.yml')
15141531
name: test-coreml-bc-macos (${{ matrix.runner }})
15151532
uses: pytorch/test-infra/.github/workflows/macos_job.yml@main
15161533
permissions:

.github/workflows/test-backend-coreml.yml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,24 @@ concurrency:
1717
cancel-in-progress: true
1818

1919
jobs:
20+
# Emits PR diff file list; non-PR events emit '*' so the per-job
21+
# `if:` short-circuits via `event_name != 'pull_request'`. This
22+
# workflow always shows on HUD; only the heavy test-coreml job is
23+
# path-gated.
24+
changed-files:
25+
name: Get changed files
26+
uses: ./.github/workflows/_get-changed-files.yml
27+
2028
test-coreml:
29+
needs: changed-files
30+
if: |
31+
github.event_name != 'pull_request' ||
32+
contains(needs.changed-files.outputs.changed-files, 'backends/apple/coreml') ||
33+
contains(needs.changed-files.outputs.changed-files, 'backends/test/suite') ||
34+
contains(needs.changed-files.outputs.changed-files, '.ci/scripts/test_backend.sh') ||
35+
contains(needs.changed-files.outputs.changed-files, '.ci/scripts/setup-macos.sh') ||
36+
contains(needs.changed-files.outputs.changed-files, '.github/workflows/test-backend-coreml.yml') ||
37+
contains(needs.changed-files.outputs.changed-files, '.github/workflows/_test_backend.yml')
2138
uses: ./.github/workflows/_test_backend.yml
2239
with:
2340
backend: coreml

.github/workflows/trunk.yml

Lines changed: 76 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,12 @@ concurrency:
1919
cancel-in-progress: true
2020

2121
jobs:
22+
# Emits PR diff file list; non-PR events emit '*' so the per-job
23+
# `if:` short-circuits via `event_name != 'pull_request'`.
24+
changed-files:
25+
name: Get changed files
26+
uses: ./.github/workflows/_get-changed-files.yml
27+
2228
test-models-macos-cpu:
2329
name: test-models-macos-cpu
2430
uses: pytorch/test-infra/.github/workflows/macos_job.yml@main
@@ -338,6 +344,14 @@ jobs:
338344
backends/arm/test/test_arm_ootb.sh $OOTB_TEST
339345
340346
test-coreml-delegate:
347+
needs: changed-files
348+
if: |
349+
github.event_name != 'pull_request' ||
350+
contains(needs.changed-files.outputs.changed-files, 'backends/apple/coreml') ||
351+
contains(needs.changed-files.outputs.changed-files, 'examples/apple/coreml') ||
352+
contains(needs.changed-files.outputs.changed-files, '.ci/scripts/setup-macos.sh') ||
353+
contains(needs.changed-files.outputs.changed-files, '.ci/scripts/setup-conda.sh') ||
354+
contains(needs.changed-files.outputs.changed-files, '.github/workflows/trunk.yml')
341355
name: test-coreml-delegate
342356
uses: pytorch/test-infra/.github/workflows/macos_job.yml@main
343357
with:
@@ -357,6 +371,17 @@ jobs:
357371
PYTHON_EXECUTABLE=python ${CONDA_RUN} bash backends/apple/coreml/scripts/build_all.sh
358372
359373
test-static-llama-ane:
374+
needs: changed-files
375+
if: |
376+
github.event_name != 'pull_request' ||
377+
contains(needs.changed-files.outputs.changed-files, 'backends/apple/coreml') ||
378+
contains(needs.changed-files.outputs.changed-files, 'examples/apple/coreml') ||
379+
contains(needs.changed-files.outputs.changed-files, 'examples/models/llama') ||
380+
contains(needs.changed-files.outputs.changed-files, 'extension/llm/export') ||
381+
contains(needs.changed-files.outputs.changed-files, 'extension/llm/tokenizers') ||
382+
contains(needs.changed-files.outputs.changed-files, '.ci/scripts/test_ane_static_llama.sh') ||
383+
contains(needs.changed-files.outputs.changed-files, '.ci/scripts/utils.sh') ||
384+
contains(needs.changed-files.outputs.changed-files, '.github/workflows/trunk.yml')
360385
name: test-static-llama-ane
361386
uses: pytorch/test-infra/.github/workflows/macos_job.yml@main
362387
with:
@@ -460,6 +485,23 @@ jobs:
460485
PYTHON_EXECUTABLE=python bash .ci/scripts/test_llama.sh -model stories110M -build_tool "${BUILD_TOOL}" -dtype "${DTYPE}" -mode "${MODE}" -upload "${ARTIFACTS_DIR_NAME}"
461486
462487
test-llama-runner-macos:
488+
needs: changed-files
489+
# Whole-job gate (matrix cells can't be individually if'd):
490+
# mps / coreml / xnnpack+custom+quantize_kv.
491+
if: |
492+
github.event_name != 'pull_request' ||
493+
contains(needs.changed-files.outputs.changed-files, 'backends/apple/coreml') ||
494+
contains(needs.changed-files.outputs.changed-files, 'backends/apple/mps') ||
495+
contains(needs.changed-files.outputs.changed-files, 'backends/xnnpack') ||
496+
contains(needs.changed-files.outputs.changed-files, 'examples/models/llama') ||
497+
contains(needs.changed-files.outputs.changed-files, 'extension/llm/export') ||
498+
contains(needs.changed-files.outputs.changed-files, 'extension/llm/tokenizers') ||
499+
contains(needs.changed-files.outputs.changed-files, 'extension/llm/runner') ||
500+
contains(needs.changed-files.outputs.changed-files, 'extension/llm/custom_ops') ||
501+
contains(needs.changed-files.outputs.changed-files, 'extension/llm/sampler') ||
502+
contains(needs.changed-files.outputs.changed-files, '.ci/scripts/test_llama.sh') ||
503+
contains(needs.changed-files.outputs.changed-files, '.ci/scripts/setup-macos.sh') ||
504+
contains(needs.changed-files.outputs.changed-files, '.github/workflows/trunk.yml')
463505
name: test-llama-runner-mac
464506
uses: pytorch/test-infra/.github/workflows/macos_job.yml@main
465507
strategy:
@@ -636,6 +678,15 @@ jobs:
636678
PYTHON_EXECUTABLE=python bash .ci/scripts/test_model.sh ${{ matrix.model }} "cmake" "qnn"
637679
638680
test-models-macos-coreml:
681+
needs: changed-files
682+
if: |
683+
github.event_name != 'pull_request' ||
684+
contains(needs.changed-files.outputs.changed-files, 'backends/apple/coreml') ||
685+
contains(needs.changed-files.outputs.changed-files, 'examples/apple/coreml') ||
686+
contains(needs.changed-files.outputs.changed-files, 'examples/models') ||
687+
contains(needs.changed-files.outputs.changed-files, '.ci/scripts/test_model.sh') ||
688+
contains(needs.changed-files.outputs.changed-files, '.ci/scripts/setup-macos.sh') ||
689+
contains(needs.changed-files.outputs.changed-files, '.github/workflows/trunk.yml')
639690
name: test-models-macos-coreml
640691
uses: pytorch/test-infra/.github/workflows/macos_job.yml@main
641692
strategy:
@@ -678,6 +729,18 @@ jobs:
678729
PYTHON_EXECUTABLE=python ${CONDA_RUN} bash .ci/scripts/test_model.sh "${MODEL_NAME}" "${BUILD_TOOL}" "${BACKEND}"
679730
680731
test-models-macos-mps:
732+
needs: changed-files
733+
if: |
734+
github.event_name != 'pull_request' ||
735+
contains(needs.changed-files.outputs.changed-files, 'backends/apple/mps') ||
736+
contains(needs.changed-files.outputs.changed-files, 'examples/apple/mps') ||
737+
contains(needs.changed-files.outputs.changed-files, 'examples/models') ||
738+
contains(needs.changed-files.outputs.changed-files, 'devtools/bundled_program') ||
739+
contains(needs.changed-files.outputs.changed-files, 'devtools/etrecord') ||
740+
contains(needs.changed-files.outputs.changed-files, 'extension/llm/export') ||
741+
contains(needs.changed-files.outputs.changed-files, '.ci/scripts/test_model.sh') ||
742+
contains(needs.changed-files.outputs.changed-files, '.ci/scripts/setup-macos.sh') ||
743+
contains(needs.changed-files.outputs.changed-files, '.github/workflows/trunk.yml')
681744
name: test-models-macos-mps
682745
uses: pytorch/test-infra/.github/workflows/macos_job.yml@main
683746
strategy:
@@ -792,8 +855,20 @@ jobs:
792855
echo "::endgroup::"
793856
794857
test-huggingface-transformers-macos:
858+
needs: changed-files
795859
# NB: Don't run this on fork PRs because they won't have access to the secret and would fail anyway
796-
if: ${{ !github.event.pull_request.head.repo.fork }}
860+
if: |
861+
!github.event.pull_request.head.repo.fork &&
862+
(
863+
github.event_name != 'pull_request' ||
864+
contains(needs.changed-files.outputs.changed-files, 'backends/apple/coreml') ||
865+
contains(needs.changed-files.outputs.changed-files, 'extension/llm/runner') ||
866+
contains(needs.changed-files.outputs.changed-files, '.ci/scripts/test_huggingface_optimum_model.py') ||
867+
contains(needs.changed-files.outputs.changed-files, '.ci/docker/ci_commit_pins/optimum-executorch.txt') ||
868+
contains(needs.changed-files.outputs.changed-files, 'install_executorch.py') ||
869+
contains(needs.changed-files.outputs.changed-files, 'install_requirements.py') ||
870+
contains(needs.changed-files.outputs.changed-files, '.github/workflows/trunk.yml')
871+
)
797872
name: test-huggingface-transformers-macos
798873
uses: pytorch/test-infra/.github/workflows/macos_job.yml@main
799874
permissions:

0 commit comments

Comments
 (0)