diff --git a/.github/workflows/_build-packages.yml b/.github/workflows/_build-packages.yml index 5a780c1d33854..b3e2a5e042b16 100644 --- a/.github/workflows/_build-packages.yml +++ b/.github/workflows/_build-packages.yml @@ -20,7 +20,7 @@ defaults: jobs: build-packages: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 strategy: matrix: pkg-name: ${{ fromJSON(inputs.pkg-names) }} @@ -49,7 +49,7 @@ jobs: merge-artifacts: needs: build-packages - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 steps: - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 with: # download all build artifacts diff --git a/.github/workflows/_legacy-checkpoints.yml b/.github/workflows/_legacy-checkpoints.yml index 1b893005a91f1..5e8b9e9d4c118 100644 --- a/.github/workflows/_legacy-checkpoints.yml +++ b/.github/workflows/_legacy-checkpoints.yml @@ -53,7 +53,7 @@ defaults: jobs: create-legacy-ckpts: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 outputs: pl-version: ${{ steps.decide-version.outputs.pl-version }} steps: @@ -138,7 +138,7 @@ jobs: aws s3 cp $AWS_RUN checkpoints.zip s3://pl-public-data/legacy/ --acl public-read add-ckpt-test: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 if: inputs.create_pr needs: create-legacy-ckpts env: diff --git a/.github/workflows/ci-pkg-install.yml b/.github/workflows/ci-pkg-install.yml index 62ef2737bc9c9..8bd8af101a0e7 100644 --- a/.github/workflows/ci-pkg-install.yml +++ b/.github/workflows/ci-pkg-install.yml @@ -42,7 +42,7 @@ jobs: strategy: fail-fast: false matrix: - os: ["ubuntu-22.04", "macOS-14", "windows-2022"] + os: ["ubuntu-24.04", "macos-26", "windows-2025"] pkg-name: ["fabric", "pytorch", "lightning", "notset"] python-version: ["3.10", "3.11"] env: diff --git a/.github/workflows/ci-tests-fabric.yml b/.github/workflows/ci-tests-fabric.yml index 1f55b944d8f64..ddf0816307eba 100644 --- a/.github/workflows/ci-tests-fabric.yml +++ b/.github/workflows/ci-tests-fabric.yml @@ -38,7 +38,7 @@ jobs: strategy: fail-fast: false matrix: - os: [macOS-14, ubuntu-22.04, windows-2022] + os: [macos-26, ubuntu-24.04, windows-2025] config: # Test unified "lightning" package at the oldest supported and the latest PyTorch - { pkg-name: "lightning", python-version: "3.10", pytorch-version: "2.6" } @@ -68,7 +68,7 @@ jobs: FREEZE_REQUIREMENTS: ${{ ! (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/heads/release/')) }} TORCH_URL_STABLE: "https://download.pytorch.org/whl/cpu/" # TODO: Remove this - Enable running MPS tests on this platform - DISABLE_MPS: ${{ matrix.os == 'macOS-14' && '1' || '0' }} + DISABLE_MPS: ${{ startsWith(matrix.os, 'macos') && '1' || '0' }} UV_TORCH_BACKEND: "cpu" # Supply-chain guard: skip PyPI releases newer than this. See https://docs.astral.sh/uv/reference/settings/#exclude-newer UV_EXCLUDE_NEWER: "2 days" @@ -154,9 +154,12 @@ jobs: - name: Testing Fabric working-directory: tests/tests_fabric # NOTE: do not include coverage report here, see: https://github.com/nedbat/coveragepy/issues/1003 + # On macOS 15+ runners, Local Network Privacy blocks mDNS for non-root processes, so every + # hostname/reverse-DNS lookup (e.g. torch's TCPStore connect) stalls ~35s; root is exempt. + # See https://github.com/actions/runner-images/issues/14568 and https://github.com/actions/runner-images/issues/10924 run: | echo $GITHUB_RUN_ID - python -m coverage run --source ${{ env.COVERAGE_SCOPE }} \ + ${{ runner.os == 'macOS' && 'sudo -E env "PATH=$PATH"' || '' }} python -m coverage run --source ${{ env.COVERAGE_SCOPE }} \ -m pytest -v --timeout=60 --durations=50 --random-order-seed=$GITHUB_RUN_ID \ --junitxml=junit.xml -o junit_family=legacy # NOTE: for Codecov's test results diff --git a/.github/workflows/ci-tests-pytorch.yml b/.github/workflows/ci-tests-pytorch.yml index 4d91f6a56c860..5021ccc67eede 100644 --- a/.github/workflows/ci-tests-pytorch.yml +++ b/.github/workflows/ci-tests-pytorch.yml @@ -42,7 +42,8 @@ jobs: strategy: fail-fast: false matrix: - os: [macOS-14, ubuntu-22.04, windows-2022] + # Runner images: https://github.com/actions/runner-images + os: [macos-26, ubuntu-24.04, windows-2025] config: # Test unified "lightning" package at the oldest supported and the latest PyTorch - { pkg-name: "lightning", python-version: "3.10", pytorch-version: "2.6" } @@ -72,7 +73,7 @@ jobs: TORCH_URL: "https://download.pytorch.org/whl/cpu/" FREEZE_REQUIREMENTS: ${{ ! (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/heads/release/')) }} # TODO: Remove this - Enable running MPS tests on this platform - DISABLE_MPS: ${{ matrix.os == 'macOS-14' && '1' || '0' }} + DISABLE_MPS: ${{ startsWith(matrix.os, 'macos') && '1' || '0' }} UV_TORCH_BACKEND: "cpu" # Supply-chain guard: skip PyPI releases newer than this. See https://docs.astral.sh/uv/reference/settings/#exclude-newer UV_EXCLUDE_NEWER: "2 days" @@ -184,9 +185,12 @@ jobs: - name: Testing PyTorch working-directory: tests/tests_pytorch # NOTE: do not include coverage report here, see: https://github.com/nedbat/coveragepy/issues/1003 + # On macOS 15+ runners, Local Network Privacy blocks mDNS for non-root processes, so every + # hostname/reverse-DNS lookup (e.g. torch's TCPStore connect) stalls ~35s; root is exempt. + # See https://github.com/actions/runner-images/issues/14568 and https://github.com/actions/runner-images/issues/10924 run: | echo $GITHUB_RUN_ID - python -m coverage run --source ${{ env.COVERAGE_SCOPE }} \ + ${{ runner.os == 'macOS' && 'sudo -E env "PATH=$PATH"' || '' }} python -m coverage run --source ${{ env.COVERAGE_SCOPE }} \ -m pytest . -v --timeout=90 --durations=50 --random-order-seed=$GITHUB_RUN_ID \ --junitxml=junit.xml -o junit_family=legacy # NOTE: for Codecov's test results diff --git a/.github/workflows/code-checks.yml b/.github/workflows/code-checks.yml index dc172bd0c48b1..59449f25778cf 100644 --- a/.github/workflows/code-checks.yml +++ b/.github/workflows/code-checks.yml @@ -26,7 +26,7 @@ defaults: jobs: mypy: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 env: UV_TORCH_BACKEND: "cpu" # Supply-chain guard: skip PyPI releases newer than this. See https://docs.astral.sh/uv/reference/settings/#exclude-newer diff --git a/.github/workflows/docs-build.yml b/.github/workflows/docs-build.yml index 022a970f171a4..e4c754dc454a5 100644 --- a/.github/workflows/docs-build.yml +++ b/.github/workflows/docs-build.yml @@ -54,7 +54,7 @@ env: jobs: docs-make: if: github.event.pull_request.draft == false - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 strategy: fail-fast: false matrix: @@ -151,7 +151,7 @@ jobs: deploy-docs: needs: docs-make if: github.repository_owner == 'Lightning-AI' && github.event_name != 'pull_request' - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 strategy: fail-fast: false matrix: diff --git a/.github/workflows/docs-tutorials.yml b/.github/workflows/docs-tutorials.yml index 517fc0116c011..856c4bc872c29 100644 --- a/.github/workflows/docs-tutorials.yml +++ b/.github/workflows/docs-tutorials.yml @@ -16,7 +16,7 @@ defaults: jobs: docs-update: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: diff --git a/.github/workflows/release-nightly.yml b/.github/workflows/release-nightly.yml index dfa0dbdcdbdd7..561b799c44427 100644 --- a/.github/workflows/release-nightly.yml +++ b/.github/workflows/release-nightly.yml @@ -18,7 +18,7 @@ defaults: jobs: build-packages: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 env: PKG_NAME: "lightning" # Supply-chain guard: skip PyPI releases newer than this (ISO 8601 duration). See https://pip.pypa.io/en/stable/cli/pip_install/#cmdoption-uploaded-prior-to diff --git a/.github/workflows/release-pkg.yml b/.github/workflows/release-pkg.yml index e04be38241082..9f2e84cd58763 100644 --- a/.github/workflows/release-pkg.yml +++ b/.github/workflows/release-pkg.yml @@ -32,7 +32,7 @@ jobs: artifact-name: dist-packages-${{ github.sha }} upload-packages: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 needs: build-packages if: github.event_name == 'release' steps: @@ -49,7 +49,7 @@ jobs: repo-token: ${{ secrets.GITHUB_TOKEN }} release-version: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 outputs: tag: ${{ steps.lai-package.outputs.version }} steps: @@ -66,7 +66,7 @@ jobs: run: python -c "import lightning ; print(f'version={lightning.__version__}')" >> $GITHUB_OUTPUT signaling: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 needs: ["release-version", "build-packages"] if: startsWith(github.event.ref, 'refs/tags') || github.event_name == 'release' env: @@ -130,7 +130,7 @@ jobs: borda publish-packages: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 needs: [build-packages] if: startsWith(github.event.ref, 'refs/tags') || github.event_name == 'release' permissions: diff --git a/docs/source-pytorch/common/hooks.rst b/docs/source-pytorch/common/hooks.rst index 73b05f7765e53..90a1351e7d37f 100644 --- a/docs/source-pytorch/common/hooks.rst +++ b/docs/source-pytorch/common/hooks.rst @@ -59,7 +59,7 @@ important to understand. The following order is always used: ... Callback: Training is starting! Model: Training is starting! - Epoch 0/0 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 64/64 ... + Epoch 0/0 ... .. note::