LightningTrainer
LightningTrainer er en central klasse i PyTorch Lightning, der automatiserer trænings-, validerings- og test-loops samt håndterer hardware-acceleration og distribuering.
Kort fortalt
LightningTrainer er en færdigbygget træningsmotor, der fjerner behovet for at skrive boilerplate-kode i PyTorch.
- Kategori
- træning
- Niveau
- øvet
Betydninger
1- 1
Hovedklassen i PyTorch Lightning, der organiserer træningsprocessen ved at udføre trænings-, validerings- og test-loops, administrere optimering, hardware-acceleration (CPU/GPU/TPU) og distribuering på tværs af enheder.
- LightningTrainer håndterer automatisk gradient-akkumulering og mixed precision, så forskeren kan fokusere på modelarkitekturen. — PyTorch Lightning dokumentation, 2023
- Ved at sætte `accelerator='gpu'` og `devices=4` i LightningTrainer kan man skalere træningen til flere GPU'er uden at ændre modelkoden. — PyTorch Lightning dokumentation, 2023
Hvornår bruges det
LightningTrainer bruges ved at instantiere den med ønskede konfigurationer (fx antal epoker, GPU'er) og derefter kalde `.fit(model, data)` med et LightningModule og dataloaders. Den understøtter callbacks, logging og checkpointing automatisk.
Kodeeksempel
from pytorch_lightning import LightningModule, Trainer
class MyModel(LightningModule):
def __init__(self):
super().__init__()
self.layer = nn.Linear(10, 1)
def forward(self, x):
return self.layer(x)
def training_step(self, batch, batch_idx):
x, y = batch
loss = nn.functional.mse_loss(self(x), y)
return loss
def configure_optimizers(self):
return torch.optim.Adam(self.parameters(), lr=0.001)
trainer = Trainer(max_epochs=10, accelerator='auto', devices=1)
trainer.fit(MyModel(), train_dataloaders=train_loader)Eksempel: Definer en LightningModule og træn den med LightningTrainer. Bemærk at træningsloopen ikke skal skrives manuelt.
Oprindelse
Termen stammer fra PyTorch Lightning-biblioteket, hvor 'Lightning' refererer til hurtig og elegant kode, og 'Trainer' angiver klassen ansvarlig for træning.