一键导入
pytorch-lightning
PyTorch Lightning — LightningModule, Trainer, callbacks, logging, and checkpointing patterns for deep learning training loops
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
PyTorch Lightning — LightningModule, Trainer, callbacks, logging, and checkpointing patterns for deep learning training loops
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
HuggingFace ecosystem — transformers, datasets, huggingface_hub. Model loading, tokenization, training, and dataset handling.
DGL (Deep Graph Library) — graph construction, message passing, GNN layers, heterogeneous graphs, and batching for fraud detection on blockchain graphs
Optuna hyperparameter optimization — study creation, samplers, pruners, storage, and best practices for ML tuning
Pydantic v2 and pydantic-settings — BaseModel, field validation, config structs, and BaseSettings for CLI/config management (replaces argparse.Namespace)
| name | pytorch-lightning |
| description | PyTorch Lightning — LightningModule, Trainer, callbacks, logging, and checkpointing patterns for deep learning training loops |
import lightning as L
import torch
import torch.nn as nn
class MyModel(L.LightningModule):
def __init__(self, lr: float = 1e-3):
super().__init__()
self.save_hyperparameters() # saves all __init__ args to self.hparams
self.net = nn.Linear(128, 1)
self.loss_fn = nn.BCEWithLogitsLoss()
def forward(self, x: torch.Tensor) -> torch.Tensor:
return self.net(x)
def training_step(self, batch: tuple, batch_idx: int) -> torch.Tensor:
x, y = batch
logits = self(x)
loss = self.loss_fn(logits, y.float())
self.log("train/loss", loss, on_step=False, on_epoch=True, prog_bar=True)
return loss
def validation_step(self, batch: tuple, batch_idx: int) -> None:
x, y = batch
logits = self(x)
loss = self.loss_fn(logits, y.float())
self.log("val/loss", loss, prog_bar=True)
def configure_optimizers(self):
optimizer = torch.optim.Adam(self.parameters(), lr=self.hparams.lr)
scheduler = torch.optim.lr_scheduler.ReduceLROnPlateau(optimizer, patience=5)
return {
"optimizer": optimizer,
"lr_scheduler": {"scheduler": scheduler, "monitor": "val/loss"},
}
from lightning.pytorch.callbacks import ModelCheckpoint, EarlyStopping
from lightning.pytorch.loggers import CSVLogger
checkpoint_cb = ModelCheckpoint(
dirpath="checkpoints/",
filename="best-{epoch}-{val/loss:.4f}",
monitor="val/loss",
mode="min",
save_top_k=1,
)
early_stop_cb = EarlyStopping(monitor="val/loss", patience=10, mode="min")
logger = CSVLogger("logs/", name="experiment")
trainer = L.Trainer(
max_epochs=100,
accelerator="auto", # auto-detects GPU/CPU
devices=1,
precision="16-mixed", # AMP; use "32" for stability
callbacks=[checkpoint_cb, early_stop_cb],
logger=logger,
log_every_n_steps=10,
deterministic=True, # reproducibility (slower)
)
trainer.fit(model, train_dataloaders=train_loader, val_dataloaders=val_loader)
# Resume training
trainer.fit(model, ckpt_path="checkpoints/last.ckpt")
# Load for inference
model = MyModel.load_from_checkpoint("checkpoints/best.ckpt")
model.eval()
# on_step=True → logs at each batch (noisy, good for debugging)
# on_epoch=True → aggregates over epoch (recommended for val metrics)
# sync_dist=True → required for multi-GPU DDP training
self.log("train/loss", loss, on_step=False, on_epoch=True)
self.log("val/auc", auc, on_epoch=True, sync_dist=True)
# Log dict at once
self.log_dict({"val/loss": loss, "val/auc": auc}, prog_bar=True)
class FraudDataModule(L.LightningDataModule):
def __init__(self, data_dir: str, batch_size: int = 256):
super().__init__()
self.save_hyperparameters()
def setup(self, stage: str) -> None:
# called on each GPU; load/split data here
self.train_ds = ...
self.val_ds = ...
def train_dataloader(self):
return DataLoader(self.train_ds, batch_size=self.hparams.batch_size, shuffle=True)
def val_dataloader(self):
return DataLoader(self.val_ds, batch_size=self.hparams.batch_size)
optimizer.zero_grad(), loss.backward(), or optimizer.step() manually — Lightning handles this.self.save_hyperparameters() must be called in __init__ to enable checkpoint loading with load_from_checkpoint.transfer_batch_to_device if default .to(device) doesn't work on custom batch types.precision="16-mixed" (not "16") for modern AMP — the old "16" uses deprecated GradScaler path.deterministic=True disables some CUDA kernels; set only when reproducibility outweighs speed.