Modelle mit LightningModule definieren

Skalierbare KI-Modelle mit PyTorch Lightning

Sergiy Tkachuk

Director, GenAI Productivity

LightningModule im Fokus

  1. Kapselt die Modellarchitektur
  2. Bündelt Trainingslogik in einer handlichen Einheit
  3. Blaupause für Ordnung und Klarheit in DL-Projekten

PyTorch-LightningModule-Diagramm

Skalierbare KI-Modelle mit PyTorch Lightning

Die init-Methode definieren

Kernaufgaben:

  • Initialisierung des Modells
  • super():
    • Automatisches Handling der Trainings-Loops
    • Logging
    • Checkpointing
  • Schichten nach der Initialisierung definieren
  • Modular und leicht wartbar
import lightning.pytorch as pl
import torch.nn as nn

class ClassificationModel(pl.LightningModule):
    def __init__(self, input_dim,
                 hidden_dim, num_class):
          # Initialize parent class
        super().__init__()

# First layer self.layer1 = nn.Linear(input_dim, hidden_dim) # Activation function self.relu = nn.ReLU() # Output layer self.layer2 = nn.Linear(hidden_dim, num_class)
Skalierbare KI-Modelle mit PyTorch Lightning

Die forward-Methode implementieren

Schritte:

  • Datenfluss durchs Netzwerk festlegen
  • Eingabe nacheinander durch Schichten führen
    • Lineare Transformation
    • Aktivierung
    • Letzte Schicht und Ausgabe
import lightning.pytorch as pl
import torch.nn as nn

class ClassificationModel(pl.LightningModule):
    def __init__(self, input_dim,
                 hidden_dim, num_class):
          ...

def forward(self, x):
x = self.layer1(x) # Pass input
x = nn.ReLU(x) # Apply activation
x = self.layer2(x) # Compute output
return x # Return result
Skalierbare KI-Modelle mit PyTorch Lightning

Beispiel: handgeschriebene Ziffern klassifizieren

import lightning.pytorch as pl
from torch.utils.data import DataLoader
from torchvision.datasets import MNIST
from torchvision import transforms

transform = transforms.ToTensor() train_ds = MNIST(root='.', train=True, download=True, transform=transform) test_ds = MNIST(root='.', train=False, download=True, transform=transform) train_loader = DataLoader(train_ds, batch_size=64, shuffle=True) test_loader = DataLoader(test_ds, batch_size=64)
model = ClassificationModel(input_dim=28*28, hidden_dim=128, num_class=10)
trainer = pl.Trainer(max_epochs=3, accelerator='auto') trainer.fit(model, train_loader, test_loader)
Skalierbare KI-Modelle mit PyTorch Lightning

Modell in Klassifikationsaufgaben integrieren

$$

  • Fokus: Klassifikation
  • Gesamter Ablauf im LightningModule
  • Rohausgaben für Softmax-Aktivierung
  • Integration mit Lightning Trainer
class ClassificationModel(pl.LightningModule):
  def __init__(self, input_dim, 
               hidden_dim, output_dim):
    super().__init__()

self.hid = nn.Linear(input_dim, hidden_dim) self.out = nn.Linear(hidden_dim, output_dim)
def forward(self, x):
x = self.hidden(x) x = nn.ReLU(x) x = self.output(x)
return x
Skalierbare KI-Modelle mit PyTorch Lightning

Lass uns üben!

Skalierbare KI-Modelle mit PyTorch Lightning

Preparing Video For Download...