lightning/tests/README.md

106 lines
3.7 KiB
Markdown
Raw Normal View History

2019-08-01 14:11:26 +00:00
# PyTorch-Lightning Tests
Most of the tests in PyTorch Lightning train a [BoringModel](https://github.com/PyTorchLightning/pytorch-lightning/blob/master/tests/helpers/boring_model.py) under various trainer conditions (ddp, ddp2+amp, etc...). Want to add a new test case and not sure how? [Talk to us!](https://www.pytorchlightning.ai/community)
2019-07-24 14:09:47 +00:00
## Running tests
**Local:** Testing your work locally will help you speed up the process since it allows you to focus on particular (failing) test-cases.
To setup a local development environment, install both local and test dependencies:
2019-07-24 14:09:47 +00:00
```bash
# clone the repo
git clone https://github.com/PyTorchLightning/pytorch-lightning
2019-07-24 14:09:47 +00:00
cd pytorch-lightning
# install required depedencies
python -m pip install ".[dev, examples]"
# install pre-commit (optional)
python -m pip install pre-commit
pre-commit install
```
Additionally, for testing backward compatibility with older versions of PyTorch Lightning, you also need to download all saved version-checkpoints from the public AWS storage. Run the following script to get all saved version-checkpoints:
2019-07-24 14:09:47 +00:00
```bash
wget https://pl-public-data.s3.amazonaws.com/legacy/checkpoints.zip -P legacy/
unzip -o legacy/checkpoints.zip -d legacy/
2019-07-24 14:09:47 +00:00
```
Note: These checkpoints are generated to set baselines for maintaining backward compatibility with legacy versions of PyTorch Lightning. Details of checkpoints for back-compatibility can be found [here](https://github.com/PyTorchLightning/pytorch-lightning/blob/master/legacy/README.md).
You can run the full test suite in your terminal via this make script:
```bash
make test
```
Note: if your computer does not have multi-GPU or TPU these tests are skipped.
**GitHub Actions:** For convenience, you can also use your own GHActions building which will be triggered with each commit.
This is useful if you do not test against all required dependency versions.
**Docker:** Another option is to utilize the [pytorch lightning cuda base docker image](https://hub.docker.com/repository/docker/pytorchlightning/pytorch_lightning/tags?page=1&name=cuda). You can then run:
```bash
python -m pytest pytorch_lightning tests pl_examples -v
```
You can also run a single test as follows:
```bash
python -m pytest -v tests/trainer/test_trainer_cli.py::test_default_args
```
### Conditional Tests
2019-07-24 14:09:47 +00:00
To test models that require GPU make sure to run the above command on a GPU machine.
2021-04-22 01:07:48 +00:00
The GPU machine must have at least 2 GPUs to run distributed tests.
2019-07-24 14:09:47 +00:00
2021-04-22 01:07:48 +00:00
Note that this setup will not run tests that require specific packages installed
such as Horovod, FairScale, NVIDIA/apex, NVIDIA/DALI, etc.
You can rely on our CI to make sure all these tests pass.
2019-07-24 14:09:47 +00:00
### Standalone Tests
There are certain standalone tests, which you can run using:
```bash
PL_RUN_STANDALONE_TESTS=1 python -m pytest -v tests/trainer/
# or
./tests/standalone_tests.sh tests/trainer
```
## Running Coverage
Make sure to run coverage on a GPU machine with at least 2 GPUs and NVIDIA apex installed.
2019-07-25 01:35:38 +00:00
```bash
cd pytorch-lightning
# generate coverage (coverage is also installed as part of dev dependencies under requirements/devel.txt)
coverage run --source pytorch_lightning -m pytest pytorch_lightning tests pl_examples -v
2019-07-25 01:35:38 +00:00
# print coverage stats
2019-08-07 12:32:32 +00:00
coverage report -m
# exporting results
2019-08-07 12:32:32 +00:00
coverage xml
2019-07-25 01:35:38 +00:00
```
## Building test image
2019-07-24 14:09:47 +00:00
You can build it on your own, note it takes lots of time, be prepared.
```bash
git clone <git-repository>
docker image build -t pytorch_lightning:devel-torch1.9 -f dockers/cuda-extras/Dockerfile --build-arg TORCH_VERSION=1.9 .
```
To build other versions, select different Dockerfile.
```bash
docker image list
docker run --rm -it pytorch_lightning:devel-torch1.9 bash
docker image rm pytorch_lightning:devel-torch1.9
```