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. 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.

Afledte ord

2
LightningTrainer.fitLightningTrainer.test

Kilder

1

Se også