Metadata-Version: 2.4
Name: pytorch-lightning
Version: 2.6.5
Summary: PyTorch Lightning is the lightweight PyTorch wrapper for ML researchers. Scale your models. Write less boilerplate.
Home-page: https://github.com/Lightning-AI/lightning
Download-URL: https://github.com/Lightning-AI/lightning
Author: Lightning AI et al.
Author-email: developer@lightning.ai
License: Apache-2.0
Project-URL: Bug Tracker, https://github.com/Lightning-AI/pytorch-lightning/issues
Project-URL: Documentation, https://pytorch-lightning.rtfd.io/en/latest/
Project-URL: Source Code, https://github.com/Lightning-AI/lightning
Keywords: deep learning,pytorch,AI
Classifier: Environment :: Console
Classifier: Natural Language :: English
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Topic :: Scientific/Engineering :: Image Recognition
Classifier: Topic :: Scientific/Engineering :: Information Analysis
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: torch>=2.1.0
Requires-Dist: tqdm>=4.57.0
Requires-Dist: PyYAML>5.4
Requires-Dist: fsspec[http]>=2022.5.0
Requires-Dist: torchmetrics>0.7.0
Requires-Dist: packaging>=23.0
Requires-Dist: typing-extensions>4.5.0
Requires-Dist: lightning-utilities>=0.10.0
Provides-Extra: test
Requires-Dist: coverage==7.13.4; python_version >= "3.10" and extra == "test"
Requires-Dist: coverage==7.10.7; python_version < "3.10" and extra == "test"
Requires-Dist: pytest==9.0.2; extra == "test"
Requires-Dist: pytest-cov==7.0.0; extra == "test"
Requires-Dist: pytest-timeout==2.4.0; extra == "test"
Requires-Dist: pytest-rerunfailures==16.0.1; python_version < "3.10" and extra == "test"
Requires-Dist: pytest-rerunfailures==16.1; python_version >= "3.10" and extra == "test"
Requires-Dist: pytest-random-order==1.2.0; extra == "test"
Requires-Dist: cloudpickle>=1.3; extra == "test"
Requires-Dist: scikit-learn>0.22.1; extra == "test"
Requires-Dist: numpy>1.21.0; python_version < "3.12" and extra == "test"
Requires-Dist: numpy>2.1.0; python_version >= "3.12" and extra == "test"
Requires-Dist: onnx>1.12.0; extra == "test"
Requires-Dist: onnxruntime>=1.12.0; extra == "test"
Requires-Dist: onnxscript>=0.1.0; extra == "test"
Requires-Dist: onnx-ir<0.1.16; extra == "test"
Requires-Dist: psutil<7.3.0; extra == "test"
Requires-Dist: pandas>2.0; extra == "test"
Requires-Dist: fastapi; extra == "test"
Requires-Dist: uvicorn; extra == "test"
Requires-Dist: tensorboard>=2.11; extra == "test"
Requires-Dist: huggingface-hub; extra == "test"
Provides-Extra: examples
Requires-Dist: requests<2.33.0; extra == "examples"
Requires-Dist: torchvision>=0.16.0; extra == "examples"
Requires-Dist: ipython[all]>=8.0.0; extra == "examples"
Requires-Dist: torchmetrics>=0.10.0; extra == "examples"
Provides-Extra: extra
Requires-Dist: matplotlib>3.1; extra == "extra"
Requires-Dist: omegaconf>=2.2.3; extra == "extra"
Requires-Dist: hydra-core>=1.2.0; extra == "extra"
Requires-Dist: jsonargparse[jsonnet,signatures]>=4.39.0; extra == "extra"
Requires-Dist: rich>=12.3.0; extra == "extra"
Requires-Dist: tensorboardX>=2.2; extra == "extra"
Requires-Dist: bitsandbytes>=0.45.2; platform_system != "Darwin" and extra == "extra"
Provides-Extra: strategies
Requires-Dist: deepspeed<0.17.0,>=0.15.0; (platform_system != "Windows" and platform_system != "Darwin") and extra == "strategies"
Provides-Extra: test-gpu
Requires-Dist: torch-tensorrt; (platform_system != "Darwin" and python_version >= "3.12") and extra == "test-gpu"
Provides-Extra: deepspeed
Requires-Dist: deepspeed<0.17.0,>=0.15.0; (platform_system != "Windows" and platform_system != "Darwin") and extra == "deepspeed"
Provides-Extra: all
Requires-Dist: matplotlib>3.1; extra == "all"
Requires-Dist: omegaconf>=2.2.3; extra == "all"
Requires-Dist: hydra-core>=1.2.0; extra == "all"
Requires-Dist: jsonargparse[jsonnet,signatures]>=4.39.0; extra == "all"
Requires-Dist: rich>=12.3.0; extra == "all"
Requires-Dist: tensorboardX>=2.2; extra == "all"
Requires-Dist: bitsandbytes>=0.45.2; platform_system != "Darwin" and extra == "all"
Requires-Dist: deepspeed<0.17.0,>=0.15.0; (platform_system != "Windows" and platform_system != "Darwin") and extra == "all"
Requires-Dist: requests<2.33.0; extra == "all"
Requires-Dist: torchvision>=0.16.0; extra == "all"
Requires-Dist: ipython[all]>=8.0.0; extra == "all"
Requires-Dist: torchmetrics>=0.10.0; extra == "all"
Provides-Extra: dev
Requires-Dist: matplotlib>3.1; extra == "dev"
Requires-Dist: omegaconf>=2.2.3; extra == "dev"
Requires-Dist: hydra-core>=1.2.0; extra == "dev"
Requires-Dist: jsonargparse[jsonnet,signatures]>=4.39.0; extra == "dev"
Requires-Dist: rich>=12.3.0; extra == "dev"
Requires-Dist: tensorboardX>=2.2; extra == "dev"
Requires-Dist: bitsandbytes>=0.45.2; platform_system != "Darwin" and extra == "dev"
Requires-Dist: deepspeed<0.17.0,>=0.15.0; (platform_system != "Windows" and platform_system != "Darwin") and extra == "dev"
Requires-Dist: requests<2.33.0; extra == "dev"
Requires-Dist: torchvision>=0.16.0; extra == "dev"
Requires-Dist: ipython[all]>=8.0.0; extra == "dev"
Requires-Dist: torchmetrics>=0.10.0; extra == "dev"
Requires-Dist: coverage==7.13.4; python_version >= "3.10" and extra == "dev"
Requires-Dist: coverage==7.10.7; python_version < "3.10" and extra == "dev"
Requires-Dist: pytest==9.0.2; extra == "dev"
Requires-Dist: pytest-cov==7.0.0; extra == "dev"
Requires-Dist: pytest-timeout==2.4.0; extra == "dev"
Requires-Dist: pytest-rerunfailures==16.0.1; python_version < "3.10" and extra == "dev"
Requires-Dist: pytest-rerunfailures==16.1; python_version >= "3.10" and extra == "dev"
Requires-Dist: pytest-random-order==1.2.0; extra == "dev"
Requires-Dist: cloudpickle>=1.3; extra == "dev"
Requires-Dist: scikit-learn>0.22.1; extra == "dev"
Requires-Dist: numpy>1.21.0; python_version < "3.12" and extra == "dev"
Requires-Dist: numpy>2.1.0; python_version >= "3.12" and extra == "dev"
Requires-Dist: onnx>1.12.0; extra == "dev"
Requires-Dist: onnxruntime>=1.12.0; extra == "dev"
Requires-Dist: onnxscript>=0.1.0; extra == "dev"
Requires-Dist: onnx-ir<0.1.16; extra == "dev"
Requires-Dist: psutil<7.3.0; extra == "dev"
Requires-Dist: pandas>2.0; extra == "dev"
Requires-Dist: fastapi; extra == "dev"
Requires-Dist: uvicorn; extra == "dev"
Requires-Dist: tensorboard>=2.11; extra == "dev"
Requires-Dist: huggingface-hub; extra == "dev"
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: download-url
Dynamic: home-page
Dynamic: keywords
Dynamic: license
Dynamic: license-file
Dynamic: project-url
Dynamic: provides-extra
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

**The lightweight PyTorch wrapper for high-performance AI research.
Scale your models, not the boilerplate.**

______________________________________________________________________

  Website (https://www.pytorchlightning.ai/) •
  How To Use •
  Docs (https://lightning.ai/docs/pytorch/stable/) •
  Examples •
  Community •
  Lightning AI (https://lightning.ai/) •
  License (https://github.com/Lightning-AI/pytorch-lightning/blob/master/LICENSE)

[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/pytorch-lightning)](https://pypi.org/project/pytorch-lightning/)
[![PyPI Status](https://badge.fury.io/py/pytorch-lightning.svg)](https://badge.fury.io/py/pytorch-lightning)
[![PyPI - Downloads](https://img.shields.io/pypi/dm/pytorch-lightning)](https://pepy.tech/project/pytorch-lightning)
[![Conda](https://img.shields.io/conda/v/conda-forge/pytorch-lightning?label=conda&color=success)](https://anaconda.org/conda-forge/pytorch-lightning)
[![DockerHub](https://img.shields.io/docker/pulls/pytorchlightning/pytorch_lightning.svg)](https://hub.docker.com/r/pytorchlightning/pytorch_lightning)
[![codecov](https://codecov.io/gh/Lightning-AI/pytorch-lightning/graph/badge.svg?token=SmzX8mnKlA)](https://codecov.io/gh/Lightning-AI/pytorch-lightning)

[![ReadTheDocs](https://readthedocs.org/projects/pytorch-lightning/badge/?version=2.6.5)](https://lightning.ai/docs/pytorch/stable/)[![Discord](https://img.shields.io/discord/1077906959069626439?style=plastic)](https://discord.gg/VptPCZkGNa)
[![license](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://github.com/Lightning-AI/pytorch-lightning/blob/master/LICENSE)

###### \*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.
![PT to PL](https://lightning.ai/docs/pytorch/stable/_static/images/general/pl_quick_start_full_compressed.gif)

______________________________________________________________________

## Lightning Design Philosophy

Lightning structures PyTorch code with these principles:

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, 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 and TPUs and against major Python and PyTorch versions.

Current build statuses

|       System / PyTorch ver.        |                                                    1.12                                                     | 1.13                                                                                                        | 2.0                                                                                                         | 2.1                                                                                                               |
| :--------------------------------: | :---------------------------------------------------------------------------------------------------------: | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |
|         Linux py3.9 [GPUs]         |                                                                                                             |                                                                                                             |                                                                                                             | ![Build Status](https://dev.azure.com/Lightning-AI/lightning/_apis/build/status%2Fpytorch-lightning%20%28GPUs%29) |
|  Linux (multiple Python versions)  | ![Test PyTorch](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml/badge.svg) | ![Test PyTorch](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml/badge.svg) | ![Test PyTorch](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml/badge.svg) | ![Test PyTorch](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml/badge.svg)       |
|   OSX (multiple Python versions)   | ![Test PyTorch](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml/badge.svg) | ![Test PyTorch](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml/badge.svg) | ![Test PyTorch](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml/badge.svg) | ![Test PyTorch](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml/badge.svg)       |
| Windows (multiple Python versions) | ![Test PyTorch](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml/badge.svg) | ![Test PyTorch](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml/badge.svg) | ![Test PyTorch](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml/badge.svg) | ![Test PyTorch](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml/badge.svg)       |

______________________________________________________________________

## 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, _ = 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/stable/common/trainer.html#trainer-flags) designed for professional AI research at scale.

Here are some examples:

Highlighted feature code snippets

```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)
```


Train on TPUs without code changes

```python
# no code changes needed
trainer = Trainer(accelerator="tpu", devices=8)
```


16-bit precision

```python
# no code changes needed
trainer = Trainer(precision=16)
```


Experiment managers

```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())

# ... and dozens more
```


EarlyStopping

```python
es = EarlyStopping(monitor="val_loss")
trainer = Trainer(callbacks=[es])
```


Checkpointing

```python
checkpointing = ModelCheckpoint(monitor="val_loss")
trainer = Trainer(callbacks=[checkpointing])
```


Export to torchscript (JIT) (production use)

```python
# torchscript
autoencoder = LitAutoEncoder()
torch.jit.save(autoencoder.to_torchscript(), "model.pt")
```


Export to ONNX (production use)

```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)
```


### 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 transforms](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/stable/community/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://medium.com/pytorch-lightning/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/stable).
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).
