LightningModule ile modelleri tanımlama

PyTorch Lightning ile Ölçeklenebilir AI Modelleri

Sergiy Tkachuk

Director, GenAI Productivity

LightningModule odağında

  1. Model mimarisini kapsüller
  2. Eğitim mantığını tek, yönetilebilir birim hâline getirir
  3. Derin öğrenme projelerine düzen ve açıklık kazandıran bir şablondur

PyTorch LightningModule diyagramı

PyTorch Lightning ile Ölçeklenebilir AI Modelleri

init yöntemini tanımlama

Temel görevler:

  • Modelin başlatılması
  • super():
    • Eğitim döngülerinin otomatik yönetimi
    • Günlükleme
    • Kontrol noktası alma
  • Katmanlar başlatmadan sonra tanımlanır
  • Modüler ve bakımı kolay
import lightning.pytorch as pl
import torch.nn as nn

class ClassificationModel(pl.LightningModule):
    def __init__(self, input_dim,
                 hidden_dim, num_class):
          # Üst sınıfı başlat
        super().__init__()

# İlk katman self.layer1 = nn.Linear(input_dim, hidden_dim) # Aktivasyon fonksiyonu self.relu = nn.ReLU() # Çıkış katmanı self.layer2 = nn.Linear(hidden_dim, num_class)
PyTorch Lightning ile Ölçeklenebilir AI Modelleri

forward yöntemini uygulama

Temel adımlar:

  • Ağdaki veri akışını tanımlayın
  • Girdiyi katmanlardan sırayla geçirin
    • Doğrusal dönüşüm
    • Aktivasyon
    • Son katman ve çıktı
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) # Girdiyi geçir
x = nn.ReLU(x) # Aktivasyonu uygula
x = self.layer2(x) # Çıktıyı hesapla
return x # Sonucu döndür
PyTorch Lightning ile Ölçeklenebilir AI Modelleri

Örnek: el yazısı rakamları sınıflandırma

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)
PyTorch Lightning ile Ölçeklenebilir AI Modelleri

Modeli sınıflandırma görevleriyle entegre etme

$$

  • Sınıflandırma kullanımına odaklanın
  • Tüm akış LightningModule içinde
  • Softmax için ham çıktı üretir
  • Lightning Trainer ile entegrasyon
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
PyTorch Lightning ile Ölçeklenebilir AI Modelleri

Hadi pratik yapalım!

PyTorch Lightning ile Ölçeklenebilir AI Modelleri

Preparing Video For Download...