diff options
author | CoprDistGit <infra@openeuler.org> | 2023-04-10 10:53:35 +0000 |
---|---|---|
committer | CoprDistGit <infra@openeuler.org> | 2023-04-10 10:53:35 +0000 |
commit | f644b3eca916bdd83c02c19e2cd84ba802d98e12 (patch) | |
tree | 2e8c2e0103cf0e9459f45db86f8ffe296c66a939 | |
parent | bab9eb580773ac7517b3d58e25940178cd948471 (diff) |
automatic import of python-pytorch-lightningopeneuler20.03
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | python-pytorch-lightning.spec | 1191 | ||||
-rw-r--r-- | sources | 1 |
3 files changed, 1193 insertions, 0 deletions
@@ -0,0 +1 @@ +/pytorch-lightning-2.0.1.tar.gz diff --git a/python-pytorch-lightning.spec b/python-pytorch-lightning.spec new file mode 100644 index 0000000..df8e006 --- /dev/null +++ b/python-pytorch-lightning.spec @@ -0,0 +1,1191 @@ +%global _empty_manifest_terminate_build 0 +Name: python-pytorch-lightning +Version: 2.0.1 +Release: 1 +Summary: PyTorch Lightning is the lightweight PyTorch wrapper for ML researchers. Scale your models. Write less boilerplate. +License: Apache-2.0 +URL: https://github.com/Lightning-AI/lightning +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/a4/f6/c5a1a9b7513ea20ef7b32758eeb3ae84b13e355f14e5a002bd2db5cb06ec/pytorch-lightning-2.0.1.tar.gz +BuildArch: noarch + +Requires: python3-numpy +Requires: python3-torch +Requires: python3-tqdm +Requires: python3-PyYAML +Requires: python3-fsspec[http] +Requires: python3-torchmetrics +Requires: python3-packaging +Requires: python3-typing-extensions +Requires: python3-lightning-utilities +Requires: python3-matplotlib +Requires: python3-omegaconf +Requires: python3-hydra-core +Requires: python3-jsonargparse[signatures] +Requires: python3-rich +Requires: python3-tensorboardX +Requires: python3-deepspeed +Requires: python3-torchvision +Requires: python3-gym[classic_control] +Requires: python3-ipython[all] +Requires: python3-torchmetrics +Requires: python3-lightning-utilities +Requires: python3-deepspeed +Requires: python3-matplotlib +Requires: python3-omegaconf +Requires: python3-hydra-core +Requires: python3-jsonargparse[signatures] +Requires: python3-rich +Requires: python3-tensorboardX +Requires: python3-deepspeed +Requires: python3-torchvision +Requires: python3-gym[classic_control] +Requires: python3-ipython[all] +Requires: python3-torchmetrics +Requires: python3-lightning-utilities +Requires: python3-coverage +Requires: python3-codecov +Requires: python3-pytest +Requires: python3-pytest-cov +Requires: python3-pytest-forked +Requires: python3-pytest-rerunfailures +Requires: python3-cloudpickle +Requires: python3-scikit-learn +Requires: python3-onnx +Requires: python3-onnxruntime +Requires: python3-psutil +Requires: python3-pandas +Requires: python3-fastapi +Requires: python3-uvicorn +Requires: python3-tensorboard +Requires: python3-protobuf +Requires: python3-torchvision +Requires: python3-gym[classic_control] +Requires: python3-ipython[all] +Requires: python3-torchmetrics +Requires: python3-lightning-utilities +Requires: python3-matplotlib +Requires: python3-omegaconf +Requires: python3-hydra-core +Requires: python3-jsonargparse[signatures] +Requires: python3-rich +Requires: python3-tensorboardX +Requires: python3-deepspeed +Requires: python3-coverage +Requires: python3-codecov +Requires: python3-pytest +Requires: python3-pytest-cov +Requires: python3-pytest-forked +Requires: python3-pytest-rerunfailures +Requires: python3-cloudpickle +Requires: python3-scikit-learn +Requires: python3-onnx +Requires: python3-onnxruntime +Requires: python3-psutil +Requires: python3-pandas +Requires: python3-fastapi +Requires: python3-uvicorn +Requires: python3-tensorboard +Requires: python3-protobuf + +%description +<div align="center"> + +<img src="https://pl-public-data.s3.amazonaws.com/assets_lightning/pytorch-lightning.png" width="400px"> + +**The lightweight PyTorch wrapper for high-performance AI research. +Scale your models, not the boilerplate.** + +______________________________________________________________________ + +<p align="center"> + <a href="https://www.pytorchlightning.ai/">Website</a> • + <a href="#key-features">Key Features</a> • + <a href="#how-to-use">How To Use</a> • + <a href="https://lightning.ai/docs/pytorch/stable/">Docs</a> • + <a href="#examples">Examples</a> • + <a href="#community">Community</a> • + <a href="https://lightning.ai/">Lightning AI</a> • + <a href="https://github.com/Lightning-AI/lightning/blob/master/LICENSE">License</a> +</p> + +<!-- DO NOT ADD CONDA DOWNLOADS... README CHANGES MUST BE APPROVED BY EDEN OR WILL --> + +[](https://pypi.org/project/pytorch-lightning/) +[](https://badge.fury.io/py/pytorch-lightning) +[](https://pepy.tech/project/pytorch-lightning) +[](https://anaconda.org/conda-forge/pytorch-lightning) +[](https://hub.docker.com/r/pytorchlightning/pytorch_lightning) +[](https://codecov.io/gh/Lightning-AI/lightning) + +[](https://lightning.ai/docs/pytorch/stable/)[](https://discord.gg/VptPCZkGNa) +[](https://github.com/Lightning-AI/lightning/blob/master/LICENSE) + +<!-- +[](https://www.codefactor.io/repository/github/Lightning-AI/lightning) +--> + +</div> + +###### \*Codecov is > 90%+ but build delays may show less + +______________________________________________________________________ + +## PyTorch Lightning is just organized PyTorch + +Lightning disentangles PyTorch code to decouple the science from the engineering. + + +______________________________________________________________________ + +## Lightning Design Philosophy + +Lightning structures PyTorch code with these principles: + +<div align="center"> + <img src="https://pl-bolts-doc-images.s3.us-east-2.amazonaws.com/philosophies.jpg" max-height="250px"> +</div> + +Lightning forces the following structure to your code which makes it reusable and shareable: + +- Research code (the LightningModule). +- Engineering code (you delete, and is handled by the Trainer). +- Non-essential research code (logging, etc... this goes in Callbacks). +- Data (use PyTorch DataLoaders or organize them into a LightningDataModule). + +Once you do this, you can train on multiple-GPUs, TPUs, CPUs, IPUs, HPUs and even in 16-bit precision without changing your code! + +[Get started in just 15 minutes](https://lightning.ai/docs/pytorch/latest/starter/introduction.html) + +______________________________________________________________________ + +## Continuous Integration + +Lightning is rigorously tested across multiple CPUs, GPUs, TPUs, IPUs, and HPUs and against major Python and PyTorch versions. + +<details> + <summary>Current build statuses</summary> + +<center> + +| System / PyTorch ver. | 1.11 | 1.12 | 1.13 | 2.0 | +| :--------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---- | +| Linux py3.9 \[GPUs\] | - | [?branchName=refs%2Ftags%2F2.0.1>)](https://dev.azure.com/Lightning-AI/lightning/_build/latest?definitionId=24&branchName=master) | [?branchName=refs%2Ftags%2F2.0.1>)](https://dev.azure.com/Lightning-AI/lightning/_build/latest?definitionId=24&branchName=master) | Soon | +| Linux py3.9 \[TPUs\] | - | [](https://github.com/Lightning-AI/lightning/actions/workflows/tpu-tests.yml) | | Soon | +| Linux py3.8 \[IPUs\] | - | - | [?branchName=refs%2Ftags%2F2.0.1>)](https://dev.azure.com/Lightning-AI/lightning/_build/latest?definitionId=25&branchName=master) | Soon | +| Linux py3.8 \[HPUs\] | - | - | [?branchName=refs%2Ftags%2F2.0.1>)](https://dev.azure.com/Lightning-AI/lightning/_build/latest?definitionId=26&branchName=master) | Soon | +| Linux (multiple Python versions) | [](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml) | [](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml) | [](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml) | Soon | +| OSX (multiple Python versions) | [](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml) | [](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml) | [](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml) | Soon | +| Windows (multiple Python versions) | [](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml) | [](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml) | [](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml) | Soon | + +</center> +</details> + +______________________________________________________________________ + +## How To Use + +### Step 0: Install + +Simple installation from PyPI + +```bash +pip install pytorch-lightning +``` + +<!-- --> + +### Step 1: Add these imports + +```python +import os +import torch +from torch import nn +import torch.nn.functional as F +from torchvision.datasets import MNIST +from torch.utils.data import DataLoader, random_split +from torchvision import transforms +import pytorch_lightning as pl +``` + +### Step 2: Define a LightningModule (nn.Module subclass) + +A LightningModule defines a full *system* (ie: a GAN, autoencoder, BERT or a simple Image Classifier). + +```python +class LitAutoEncoder(pl.LightningModule): + def __init__(self): + super().__init__() + self.encoder = nn.Sequential(nn.Linear(28 * 28, 128), nn.ReLU(), nn.Linear(128, 3)) + self.decoder = nn.Sequential(nn.Linear(3, 128), nn.ReLU(), nn.Linear(128, 28 * 28)) + + def forward(self, x): + # in lightning, forward defines the prediction/inference actions + embedding = self.encoder(x) + return embedding + + def training_step(self, batch, batch_idx): + # training_step defines the train loop. It is independent of forward + x, y = batch + x = x.view(x.size(0), -1) + z = self.encoder(x) + x_hat = self.decoder(z) + loss = F.mse_loss(x_hat, x) + self.log("train_loss", loss) + return loss + + def configure_optimizers(self): + optimizer = torch.optim.Adam(self.parameters(), lr=1e-3) + return optimizer +``` + +**Note: Training_step defines the training loop. Forward defines how the LightningModule behaves during inference/prediction.** + +### Step 3: Train! + +```python +dataset = MNIST(os.getcwd(), download=True, transform=transforms.ToTensor()) +train, val = random_split(dataset, [55000, 5000]) + +autoencoder = LitAutoEncoder() +trainer = pl.Trainer() +trainer.fit(autoencoder, DataLoader(train), DataLoader(val)) +``` + +## Advanced features + +Lightning has over [40+ advanced features](https://lightning.ai/docs/pytorch/latest/common/trainer.html#trainer-flags) designed for professional AI research at scale. + +Here are some examples: + +<div align="center"> + <img src="https://pl-bolts-doc-images.s3.us-east-2.amazonaws.com/features_2.jpg" max-height="600px"> +</div> + +<details> + <summary>Highlighted feature code snippets</summary> + +```python +# 8 GPUs +# no code changes needed +trainer = Trainer(max_epochs=1, accelerator="gpu", devices=8) + +# 256 GPUs +trainer = Trainer(max_epochs=1, accelerator="gpu", devices=8, num_nodes=32) +``` + +<summary>Train on TPUs without code changes</summary> + +```python +# no code changes needed +trainer = Trainer(accelerator="tpu", devices=8) +``` + +<summary>16-bit precision</summary> + +```python +# no code changes needed +trainer = Trainer(precision=16) +``` + +<summary>Experiment managers</summary> + +```python +from pytorch_lightning import loggers + +# tensorboard +trainer = Trainer(logger=TensorBoardLogger("logs/")) + +# weights and biases +trainer = Trainer(logger=loggers.WandbLogger()) + +# comet +trainer = Trainer(logger=loggers.CometLogger()) + +# mlflow +trainer = Trainer(logger=loggers.MLFlowLogger()) + +# neptune +trainer = Trainer(logger=loggers.NeptuneLogger()) + +# ... and dozens more +``` + +<summary>EarlyStopping</summary> + +```python +es = EarlyStopping(monitor="val_loss") +trainer = Trainer(callbacks=[es]) +``` + +<summary>Checkpointing</summary> + +```python +checkpointing = ModelCheckpoint(monitor="val_loss") +trainer = Trainer(callbacks=[checkpointing]) +``` + +<summary>Export to torchscript (JIT) (production use)</summary> + +```python +# torchscript +autoencoder = LitAutoEncoder() +torch.jit.save(autoencoder.to_torchscript(), "model.pt") +``` + +<summary>Export to ONNX (production use)</summary> + +```python +autoencoder = LitAutoEncoder() +input_sample = torch.randn((1, 64)) +with tempfile.NamedTemporaryFile(suffix=".onnx", delete=False) as tmpfile: + autoencoder.to_onnx(tmpfile.name, input_sample, export_params=True) +``` + +</details> + +### Pro-level control of optimization (advanced users) + +For complex/professional level work, you have optional full control of the optimizers. + +```python +class LitAutoEncoder(pl.LightningModule): + def __init__(self): + super().__init__() + self.automatic_optimization = False + + def training_step(self, batch, batch_idx): + # access your optimizers with use_pl_optimizer=False. Default is True + opt_a, opt_b = self.optimizers(use_pl_optimizer=True) + + loss_a = ... + self.manual_backward(loss_a, opt_a) + opt_a.step() + opt_a.zero_grad() + + loss_b = ... + self.manual_backward(loss_b, opt_b, retain_graph=True) + self.manual_backward(loss_b, opt_b) + opt_b.step() + opt_b.zero_grad() +``` + +______________________________________________________________________ + +## Advantages over unstructured PyTorch + +- Models become hardware agnostic +- Code is clear to read because engineering code is abstracted away +- Easier to reproduce +- Make fewer mistakes because lightning handles the tricky engineering +- Keeps all the flexibility (LightningModules are still PyTorch modules), but removes a ton of boilerplate +- Lightning has dozens of integrations with popular machine learning tools. +- [Tested rigorously with every new PR](https://github.com/Lightning-AI/lightning/tree/master/tests). We test every combination of PyTorch and Python supported versions, every OS, multi GPUs and even TPUs. +- Minimal running speed overhead (about 300 ms per epoch compared with pure PyTorch). + +______________________________________________________________________ + +## Examples + +###### Self-supervised Learning + +- [CPC transforms](https://lightning-bolts.readthedocs.io/en/stable/transforms/self_supervised.html#cpc-transforms) +- [Moco v2 tranforms](https://lightning-bolts.readthedocs.io/en/stable/transforms/self_supervised.html#moco-v2-transforms) +- [SimCLR transforms](https://lightning-bolts.readthedocs.io/en/stable/transforms/self_supervised.html#simclr-transforms) + +###### Convolutional Architectures + +- [GPT-2](https://lightning-bolts.readthedocs.io/en/stable/models/convolutional.html#gpt-2) +- [UNet](https://lightning-bolts.readthedocs.io/en/stable/models/convolutional.html#unet) + +###### Reinforcement Learning + +- [DQN Loss](https://lightning-bolts.readthedocs.io/en/stable/losses.html#dqn-loss) +- [Double DQN Loss](https://lightning-bolts.readthedocs.io/en/stable/losses.html#double-dqn-loss) +- [Per DQN Loss](https://lightning-bolts.readthedocs.io/en/stable/losses.html#per-dqn-loss) + +###### GANs + +- [Basic GAN](https://lightning-bolts.readthedocs.io/en/stable/models/gans.html#basic-gan) +- [DCGAN](https://lightning-bolts.readthedocs.io/en/stable/models/gans.html#dcgan) + +###### Classic ML + +- [Logistic Regression](https://lightning-bolts.readthedocs.io/en/stable/models/classic_ml.html#logistic-regression) +- [Linear Regression](https://lightning-bolts.readthedocs.io/en/stable/models/classic_ml.html#linear-regression) + +______________________________________________________________________ + +## Community + +The PyTorch Lightning community is maintained by + +- [10+ core contributors](https://lightning.ai/docs/pytorch/latest/governance.html) who are all a mix of professional engineers, Research Scientists, and Ph.D. students from top AI labs. +- 680+ active community contributors. + +Want to help us build Lightning and reduce boilerplate for thousands of researchers? [Learn how to make your first contribution here](https://devblog.pytorchlightning.ai/quick-contribution-guide-86d977171b3a) + +PyTorch Lightning is also part of the [PyTorch ecosystem](https://pytorch.org/ecosystem/) which requires projects to have solid testing, documentation and support. + +### Asking for help + +If you have any questions please: + +1. [Read the docs](https://lightning.ai/docs/pytorch/latest). +1. [Search through existing Discussions](https://github.com/Lightning-AI/lightning/discussions), or [add a new question](https://github.com/Lightning-AI/lightning/discussions/new) +1. [Join our Discord community](https://discord.gg/VptPCZkGNa). + + + + +%package -n python3-pytorch-lightning +Summary: PyTorch Lightning is the lightweight PyTorch wrapper for ML researchers. Scale your models. Write less boilerplate. +Provides: python-pytorch-lightning +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-pytorch-lightning +<div align="center"> + +<img src="https://pl-public-data.s3.amazonaws.com/assets_lightning/pytorch-lightning.png" width="400px"> + +**The lightweight PyTorch wrapper for high-performance AI research. +Scale your models, not the boilerplate.** + +______________________________________________________________________ + +<p align="center"> + <a href="https://www.pytorchlightning.ai/">Website</a> • + <a href="#key-features">Key Features</a> • + <a href="#how-to-use">How To Use</a> • + <a href="https://lightning.ai/docs/pytorch/stable/">Docs</a> • + <a href="#examples">Examples</a> • + <a href="#community">Community</a> • + <a href="https://lightning.ai/">Lightning AI</a> • + <a href="https://github.com/Lightning-AI/lightning/blob/master/LICENSE">License</a> +</p> + +<!-- DO NOT ADD CONDA DOWNLOADS... README CHANGES MUST BE APPROVED BY EDEN OR WILL --> + +[](https://pypi.org/project/pytorch-lightning/) +[](https://badge.fury.io/py/pytorch-lightning) +[](https://pepy.tech/project/pytorch-lightning) +[](https://anaconda.org/conda-forge/pytorch-lightning) +[](https://hub.docker.com/r/pytorchlightning/pytorch_lightning) +[](https://codecov.io/gh/Lightning-AI/lightning) + +[](https://lightning.ai/docs/pytorch/stable/)[](https://discord.gg/VptPCZkGNa) +[](https://github.com/Lightning-AI/lightning/blob/master/LICENSE) + +<!-- +[](https://www.codefactor.io/repository/github/Lightning-AI/lightning) +--> + +</div> + +###### \*Codecov is > 90%+ but build delays may show less + +______________________________________________________________________ + +## PyTorch Lightning is just organized PyTorch + +Lightning disentangles PyTorch code to decouple the science from the engineering. + + +______________________________________________________________________ + +## Lightning Design Philosophy + +Lightning structures PyTorch code with these principles: + +<div align="center"> + <img src="https://pl-bolts-doc-images.s3.us-east-2.amazonaws.com/philosophies.jpg" max-height="250px"> +</div> + +Lightning forces the following structure to your code which makes it reusable and shareable: + +- Research code (the LightningModule). +- Engineering code (you delete, and is handled by the Trainer). +- Non-essential research code (logging, etc... this goes in Callbacks). +- Data (use PyTorch DataLoaders or organize them into a LightningDataModule). + +Once you do this, you can train on multiple-GPUs, TPUs, CPUs, IPUs, HPUs and even in 16-bit precision without changing your code! + +[Get started in just 15 minutes](https://lightning.ai/docs/pytorch/latest/starter/introduction.html) + +______________________________________________________________________ + +## Continuous Integration + +Lightning is rigorously tested across multiple CPUs, GPUs, TPUs, IPUs, and HPUs and against major Python and PyTorch versions. + +<details> + <summary>Current build statuses</summary> + +<center> + +| System / PyTorch ver. | 1.11 | 1.12 | 1.13 | 2.0 | +| :--------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---- | +| Linux py3.9 \[GPUs\] | - | [?branchName=refs%2Ftags%2F2.0.1>)](https://dev.azure.com/Lightning-AI/lightning/_build/latest?definitionId=24&branchName=master) | [?branchName=refs%2Ftags%2F2.0.1>)](https://dev.azure.com/Lightning-AI/lightning/_build/latest?definitionId=24&branchName=master) | Soon | +| Linux py3.9 \[TPUs\] | - | [](https://github.com/Lightning-AI/lightning/actions/workflows/tpu-tests.yml) | | Soon | +| Linux py3.8 \[IPUs\] | - | - | [?branchName=refs%2Ftags%2F2.0.1>)](https://dev.azure.com/Lightning-AI/lightning/_build/latest?definitionId=25&branchName=master) | Soon | +| Linux py3.8 \[HPUs\] | - | - | [?branchName=refs%2Ftags%2F2.0.1>)](https://dev.azure.com/Lightning-AI/lightning/_build/latest?definitionId=26&branchName=master) | Soon | +| Linux (multiple Python versions) | [](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml) | [](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml) | [](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml) | Soon | +| OSX (multiple Python versions) | [](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml) | [](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml) | [](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml) | Soon | +| Windows (multiple Python versions) | [](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml) | [](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml) | [](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml) | Soon | + +</center> +</details> + +______________________________________________________________________ + +## How To Use + +### Step 0: Install + +Simple installation from PyPI + +```bash +pip install pytorch-lightning +``` + +<!-- --> + +### Step 1: Add these imports + +```python +import os +import torch +from torch import nn +import torch.nn.functional as F +from torchvision.datasets import MNIST +from torch.utils.data import DataLoader, random_split +from torchvision import transforms +import pytorch_lightning as pl +``` + +### Step 2: Define a LightningModule (nn.Module subclass) + +A LightningModule defines a full *system* (ie: a GAN, autoencoder, BERT or a simple Image Classifier). + +```python +class LitAutoEncoder(pl.LightningModule): + def __init__(self): + super().__init__() + self.encoder = nn.Sequential(nn.Linear(28 * 28, 128), nn.ReLU(), nn.Linear(128, 3)) + self.decoder = nn.Sequential(nn.Linear(3, 128), nn.ReLU(), nn.Linear(128, 28 * 28)) + + def forward(self, x): + # in lightning, forward defines the prediction/inference actions + embedding = self.encoder(x) + return embedding + + def training_step(self, batch, batch_idx): + # training_step defines the train loop. It is independent of forward + x, y = batch + x = x.view(x.size(0), -1) + z = self.encoder(x) + x_hat = self.decoder(z) + loss = F.mse_loss(x_hat, x) + self.log("train_loss", loss) + return loss + + def configure_optimizers(self): + optimizer = torch.optim.Adam(self.parameters(), lr=1e-3) + return optimizer +``` + +**Note: Training_step defines the training loop. Forward defines how the LightningModule behaves during inference/prediction.** + +### Step 3: Train! + +```python +dataset = MNIST(os.getcwd(), download=True, transform=transforms.ToTensor()) +train, val = random_split(dataset, [55000, 5000]) + +autoencoder = LitAutoEncoder() +trainer = pl.Trainer() +trainer.fit(autoencoder, DataLoader(train), DataLoader(val)) +``` + +## Advanced features + +Lightning has over [40+ advanced features](https://lightning.ai/docs/pytorch/latest/common/trainer.html#trainer-flags) designed for professional AI research at scale. + +Here are some examples: + +<div align="center"> + <img src="https://pl-bolts-doc-images.s3.us-east-2.amazonaws.com/features_2.jpg" max-height="600px"> +</div> + +<details> + <summary>Highlighted feature code snippets</summary> + +```python +# 8 GPUs +# no code changes needed +trainer = Trainer(max_epochs=1, accelerator="gpu", devices=8) + +# 256 GPUs +trainer = Trainer(max_epochs=1, accelerator="gpu", devices=8, num_nodes=32) +``` + +<summary>Train on TPUs without code changes</summary> + +```python +# no code changes needed +trainer = Trainer(accelerator="tpu", devices=8) +``` + +<summary>16-bit precision</summary> + +```python +# no code changes needed +trainer = Trainer(precision=16) +``` + +<summary>Experiment managers</summary> + +```python +from pytorch_lightning import loggers + +# tensorboard +trainer = Trainer(logger=TensorBoardLogger("logs/")) + +# weights and biases +trainer = Trainer(logger=loggers.WandbLogger()) + +# comet +trainer = Trainer(logger=loggers.CometLogger()) + +# mlflow +trainer = Trainer(logger=loggers.MLFlowLogger()) + +# neptune +trainer = Trainer(logger=loggers.NeptuneLogger()) + +# ... and dozens more +``` + +<summary>EarlyStopping</summary> + +```python +es = EarlyStopping(monitor="val_loss") +trainer = Trainer(callbacks=[es]) +``` + +<summary>Checkpointing</summary> + +```python +checkpointing = ModelCheckpoint(monitor="val_loss") +trainer = Trainer(callbacks=[checkpointing]) +``` + +<summary>Export to torchscript (JIT) (production use)</summary> + +```python +# torchscript +autoencoder = LitAutoEncoder() +torch.jit.save(autoencoder.to_torchscript(), "model.pt") +``` + +<summary>Export to ONNX (production use)</summary> + +```python +autoencoder = LitAutoEncoder() +input_sample = torch.randn((1, 64)) +with tempfile.NamedTemporaryFile(suffix=".onnx", delete=False) as tmpfile: + autoencoder.to_onnx(tmpfile.name, input_sample, export_params=True) +``` + +</details> + +### Pro-level control of optimization (advanced users) + +For complex/professional level work, you have optional full control of the optimizers. + +```python +class LitAutoEncoder(pl.LightningModule): + def __init__(self): + super().__init__() + self.automatic_optimization = False + + def training_step(self, batch, batch_idx): + # access your optimizers with use_pl_optimizer=False. Default is True + opt_a, opt_b = self.optimizers(use_pl_optimizer=True) + + loss_a = ... + self.manual_backward(loss_a, opt_a) + opt_a.step() + opt_a.zero_grad() + + loss_b = ... + self.manual_backward(loss_b, opt_b, retain_graph=True) + self.manual_backward(loss_b, opt_b) + opt_b.step() + opt_b.zero_grad() +``` + +______________________________________________________________________ + +## Advantages over unstructured PyTorch + +- Models become hardware agnostic +- Code is clear to read because engineering code is abstracted away +- Easier to reproduce +- Make fewer mistakes because lightning handles the tricky engineering +- Keeps all the flexibility (LightningModules are still PyTorch modules), but removes a ton of boilerplate +- Lightning has dozens of integrations with popular machine learning tools. +- [Tested rigorously with every new PR](https://github.com/Lightning-AI/lightning/tree/master/tests). We test every combination of PyTorch and Python supported versions, every OS, multi GPUs and even TPUs. +- Minimal running speed overhead (about 300 ms per epoch compared with pure PyTorch). + +______________________________________________________________________ + +## Examples + +###### Self-supervised Learning + +- [CPC transforms](https://lightning-bolts.readthedocs.io/en/stable/transforms/self_supervised.html#cpc-transforms) +- [Moco v2 tranforms](https://lightning-bolts.readthedocs.io/en/stable/transforms/self_supervised.html#moco-v2-transforms) +- [SimCLR transforms](https://lightning-bolts.readthedocs.io/en/stable/transforms/self_supervised.html#simclr-transforms) + +###### Convolutional Architectures + +- [GPT-2](https://lightning-bolts.readthedocs.io/en/stable/models/convolutional.html#gpt-2) +- [UNet](https://lightning-bolts.readthedocs.io/en/stable/models/convolutional.html#unet) + +###### Reinforcement Learning + +- [DQN Loss](https://lightning-bolts.readthedocs.io/en/stable/losses.html#dqn-loss) +- [Double DQN Loss](https://lightning-bolts.readthedocs.io/en/stable/losses.html#double-dqn-loss) +- [Per DQN Loss](https://lightning-bolts.readthedocs.io/en/stable/losses.html#per-dqn-loss) + +###### GANs + +- [Basic GAN](https://lightning-bolts.readthedocs.io/en/stable/models/gans.html#basic-gan) +- [DCGAN](https://lightning-bolts.readthedocs.io/en/stable/models/gans.html#dcgan) + +###### Classic ML + +- [Logistic Regression](https://lightning-bolts.readthedocs.io/en/stable/models/classic_ml.html#logistic-regression) +- [Linear Regression](https://lightning-bolts.readthedocs.io/en/stable/models/classic_ml.html#linear-regression) + +______________________________________________________________________ + +## Community + +The PyTorch Lightning community is maintained by + +- [10+ core contributors](https://lightning.ai/docs/pytorch/latest/governance.html) who are all a mix of professional engineers, Research Scientists, and Ph.D. students from top AI labs. +- 680+ active community contributors. + +Want to help us build Lightning and reduce boilerplate for thousands of researchers? [Learn how to make your first contribution here](https://devblog.pytorchlightning.ai/quick-contribution-guide-86d977171b3a) + +PyTorch Lightning is also part of the [PyTorch ecosystem](https://pytorch.org/ecosystem/) which requires projects to have solid testing, documentation and support. + +### Asking for help + +If you have any questions please: + +1. [Read the docs](https://lightning.ai/docs/pytorch/latest). +1. [Search through existing Discussions](https://github.com/Lightning-AI/lightning/discussions), or [add a new question](https://github.com/Lightning-AI/lightning/discussions/new) +1. [Join our Discord community](https://discord.gg/VptPCZkGNa). + + + + +%package help +Summary: Development documents and examples for pytorch-lightning +Provides: python3-pytorch-lightning-doc +%description help +<div align="center"> + +<img src="https://pl-public-data.s3.amazonaws.com/assets_lightning/pytorch-lightning.png" width="400px"> + +**The lightweight PyTorch wrapper for high-performance AI research. +Scale your models, not the boilerplate.** + +______________________________________________________________________ + +<p align="center"> + <a href="https://www.pytorchlightning.ai/">Website</a> • + <a href="#key-features">Key Features</a> • + <a href="#how-to-use">How To Use</a> • + <a href="https://lightning.ai/docs/pytorch/stable/">Docs</a> • + <a href="#examples">Examples</a> • + <a href="#community">Community</a> • + <a href="https://lightning.ai/">Lightning AI</a> • + <a href="https://github.com/Lightning-AI/lightning/blob/master/LICENSE">License</a> +</p> + +<!-- DO NOT ADD CONDA DOWNLOADS... README CHANGES MUST BE APPROVED BY EDEN OR WILL --> + +[](https://pypi.org/project/pytorch-lightning/) +[](https://badge.fury.io/py/pytorch-lightning) +[](https://pepy.tech/project/pytorch-lightning) +[](https://anaconda.org/conda-forge/pytorch-lightning) +[](https://hub.docker.com/r/pytorchlightning/pytorch_lightning) +[](https://codecov.io/gh/Lightning-AI/lightning) + +[](https://lightning.ai/docs/pytorch/stable/)[](https://discord.gg/VptPCZkGNa) +[](https://github.com/Lightning-AI/lightning/blob/master/LICENSE) + +<!-- +[](https://www.codefactor.io/repository/github/Lightning-AI/lightning) +--> + +</div> + +###### \*Codecov is > 90%+ but build delays may show less + +______________________________________________________________________ + +## PyTorch Lightning is just organized PyTorch + +Lightning disentangles PyTorch code to decouple the science from the engineering. + + +______________________________________________________________________ + +## Lightning Design Philosophy + +Lightning structures PyTorch code with these principles: + +<div align="center"> + <img src="https://pl-bolts-doc-images.s3.us-east-2.amazonaws.com/philosophies.jpg" max-height="250px"> +</div> + +Lightning forces the following structure to your code which makes it reusable and shareable: + +- Research code (the LightningModule). +- Engineering code (you delete, and is handled by the Trainer). +- Non-essential research code (logging, etc... this goes in Callbacks). +- Data (use PyTorch DataLoaders or organize them into a LightningDataModule). + +Once you do this, you can train on multiple-GPUs, TPUs, CPUs, IPUs, HPUs and even in 16-bit precision without changing your code! + +[Get started in just 15 minutes](https://lightning.ai/docs/pytorch/latest/starter/introduction.html) + +______________________________________________________________________ + +## Continuous Integration + +Lightning is rigorously tested across multiple CPUs, GPUs, TPUs, IPUs, and HPUs and against major Python and PyTorch versions. + +<details> + <summary>Current build statuses</summary> + +<center> + +| System / PyTorch ver. | 1.11 | 1.12 | 1.13 | 2.0 | +| :--------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---- | +| Linux py3.9 \[GPUs\] | - | [?branchName=refs%2Ftags%2F2.0.1>)](https://dev.azure.com/Lightning-AI/lightning/_build/latest?definitionId=24&branchName=master) | [?branchName=refs%2Ftags%2F2.0.1>)](https://dev.azure.com/Lightning-AI/lightning/_build/latest?definitionId=24&branchName=master) | Soon | +| Linux py3.9 \[TPUs\] | - | [](https://github.com/Lightning-AI/lightning/actions/workflows/tpu-tests.yml) | | Soon | +| Linux py3.8 \[IPUs\] | - | - | [?branchName=refs%2Ftags%2F2.0.1>)](https://dev.azure.com/Lightning-AI/lightning/_build/latest?definitionId=25&branchName=master) | Soon | +| Linux py3.8 \[HPUs\] | - | - | [?branchName=refs%2Ftags%2F2.0.1>)](https://dev.azure.com/Lightning-AI/lightning/_build/latest?definitionId=26&branchName=master) | Soon | +| Linux (multiple Python versions) | [](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml) | [](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml) | [](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml) | Soon | +| OSX (multiple Python versions) | [](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml) | [](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml) | [](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml) | Soon | +| Windows (multiple Python versions) | [](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml) | [](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml) | [](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml) | Soon | + +</center> +</details> + +______________________________________________________________________ + +## How To Use + +### Step 0: Install + +Simple installation from PyPI + +```bash +pip install pytorch-lightning +``` + +<!-- --> + +### Step 1: Add these imports + +```python +import os +import torch +from torch import nn +import torch.nn.functional as F +from torchvision.datasets import MNIST +from torch.utils.data import DataLoader, random_split +from torchvision import transforms +import pytorch_lightning as pl +``` + +### Step 2: Define a LightningModule (nn.Module subclass) + +A LightningModule defines a full *system* (ie: a GAN, autoencoder, BERT or a simple Image Classifier). + +```python +class LitAutoEncoder(pl.LightningModule): + def __init__(self): + super().__init__() + self.encoder = nn.Sequential(nn.Linear(28 * 28, 128), nn.ReLU(), nn.Linear(128, 3)) + self.decoder = nn.Sequential(nn.Linear(3, 128), nn.ReLU(), nn.Linear(128, 28 * 28)) + + def forward(self, x): + # in lightning, forward defines the prediction/inference actions + embedding = self.encoder(x) + return embedding + + def training_step(self, batch, batch_idx): + # training_step defines the train loop. It is independent of forward + x, y = batch + x = x.view(x.size(0), -1) + z = self.encoder(x) + x_hat = self.decoder(z) + loss = F.mse_loss(x_hat, x) + self.log("train_loss", loss) + return loss + + def configure_optimizers(self): + optimizer = torch.optim.Adam(self.parameters(), lr=1e-3) + return optimizer +``` + +**Note: Training_step defines the training loop. Forward defines how the LightningModule behaves during inference/prediction.** + +### Step 3: Train! + +```python +dataset = MNIST(os.getcwd(), download=True, transform=transforms.ToTensor()) +train, val = random_split(dataset, [55000, 5000]) + +autoencoder = LitAutoEncoder() +trainer = pl.Trainer() +trainer.fit(autoencoder, DataLoader(train), DataLoader(val)) +``` + +## Advanced features + +Lightning has over [40+ advanced features](https://lightning.ai/docs/pytorch/latest/common/trainer.html#trainer-flags) designed for professional AI research at scale. + +Here are some examples: + +<div align="center"> + <img src="https://pl-bolts-doc-images.s3.us-east-2.amazonaws.com/features_2.jpg" max-height="600px"> +</div> + +<details> + <summary>Highlighted feature code snippets</summary> + +```python +# 8 GPUs +# no code changes needed +trainer = Trainer(max_epochs=1, accelerator="gpu", devices=8) + +# 256 GPUs +trainer = Trainer(max_epochs=1, accelerator="gpu", devices=8, num_nodes=32) +``` + +<summary>Train on TPUs without code changes</summary> + +```python +# no code changes needed +trainer = Trainer(accelerator="tpu", devices=8) +``` + +<summary>16-bit precision</summary> + +```python +# no code changes needed +trainer = Trainer(precision=16) +``` + +<summary>Experiment managers</summary> + +```python +from pytorch_lightning import loggers + +# tensorboard +trainer = Trainer(logger=TensorBoardLogger("logs/")) + +# weights and biases +trainer = Trainer(logger=loggers.WandbLogger()) + +# comet +trainer = Trainer(logger=loggers.CometLogger()) + +# mlflow +trainer = Trainer(logger=loggers.MLFlowLogger()) + +# neptune +trainer = Trainer(logger=loggers.NeptuneLogger()) + +# ... and dozens more +``` + +<summary>EarlyStopping</summary> + +```python +es = EarlyStopping(monitor="val_loss") +trainer = Trainer(callbacks=[es]) +``` + +<summary>Checkpointing</summary> + +```python +checkpointing = ModelCheckpoint(monitor="val_loss") +trainer = Trainer(callbacks=[checkpointing]) +``` + +<summary>Export to torchscript (JIT) (production use)</summary> + +```python +# torchscript +autoencoder = LitAutoEncoder() +torch.jit.save(autoencoder.to_torchscript(), "model.pt") +``` + +<summary>Export to ONNX (production use)</summary> + +```python +autoencoder = LitAutoEncoder() +input_sample = torch.randn((1, 64)) +with tempfile.NamedTemporaryFile(suffix=".onnx", delete=False) as tmpfile: + autoencoder.to_onnx(tmpfile.name, input_sample, export_params=True) +``` + +</details> + +### Pro-level control of optimization (advanced users) + +For complex/professional level work, you have optional full control of the optimizers. + +```python +class LitAutoEncoder(pl.LightningModule): + def __init__(self): + super().__init__() + self.automatic_optimization = False + + def training_step(self, batch, batch_idx): + # access your optimizers with use_pl_optimizer=False. Default is True + opt_a, opt_b = self.optimizers(use_pl_optimizer=True) + + loss_a = ... + self.manual_backward(loss_a, opt_a) + opt_a.step() + opt_a.zero_grad() + + loss_b = ... + self.manual_backward(loss_b, opt_b, retain_graph=True) + self.manual_backward(loss_b, opt_b) + opt_b.step() + opt_b.zero_grad() +``` + +______________________________________________________________________ + +## Advantages over unstructured PyTorch + +- Models become hardware agnostic +- Code is clear to read because engineering code is abstracted away +- Easier to reproduce +- Make fewer mistakes because lightning handles the tricky engineering +- Keeps all the flexibility (LightningModules are still PyTorch modules), but removes a ton of boilerplate +- Lightning has dozens of integrations with popular machine learning tools. +- [Tested rigorously with every new PR](https://github.com/Lightning-AI/lightning/tree/master/tests). We test every combination of PyTorch and Python supported versions, every OS, multi GPUs and even TPUs. +- Minimal running speed overhead (about 300 ms per epoch compared with pure PyTorch). + +______________________________________________________________________ + +## Examples + +###### Self-supervised Learning + +- [CPC transforms](https://lightning-bolts.readthedocs.io/en/stable/transforms/self_supervised.html#cpc-transforms) +- [Moco v2 tranforms](https://lightning-bolts.readthedocs.io/en/stable/transforms/self_supervised.html#moco-v2-transforms) +- [SimCLR transforms](https://lightning-bolts.readthedocs.io/en/stable/transforms/self_supervised.html#simclr-transforms) + +###### Convolutional Architectures + +- [GPT-2](https://lightning-bolts.readthedocs.io/en/stable/models/convolutional.html#gpt-2) +- [UNet](https://lightning-bolts.readthedocs.io/en/stable/models/convolutional.html#unet) + +###### Reinforcement Learning + +- [DQN Loss](https://lightning-bolts.readthedocs.io/en/stable/losses.html#dqn-loss) +- [Double DQN Loss](https://lightning-bolts.readthedocs.io/en/stable/losses.html#double-dqn-loss) +- [Per DQN Loss](https://lightning-bolts.readthedocs.io/en/stable/losses.html#per-dqn-loss) + +###### GANs + +- [Basic GAN](https://lightning-bolts.readthedocs.io/en/stable/models/gans.html#basic-gan) +- [DCGAN](https://lightning-bolts.readthedocs.io/en/stable/models/gans.html#dcgan) + +###### Classic ML + +- [Logistic Regression](https://lightning-bolts.readthedocs.io/en/stable/models/classic_ml.html#logistic-regression) +- [Linear Regression](https://lightning-bolts.readthedocs.io/en/stable/models/classic_ml.html#linear-regression) + +______________________________________________________________________ + +## Community + +The PyTorch Lightning community is maintained by + +- [10+ core contributors](https://lightning.ai/docs/pytorch/latest/governance.html) who are all a mix of professional engineers, Research Scientists, and Ph.D. students from top AI labs. +- 680+ active community contributors. + +Want to help us build Lightning and reduce boilerplate for thousands of researchers? [Learn how to make your first contribution here](https://devblog.pytorchlightning.ai/quick-contribution-guide-86d977171b3a) + +PyTorch Lightning is also part of the [PyTorch ecosystem](https://pytorch.org/ecosystem/) which requires projects to have solid testing, documentation and support. + +### Asking for help + +If you have any questions please: + +1. [Read the docs](https://lightning.ai/docs/pytorch/latest). +1. [Search through existing Discussions](https://github.com/Lightning-AI/lightning/discussions), or [add a new question](https://github.com/Lightning-AI/lightning/discussions/new) +1. [Join our Discord community](https://discord.gg/VptPCZkGNa). + + + + +%prep +%autosetup -n pytorch-lightning-2.0.1 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-pytorch-lightning -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Mon Apr 10 2023 Python_Bot <Python_Bot@openeuler.org> - 2.0.1-1 +- Package Spec generated @@ -0,0 +1 @@ +2dcb98d87eeb398914ae8b478d6054d6 pytorch-lightning-2.0.1.tar.gz |