1.5.10.post
: fix * in dependency versions
#40846
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Test | |
# see: https://help.github.com/en/actions/reference/events-that-trigger-workflows | |
on: # Trigger the workflow on push or pull request, but only for the master branch | |
push: | |
branches: [master, "release/*"] | |
pull_request: | |
branches: [master, "release/*"] | |
types: [opened, reopened, ready_for_review, synchronize] | |
jobs: | |
cpu: | |
runs-on: ${{ matrix.os }} | |
if: github.event.pull_request.draft == false | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-18.04, windows-2019, macOS-10.15] | |
python-version: ["3.7", "3.9"] # minimum, maximum | |
requires: ["oldest", "latest"] | |
release: ["stable"] | |
include: | |
# test 3.6 only on oldest until EOL: https://github.com/PyTorchLightning/pytorch-lightning/issues/9981 | |
- {os: ubuntu-18.04, python-version: "3.6", requires: "oldest", release: "stable"} | |
- {os: windows-2019, python-version: "3.6", requires: "oldest", release: "stable"} | |
- {os: macOS-10.15, python-version: "3.6", requires: "oldest", release: "stable"} | |
# nightly: add when there's a release candidate | |
#- {os: ubuntu-20.04, python-version: "3.10", requires: "latest", release: "pre"} | |
exclude: | |
# Skip if torch<1.8 and py3.9 on Linux: https://github.com/pytorch/pytorch/issues/50014 | |
- {os: ubuntu-18.04, python-version: "3.9", requires: "oldest", release: "stable"} | |
timeout-minutes: 40 | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v2 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Weekly reset caching | |
run: echo "::set-output name=period::$(python -c 'import time ; days = time.time() / 60 / 60 / 24 ; print(int(days / 7))' 2>&1)" | |
id: times | |
- name: Upgrade pip | |
run: | | |
python --version | |
# needed for `pip cache` command | |
pip install --upgrade pip --user | |
pip --version | |
# Github Actions: Run step on specific OS: https://stackoverflow.com/a/57948488/4521646 | |
- name: Setup macOS | |
if: runner.os == 'macOS' | |
run: | | |
brew install openmpi libuv # Horovod on macOS requires OpenMPI, Gloo not currently supported | |
- name: Setup Windows | |
if: runner.os == 'windows' | |
run: | | |
python .github/prune-packages.py requirements/extra.txt "horovod" | |
- name: Set min. dependencies | |
if: matrix.requires == 'oldest' | |
run: | | |
python .github/set-min-requirements.py | |
# Note: This uses an internal pip API and may not always work | |
# https://github.com/actions/cache/blob/master/examples.md#multiple-oss-in-a-workflow | |
- name: Get pip cache dir | |
id: pip-cache | |
run: | | |
echo "::set-output name=dir::$(pip cache dir)" | |
- name: pip cache | |
uses: actions/cache@v2 | |
with: | |
path: ${{ steps.pip-cache.outputs.dir }} | |
key: ${{ runner.os }}-pip-td${{ steps.times.outputs.period }}-py${{ matrix.python-version }}-${{ matrix.release }}-${{ matrix.requires }}-${{ hashFiles('requirements.txt') }}-${{ hashFiles('requirements/extra.txt') }} | |
restore-keys: | | |
${{ runner.os }}-pip-td${{ steps.times.outputs.period }}-py${{ matrix.python-version }}-${{ matrix.release }}-${{ matrix.requires }}- | |
- name: Pull checkpoints from S3 | |
working-directory: ./legacy | |
run: | | |
# wget is simpler but does not work on Windows | |
python -c "from urllib.request import urlretrieve ; urlretrieve('https://pl-public-data.s3.amazonaws.com/legacy/checkpoints.zip', 'checkpoints.zip')" | |
ls -l . | |
unzip -o checkpoints.zip | |
ls -l checkpoints/ | |
- name: Install dependencies | |
run: | | |
flag=$(python -c "print('--pre' if '${{matrix.release}}' == 'pre' else '')" 2>&1) | |
pip install --requirement requirements.txt --find-links https://download.pytorch.org/whl/cpu/torch_stable.html --upgrade $flag | |
# adjust versions according installed Torch version | |
python ./requirements/adjust_versions.py requirements/examples.txt | |
pip install --requirement requirements/examples.txt --find-links https://download.pytorch.org/whl/cpu/torch_stable.html --upgrade | |
pip install --requirement requirements/test.txt --upgrade | |
pip list | |
shell: bash | |
- name: Install extra dependencies | |
env: | |
HOROVOD_BUILD_ARCH_FLAGS: "-mfma" | |
HOROVOD_WITHOUT_MXNET: 1 | |
HOROVOD_WITHOUT_TENSORFLOW: 1 | |
run: | | |
# adjust versions according installed Torch version | |
python ./requirements/adjust_versions.py requirements/extra.txt | |
pip install --requirement ./requirements/extra.txt --find-links https://download.pytorch.org/whl/cpu/torch_stable.html --upgrade | |
pip list | |
shell: bash | |
- name: Reinstall Horovod if necessary | |
if: runner.os != 'windows' | |
env: | |
HOROVOD_BUILD_ARCH_FLAGS: "-mfma" | |
HOROVOD_WITHOUT_MXNET: 1 | |
HOROVOD_WITHOUT_TENSORFLOW: 1 | |
run: | | |
HOROVOD_BUILT=$(python -c "import horovod.torch; horovod.torch.nccl_built(); print('SUCCESS')" || true) | |
if [[ $HOROVOD_BUILT != "SUCCESS" ]]; then | |
pip uninstall -y horovod | |
echo $(grep "horovod" requirements/extra.txt) > requirements/horovod.txt | |
pip install --no-cache-dir -r requirements/horovod.txt | |
fi | |
horovodrun --check-build | |
shell: bash | |
- name: Cache datasets | |
uses: actions/cache@v2 | |
with: | |
path: Datasets | |
key: pl-dataset | |
- name: Tests | |
run: | | |
# NOTE: do not include coverage report here, see: https://github.com/nedbat/coveragepy/issues/1003 | |
coverage run --source pytorch_lightning -m pytest pytorch_lightning tests -v --durations=50 --junitxml=junit/test-results-${{ runner.os }}-py${{ matrix.python-version }}-${{ matrix.requires }}-${{ matrix.release }}.xml | |
- name: Examples | |
run: | | |
python -m pytest pl_examples -v --durations=10 | |
- name: Upload pytest results | |
uses: actions/upload-artifact@v2 | |
with: | |
name: pytest-results-${{ runner.os }}-${{ matrix.python-version }}-${{ matrix.requires }}-${{ matrix.release }} | |
path: junit/test-results-${{ runner.os }}-${{ matrix.python-version }}-${{ matrix.requires }}-${{ matrix.release }}.xml | |
if: failure() | |
- name: Statistics | |
if: success() | |
run: | | |
coverage report | |
coverage xml | |
- name: Upload coverage to Codecov | |
uses: codecov/codecov-action@v1 | |
if: always() | |
# see: https://github.com/actions/toolkit/issues/399 | |
continue-on-error: true | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
file: coverage.xml | |
flags: cpu,pytest,python${{ matrix.python-version }} | |
name: CPU-coverage | |
fail_ci_if_error: false |