Science Score: 44.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (14.2%) to scientific vocabulary
Last synced: 6 months ago · JSON representation ·

Repository

Basic Info
  • Host: GitHub
  • Owner: rajpal-1
  • License: apache-2.0
  • Language: Python
  • Default Branch: master
  • Size: 294 MB
Statistics
  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • Open Issues: 15
  • Releases: 0
Created over 1 year ago · Last pushed over 1 year ago
Metadata Files
Readme Contributing License Code of conduct Citation Codeowners Security

README.md

Lightning

**The deep learning framework to pretrain, finetune and deploy AI models.** **NEW- Lightning 2.0 features a clean and stable API!!** ______________________________________________________________________

Quick startExamplesPyTorch LightningFabricLightning AICommunityDocs

[![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/lightning?label=conda&color=success)](https://anaconda.org/conda-forge/lightning) [![codecov](https://codecov.io/gh/Lightning-AI/pytorch-lightning/graph/badge.svg?token=SmzX8mnKlA)](https://codecov.io/gh/Lightning-AI/pytorch-lightning) [![Discord](https://img.shields.io/discord/1077906959069626439?style=plastic)](https://discord.gg/VptPCZkGNa) ![GitHub commit activity](https://img.shields.io/github/commit-activity/w/lightning-ai/lightning) [![license](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://github.com/Lightning-AI/lightning/blob/master/LICENSE)

  Get started

 

Lightning has 2 core packages

PyTorch Lightning: Train and deploy PyTorch at scale.
Lightning Fabric: Expert control.

Lightning gives you granular control over how much abstraction you want to add over PyTorch.

 

Quick start

Install Lightning:

bash pip install lightning

Advanced install options #### Install with optional dependencies ```bash pip install lightning['extra'] ``` #### Conda ```bash conda install lightning -c conda-forge ``` #### Install stable version Install future release from the source ```bash pip install https://github.com/Lightning-AI/lightning/archive/refs/heads/release/stable.zip -U ``` #### Install bleeding-edge Install nightly from the source (no guarantees) ```bash pip install https://github.com/Lightning-AI/lightning/archive/refs/heads/master.zip -U ``` or from testing PyPI ```bash pip install -iU https://test.pypi.org/simple/ pytorch-lightning ```

PyTorch Lightning example

Define the training workflow. Here's a toy example (explore real examples):

```python

main.py

! pip install torchvision

import torch, torch.nn as nn, torch.utils.data as data, torchvision as tv, torch.nn.functional as F import lightning as L

--------------------------------

Step 1: Define a LightningModule

--------------------------------

A LightningModule (nn.Module subclass) defines a full system

(ie: an LLM, diffusion model, autoencoder, or simple image classifier).

class LitAutoEncoder(L.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

-------------------

Step 2: Define data

-------------------

dataset = tv.datasets.MNIST(".", download=True, transform=tv.transforms.ToTensor()) train, val = data.random_split(dataset, [55000, 5000])

-------------------

Step 3: Train

-------------------

autoencoder = LitAutoEncoder() trainer = L.Trainer() trainer.fit(autoencoder, data.DataLoader(train), data.DataLoader(val)) ```

Run the model on your terminal

bash pip install torchvision python main.py

 

Why PyTorch Lightning?

PyTorch Lightning is just organized PyTorch - Lightning disentangles PyTorch code to decouple the science from the engineering.

PT to PL

 


Examples

Explore various types of training possible with PyTorch Lightning. Pretrain and finetune ANY kind of model to perform ANY task like classification, segmentation, summarization and more:

| Task | Description | Run | |-------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------|---| | Hello world | Pretrain - Hello world example | Open In Studio | | Image classification | Finetune - ResNet-34 model to classify images of cars | Open In Studio |
| Image segmentation | Finetune - ResNet-50 model to segment images | Open In Studio |
| Object detection | Finetune - Faster R-CNN model to detect objects | Open In Studio | | Text classification | Finetune - text classifier (BERT model) | Open In Studio |
| Text summarization | Finetune - text summarization (Hugging Face transformer model) | Open In Studio |
| Audio generation | Finetune - audio generator (transformer model) | Open In Studio |
| LLM finetuning | Finetune - LLM (Meta Llama 3.1 8B) | Open In Studio | | Image generation | Pretrain - Image generator (diffusion model) | Open In Studio |


Advanced features

Lightning has over 40+ advanced features designed for professional AI research at scale.

Here are some examples:

Train on 1000s of GPUs without code changes ```python # 8 GPUs # no code changes needed trainer = Trainer(accelerator="gpu", devices=8) # 256 GPUs trainer = Trainer(accelerator="gpu", devices=8, num_nodes=32) ```
Train on other accelerators like 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 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 ```
Early Stopping ```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 # onnx with tempfile.NamedTemporaryFile(suffix=".onnx", delete=False) as tmpfile: autoencoder = LitAutoEncoder() input_sample = torch.randn((1, 64)) autoencoder.to_onnx(tmpfile.name, input_sample, export_params=True) os.path.isfile(tmpfile.name) ```
______________________________________________________________________ ## 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). ______________________________________________________________________
Read the PyTorch Lightning docs

   

Lightning Fabric: Expert control

Run on any device at any scale with expert-level control over PyTorch training loop and scaling strategy. You can even write your own Trainer.

Fabric is designed for the most complex models like foundation model scaling, LLMs, diffusion, transformers, reinforcement learning, active learning. Of any size.

What to change Resulting Fabric Code (copy me!)
```diff + import lightning as L import torch; import torchvision as tv dataset = tv.datasets.CIFAR10("data", download=True, train=True, transform=tv.transforms.ToTensor()) + fabric = L.Fabric() + fabric.launch() model = tv.models.resnet18() optimizer = torch.optim.SGD(model.parameters(), lr=0.001) - device = "cuda" if torch.cuda.is_available() else "cpu" - model.to(device) + model, optimizer = fabric.setup(model, optimizer) dataloader = torch.utils.data.DataLoader(dataset, batch_size=8) + dataloader = fabric.setup_dataloaders(dataloader) model.train() num_epochs = 10 for epoch in range(num_epochs): for batch in dataloader: inputs, labels = batch - inputs, labels = inputs.to(device), labels.to(device) optimizer.zero_grad() outputs = model(inputs) loss = torch.nn.functional.cross_entropy(outputs, labels) - loss.backward() + fabric.backward(loss) optimizer.step() print(loss.data) ``` ```Python import lightning as L import torch; import torchvision as tv dataset = tv.datasets.CIFAR10("data", download=True, train=True, transform=tv.transforms.ToTensor()) fabric = L.Fabric() fabric.launch() model = tv.models.resnet18() optimizer = torch.optim.SGD(model.parameters(), lr=0.001) model, optimizer = fabric.setup(model, optimizer) dataloader = torch.utils.data.DataLoader(dataset, batch_size=8) dataloader = fabric.setup_dataloaders(dataloader) model.train() num_epochs = 10 for epoch in range(num_epochs): for batch in dataloader: inputs, labels = batch optimizer.zero_grad() outputs = model(inputs) loss = torch.nn.functional.cross_entropy(outputs, labels) fabric.backward(loss) optimizer.step() print(loss.data) ```

Key features

Easily switch from running on CPU to GPU (Apple Silicon, CUDA, …), TPU, multi-GPU or even multi-node training ```python # Use your available hardware # no code changes needed fabric = Fabric() # Run on GPUs (CUDA or MPS) fabric = Fabric(accelerator="gpu") # 8 GPUs fabric = Fabric(accelerator="gpu", devices=8) # 256 GPUs, multi-node fabric = Fabric(accelerator="gpu", devices=8, num_nodes=32) # Run on TPUs fabric = Fabric(accelerator="tpu") ```
Use state-of-the-art distributed training strategies (DDP, FSDP, DeepSpeed) and mixed precision out of the box ```python # Use state-of-the-art distributed training techniques fabric = Fabric(strategy="ddp") fabric = Fabric(strategy="deepspeed") fabric = Fabric(strategy="fsdp") # Switch the precision fabric = Fabric(precision="16-mixed") fabric = Fabric(precision="64") ```
All the device logic boilerplate is handled for you ```diff # no more of this! - model.to(device) - batch.to(device) ```
Build your own custom Trainer using Fabric primitives for training checkpointing, logging, and more ```python import lightning as L class MyCustomTrainer: def __init__(self, accelerator="auto", strategy="auto", devices="auto", precision="32-true"): self.fabric = L.Fabric(accelerator=accelerator, strategy=strategy, devices=devices, precision=precision) def fit(self, model, optimizer, dataloader, max_epochs): self.fabric.launch() model, optimizer = self.fabric.setup(model, optimizer) dataloader = self.fabric.setup_dataloaders(dataloader) model.train() for epoch in range(max_epochs): for batch in dataloader: input, target = batch optimizer.zero_grad() output = model(input) loss = loss_fn(output, target) self.fabric.backward(loss) optimizer.step() ``` You can find a more extensive example in our [examples](examples/fabric/build_your_own_trainer)

Read the Lightning Fabric docs

   

Examples

Self-supervised Learning
Convolutional Architectures
Reinforcement Learning
GANs
Classic ML

   

Continuous Integration

Lightning is rigorously tested across multiple CPUs, GPUs and TPUs and against major Python and PyTorch versions.

*Codecov is > 90%+ but build delays may show less
Current build statuses
| System / PyTorch ver. | 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?branchName=master)](https://dev.azure.com/Lightning-AI/lightning/_build/latest?definitionId=24&branchName=master) | | Linux py3.9 \[TPUs\] | | [![Test PyTorch - TPU](https://github.com/Lightning-AI/lightning/actions/workflows/tpu-tests.yml/badge.svg)](https://github.com/Lightning-AI/lightning/actions/workflows/tpu-tests.yml) | | | Linux (multiple Python versions) | [![Test PyTorch](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml/badge.svg)](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml) | [![Test PyTorch](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml/badge.svg)](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml) | [![Test PyTorch](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml/badge.svg)](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml) | | OSX (multiple Python versions) | [![Test PyTorch](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml/badge.svg)](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml) | [![Test PyTorch](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml/badge.svg)](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml) | [![Test PyTorch](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml/badge.svg)](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml) | | Windows (multiple Python versions) | [![Test PyTorch](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml/badge.svg)](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml) | [![Test PyTorch](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml/badge.svg)](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml) | [![Test PyTorch](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml/badge.svg)](https://github.com/Lightning-AI/lightning/actions/workflows/ci-tests-pytorch.yml) |

   

Community

The lightning community is maintained by

  • 10+ core contributors who are all a mix of professional engineers, Research Scientists, and Ph.D. students from top AI labs.
  • 800+ community contributors.

Want to help us build Lightning and reduce boilerplate for thousands of researchers? Learn how to make your first contribution here

Lightning is also part of the PyTorch ecosystem which requires projects to have solid testing, documentation and support.

Asking for help

If you have any questions please:

  1. Read the docs.
  2. Search through existing Discussions, or add a new question
  3. Join our discord.

Owner

  • Name: Rajpal
  • Login: rajpal-1
  • Kind: user

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you want to cite the framework, feel free to use this (but only if you loved it 😊)"
title: "PyTorch Lightning"
abstract: "The lightweight PyTorch wrapper for high-performance AI research. Scale your models, not the boilerplate."
date-released: 2019-03-30
authors:
  - family-names: "Falcon"
    given-names: "William"
  - name: "The PyTorch Lightning team"
version: 1.4
doi: 10.5281/zenodo.3828935
license: "Apache-2.0"
url: "https://www.pytorchlightning.ai"
repository-code: "https://github.com/Lightning-AI/lightning"
keywords:
  - machine learning
  - deep learning
  - artificial intelligence

GitHub Events

Total
  • Delete event: 5
  • Issue comment event: 10
  • Pull request event: 9
  • Create event: 5
Last Year
  • Delete event: 5
  • Issue comment event: 10
  • Pull request event: 9
  • Create event: 5

Dependencies

.github/actions/pip-wheels/action.yml actions
  • actions/cache/restore v3 composite
  • actions/cache/save v3 composite
.github/actions/pkg-check/action.yml actions
.github/actions/pkg-install/action.yml actions
.github/actions/pkg-publish/action.yml actions
  • pypa/gh-action-pypi-publish v1.5.1 composite
.github/workflows/_build-packages.yml actions
  • ./.github/actions/pkg-check * composite
  • actions/checkout v4 composite
  • actions/download-artifact v3 composite
  • actions/setup-python v5 composite
  • actions/upload-artifact v3 composite
.github/workflows/_legacy-checkpoints.yml actions
  • actions/checkout v4 composite
  • actions/setup-python v5 composite
  • actions/upload-artifact v3 composite
  • peter-evans/create-pull-request v6 composite
.github/workflows/call-clear-cache.yml actions
.github/workflows/ci-check-md-links.yml actions
.github/workflows/ci-checkpoints.yml actions
.github/workflows/ci-pkg-install.yml actions
  • ./.github/actions/pkg-install * composite
  • actions/checkout v4 composite
  • actions/download-artifact v3 composite
  • actions/setup-python v5 composite
.github/workflows/ci-rtfd.yml actions
  • readthedocs/actions/preview v1 composite
.github/workflows/ci-schema.yml actions
.github/workflows/ci-tests-fabric.yml actions
  • ./.github/actions/pip-wheels * composite
  • actions/cache/restore v4 composite
  • actions/checkout v4 composite
  • actions/setup-python v5 composite
  • codecov/codecov-action v4 composite
.github/workflows/ci-tests-pytorch.yml actions
  • ./.github/actions/pip-wheels * composite
  • actions/cache v4 composite
  • actions/cache/restore v4 composite
  • actions/checkout v4 composite
  • actions/setup-python v5 composite
  • codecov/codecov-action v4 composite
.github/workflows/cleanup-caches.yml actions
  • actions/checkout v4 composite
.github/workflows/code-checks.yml actions
  • actions/cache v4 composite
  • actions/checkout v4 composite
  • actions/setup-python v5 composite
.github/workflows/docker-build.yml actions
  • actions/checkout v4 composite
  • docker/build-push-action v6 composite
  • docker/login-action v3 composite
  • docker/setup-buildx-action v3 composite
  • ravsamhq/notify-slack-action v2 composite
.github/workflows/docs-build.yml actions
  • actions/cache/restore v4 composite
  • actions/checkout v4 composite
  • actions/download-artifact v3 composite
  • actions/setup-python v5 composite
  • actions/upload-artifact v3 composite
  • google-github-actions/auth v2 composite
  • google-github-actions/setup-gcloud v2 composite
.github/workflows/docs-tutorials.yml actions
  • actions/checkout v4 composite
  • peter-evans/create-pull-request v6 composite
.github/workflows/labeler-issue.yml actions
  • actions/checkout v4 composite
  • redhat-plumbers-in-action/advanced-issue-labeler v3 composite
  • stefanbuck/github-issue-parser v3 composite
.github/workflows/labeler-pr.yml actions
  • actions/labeler v5 composite
.github/workflows/probot-auto-cc.yml actions
  • Lightning-AI/probot v1 composite
.github/workflows/probot-check-group.yml actions
  • Lightning-AI/probot v5.4 composite
.github/workflows/release-nightly.yml actions
  • ./.github/actions/pkg-check * composite
  • ./.github/actions/pkg-publish * composite
  • actions/checkout v4 composite
  • actions/download-artifact v4 composite
  • actions/setup-python v5 composite
  • actions/upload-artifact v4 composite
.github/workflows/release-pkg.yml actions
  • ./.github/actions/pkg-publish * composite
  • AButler/upload-release-assets v3.0 composite
  • actions/checkout v4 composite
  • actions/download-artifact v3 composite
  • actions/setup-python v5 composite
  • peter-evans/create-pull-request v6 composite
.github/workflows/tpu-tests.yml actions
  • actions/checkout v4 composite
  • actions/setup-python v5 composite
  • codecov/codecov-action v4 composite
  • google-github-actions/auth v2 composite
  • google-github-actions/setup-gcloud v2 composite
dockers/base-cuda/Dockerfile docker
  • nvidia/cuda ${CUDA_VERSION}-runtime-ubuntu${UBUNTU_VERSION} build
dockers/docs/Dockerfile docker
  • ubuntu 20.04 build
dockers/nvidia/Dockerfile docker
  • nvcr.io/nvidia/pytorch ${PYTORCH_VERSION}-py3 build
dockers/release/Dockerfile docker
  • pytorchlightning/pytorch_lightning base-cuda-py${PYTHON_VERSION}-torch${PYTORCH_VERSION}-cuda${CUDA_VERSION} build
.actions/requirements.txt pypi
  • jsonargparse >=4.16.0,<4.28.0
  • packaging *
  • requests *
examples/fabric/reinforcement_learning/requirements.txt pypi
  • gymnasium >=0.27.1
  • lightning >=1.9.0
  • moviepy *
  • tensorboard *
  • torchmetrics *
pyproject.toml pypi
requirements/ci.txt pypi
  • awscli >=1.30.0,<1.31.0
  • importlib-metadata <8.0.0
  • packaging <24.2
  • setuptools <70.1.1
  • twine ==4.0.1
  • wget *
  • wheel <0.44.0
requirements/docs.txt pypi
  • docutils >=0.16,<0.21
  • jinja2 <3.2.0
  • lai-sphinx-theme *
  • lightning-utilities >=0.11.1,<0.12.0
  • myst-parser >=0.18.1,<3.0.0
  • nbsphinx >=0.8.5,<=0.9.2
  • pandoc >=1.0,<=2.3
  • sphinx >5.0,<6.0
  • sphinx-autobuild *
  • sphinx-autodoc-typehints >=1.16
  • sphinx-copybutton >=0.3,<=0.5.2
  • sphinx-multiproject *
  • sphinx-paramlinks >=0.5.1,<=0.6.0
  • sphinx-rtd-dark-mode *
  • sphinx-togglebutton >=0.2,<=0.3.2
  • sphinx-toolbox ==3.5.0
  • sphinxcontrib-fulltoc >=1.0,<=1.2.0
  • sphinxcontrib-mockautodoc *
  • sphinxcontrib-video ==0.2.0
requirements/doctests.txt pypi
  • pytest ==7.4.0 test
  • pytest-doctestplus ==1.0.0 test
requirements/typing.txt pypi
  • mypy ==1.11.0
  • torch ==2.4.0
  • types-Markdown *
  • types-PyYAML *
  • types-bleach *
  • types-cachetools *
  • types-croniter *
  • types-decorator *
  • types-paramiko *
  • types-protobuf *
  • types-python-dateutil *
  • types-redis *
  • types-requests *
  • types-setuptools *
  • types-six *
  • types-tabulate *
  • types-toml *
  • types-tzlocal *
  • types-ujson *
requirements.txt pypi
setup.py pypi
src/lightning/pytorch/trainer/setup.py pypi
tests/legacy/requirements.txt pypi