Skip to content

Commit 0f435fd

Browse files
committed
fabric
1 parent bb101db commit 0f435fd

File tree

1 file changed

+106
-0
lines changed

1 file changed

+106
-0
lines changed

.lightning/workflows/fabric.yml

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
trigger:
2+
push:
3+
branches: ["master"]
4+
pull_request:
5+
branches: ["master"]
6+
7+
timeout: "75" # minutes
8+
machine: "L4_X_2"
9+
parametrize:
10+
matrix: {}
11+
include:
12+
# note that this is setting also all oldest requirements which is linked to Torch == 2.0
13+
- image: "pytorchlightning/pytorch_lightning:base-cuda-py3.10-torch2.1-cuda12.1.1"
14+
PACKAGE_NAME: "fabric"
15+
- image: "pytorchlightning/pytorch_lightning:base-cuda-py3.12-torch2.7-cuda12.6.3"
16+
PACKAGE_NAME: "fabric"
17+
# - image: "pytorchlightning/pytorch_lightning:base-cuda-py3.12-torch2.7-cuda12.6.3"
18+
# PACKAGE_NAME: "fabric"
19+
- image: "pytorchlightning/pytorch_lightning:base-cuda-py3.12-torch2.7-cuda12.6.3"
20+
PACKAGE_NAME: "lightning"
21+
exclude: []
22+
23+
env:
24+
FREEZE_REQUIREMENTS: "1"
25+
RUN_ONLY_CUDA_TESTS: "1"
26+
27+
run: |
28+
whereis nvidia
29+
nvidia-smi
30+
python --version
31+
pip --version
32+
pip install -q fire wget packaging
33+
set -ex
34+
35+
CUDA_VERSION="${image##*cuda}" # Remove everything up to and including "cuda"
36+
echo "Using CUDA version: ${CUDA_VERSION}"
37+
CUDA_VERSION_M_M="${cuda_version%.*}" # Get major.minor by removing the last dot and everything after
38+
CUDA_VERSION_MM="${CUDA_VERSION_M_M//'.'/''}"
39+
TORCH_URL="https://download.pytorch.org/whl/cu${CUDA_VERSION_MM}/torch_stable.html"
40+
echo ${TORCH_URL}
41+
COVERAGE_SOURCE=$(python -c 'n = "$(PACKAGE_NAME)" ; print(dict(fabric="lightning_fabric").get(n, n))')
42+
echo "collecting coverage for: ${COVERAGE_SOURCE}"
43+
44+
if [ "${TORCH_VER}" == "2.1" ]; then
45+
# Set oldest versions
46+
python .actions/assistant.py replace_oldest_ver
47+
pip install "cython<3.0" wheel # for compatibility
48+
fi
49+
50+
# Adjust torch versions in requirements files
51+
PYTORCH_VERSION=$(python -c "import torch; print(torch.__version__.split('+')[0])")
52+
pip install -q wget packaging
53+
python -m wget https://raw.githubusercontent.com/Lightning-AI/utilities/main/scripts/adjust-torch-versions.py
54+
for fpath in `ls requirements/**/*.txt`; do \
55+
python ./adjust-torch-versions.py $fpath ${PYTORCH_VERSION}; \
56+
done
57+
58+
if [ "${PACKAGE_NAME}" == "fabric" ]; then
59+
pip install -U -q -r .actions/requirements.txt
60+
python .actions/assistant.py copy_replace_imports --source_dir="./tests/tests_fabric" \
61+
--source_import="lightning.fabric" \
62+
--target_import="lightning_fabric"
63+
python .actions/assistant.py copy_replace_imports --source_dir="./examples/fabric" \
64+
--source_import="lightning.fabric" \
65+
--target_import="lightning_fabric"
66+
fi
67+
68+
extra=$(python -c "print({'lightning': 'fabric-'}.get('$(PACKAGE_NAME)', ''))")
69+
pip install -e ".[${extra}dev]" -U --upgrade-strategy=eager --extra-index-url="${TORCH_URL}"
70+
71+
python requirements/collect_env_details.py
72+
python -c "import torch ; mgpu = torch.cuda.device_count() ; assert mgpu >= 2, f'GPU: {mgpu}'"
73+
python requirements/pytorch/check-avail-extras.py
74+
python -c "import bitsandbytes"
75+
76+
# Testing: Fabric doctests
77+
if [ "${PACKAGE_NAME}" == "fabric" ]; then
78+
cd src/
79+
python -m pytest lightning_fabric
80+
cd ..
81+
fi
82+
83+
cd tests/
84+
# Testing: fabric standard
85+
python -m coverage run --source ${COVERAGE_SOURCE} -m pytest tests_fabric/ -v --durations=50
86+
87+
# Testing: fabric standalone
88+
export PL_RUN_STANDALONE_TESTS=1
89+
wget https://raw.githubusercontent.com/Lightning-AI/utilities/main/scripts/run_standalone_tests.sh
90+
bash ./run_standalone_tests.sh "tests_fabric"
91+
92+
python -m coverage report
93+
python -m coverage xml
94+
python -m coverage html
95+
96+
# TODO: enable coverage
97+
# # https://docs.codecov.com/docs/codecov-uploader
98+
# curl -Os https://uploader.codecov.io/latest/linux/codecov
99+
# chmod +x codecov
100+
# ./codecov --token=$(CODECOV_TOKEN) --commit=$(Build.SourceVersion) \
101+
# --flags=gpu,pytest,${COVERAGE_SOURCE} --name="GPU-coverage" --env=linux,azure
102+
# ls -l
103+
104+
# Testing: fabric examples
105+
bash run_fabric_examples.sh --accelerator=cuda --devices=1
106+
bash run_fabric_examples.sh --accelerator=cuda --devices=2 --strategy ddp

0 commit comments

Comments
 (0)