forked from pytorch/executorch
-
Notifications
You must be signed in to change notification settings - Fork 1
132 lines (120 loc) · 4.72 KB
/
pull_mps.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
name: pull_mps
on:
pull_request:
push:
branches:
- main
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}-${{ github.event_name == 'workflow_dispatch' }}-${{ github.event_name == 'schedule' }}
cancel-in-progress: true
jobs:
gather-models-mps:
runs-on: macos-executorch
outputs:
models: ${{ steps.gather-models-mps.outputs.models }}
mps_models: ${{ steps.gather-models-mps.outputs.mps_models }}
steps:
- uses: actions/checkout@v3
with:
submodules: 'true'
- uses: actions/setup-python@v4
with:
python-version: '3.10'
cache: pip
- name: Extract the list of models to test
id: gather-models-mps
run: |
set -eux
# Conda setup
if conda info --envs | grep -w -q "env-${{ runner.name }}"; then echo "env-${{ runner.name }} already exists"; else conda create -y -n "env-${{ runner.name }}"; fi
CONDA_ENV="~/miniconda3/envs/env-${{ runner.name }}"
if [[ -n "$CONDA_ENV" ]]; then
# Use binaries under conda environment
export PATH="$CONDA_ENV/bin":$PATH
fi
conda init zsh
conda init
source ~/miniconda3/bin/activate
conda deactivate
conda activate "$CONDA_ENV"
source .ci/scripts/utils.sh
# This is a simple Python script but as it tries to import executorch.examples.models,
# it requires a whole bunch of ExecuTorch dependencies on the Docker image
install_pip_dependencies
install_executorch
PYTHONPATH="${PWD}" python -m backends.apple.mps.ci.scripts.gather_test_models_mps
test-mps-models:
name: test-mps-models
runs-on: macos-executorch
needs: gather-models-mps
strategy:
matrix: ${{ fromJSON(needs.gather-models-mps.outputs.models) }}
fail-fast: false
steps:
- uses: actions/checkout@v3
with:
submodules: 'true'
- name: Run test ${{ matrix.test }}
if: always()
run: |
set -eux
# Conda setup
if conda info --envs | grep -w -q "env-${{ runner.name }}"; then echo "env-${{ runner.name }} already exists"; else conda create -y -n "env-${{ runner.name }}"; fi
CONDA_ENV="~/miniconda3/envs/env-${{ runner.name }}"
if [[ -n "$CONDA_ENV" ]]; then
# Use binaries under conda environment
export PATH="$CONDA_ENV/bin":$PATH
fi
conda init zsh
conda init
source ~/miniconda3/bin/activate
conda deactivate
conda activate "$CONDA_ENV"
WORKSPACE=$(pwd)
pushd "${WORKSPACE}"
MODEL_NAME=${{ matrix.model }}
BUILD_TOOL=${{ matrix.build-tool }}
# Setup MacOS dependencies as there is no Docker support on MacOS atm
PYTHON_EXECUTABLE=$(which python3) bash .ci/scripts/setup-macos.sh "${BUILD_TOOL}"
PYTHON_EXECUTABLE=$(which python3) bash backends/apple/mps/install_requirements.sh
# Build and test ExecuTorch
PYTHON_EXECUTABLE=$(which python3) bash backends/apple/mps/ci/scripts/test-mps.sh "${MODEL_NAME}" "${BUILD_TOOL}" false
popd
test-mps:
name: test-mps
runs-on: macos-executorch
needs: gather-models-mps
strategy:
matrix: ${{ fromJSON(needs.gather-models-mps.outputs.mps_models) }}
fail-fast: false
steps:
- uses: actions/checkout@v3
with:
submodules: 'true'
- name: Run test ${{ matrix.test }}
if: always()
run: |
set -eux
# Conda setup
if conda info --envs | grep -w -q "env-${{ runner.name }}"; then echo "env-${{ runner.name }} already exists"; else conda create -y -n "env-${{ runner.name }}"; fi
CONDA_ENV="~/miniconda3/envs/env-${{ runner.name }}"
if [[ -n "$CONDA_ENV" ]]; then
# Use binaries under conda environment
export PATH="$CONDA_ENV/bin":$PATH
fi
conda init zsh
conda init
source ~/miniconda3/bin/activate
conda deactivate
conda activate "$CONDA_ENV"
WORKSPACE=$(pwd)
pushd "${WORKSPACE}"
MODEL_NAME=${{ matrix.model }}
BUILD_TOOL=${{ matrix.build-tool }}
# Setup MacOS dependencies as there is no Docker support on MacOS atm
PYTHON_EXECUTABLE=python3 bash .ci/scripts/setup-macos.sh "${BUILD_TOOL}"
PYTHON_EXECUTABLE=python3 bash backends/apple/mps/install_requirements.sh
# Build and test ExecuTorch
PYTHON_EXECUTABLE=python3 bash backends/apple/mps/ci/scripts/test-mps.sh "${MODEL_NAME}" "${BUILD_TOOL}" true
popd