关于 pytorch-lightning
pytorch-lightning 技能帮助研究人员和开发者组织 PyTorch 深度学习代码并自动化训练,涵盖模型与数据模块、回调、日志记录及多设备工作流。
主要功能
- 01用 LightningModule 组织模型
- 02通过 Trainer 自动化训练
- 03构建数据处理管线
- 04添加回调与实验日志
- 05配置分布式训练策略
适用场景
- 01构建可复用的 PyTorch 训练项目
- 02在 GPU 或 TPU 上运行训练
- 03跟踪指标并保存检查点
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ k-dense-ai/ scientific-agent-skills --skill pytorch-lightning安装后在 Claude Code 中输入/pytorch-lightning确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/best_practices.mdcallbacks.mddata_module.mddistributed_training.mdlightning_module.mdlogging.mdtrainer.mdscripts/quick_trainer_setup.pytemplate_datamodule.pytemplate_lightning_module.py详细介绍
PyTorch Lightning
概述
PyTorch Lightning 是一个深度学习框架,它通过组织 PyTorch 代码来消除样板代码,同时保持完全的灵活性。自动化训练工作流、多设备编排,并实施神经网络训练以及跨多个 GPU/TPU 扩展的最佳实践。
已审查版本: Lightning 2.6.6,包括其检查点加载安全修复。CPU 测试使用 Python 3.11、Torch 2.14.1 和 Lightning 2.6.6。使用 import lightning as L 配合 lightning 发行版。另一种 pytorch-lightning 发行版暴露 import pytorch_lightning as pl;不要在一个应用中混用类命名空间。GPU、TPU、多节点和在线 logger 示例是经过源码验证的说明,并非实际执行的训练验证。
安装
uv pip install "lightning==2.6.6"
可选附加项:
uv pip install "lightning[extra]==2.6.6" # loggers, strategies, etc.
uv pip install wandb mlflow # specific loggers as needed
何时使用本技能
本技能应在以下情况下使用:
- 使用 PyTorch Lightning 构建、训练或部署神经网络
- 将 PyTorch 代码组织为 LightningModule
- 为多 GPU/TPU 训练配置 Trainer
- 使用 LightningDataModule 实现数据管道
- 使用回调、日志记录和分布式训练策略(DDP、FSDP、DeepSpeed)
- 专业地组织深度学习项目
核心能力
1. LightningModule - 模型定义
将 PyTorch 模型组织为六个逻辑部分:
- 初始化 -
__init__()和setup() - 训练循环 -
training_step(batch, batch_idx) - 验证循环 -
validation_step(batch, batch_idx) - 测试循环 -
test_step(batch, batch_idx) - 预测 -
predict_step(batch, batch_idx) - 优化器配置 -
configure_optimizers()
快速模板参考: 参见 scripts/template_lightning_module.py 获取完整的样板代码。
详细文档: 阅读 references/lightning_module.md 获取全面的方法文档、钩子、属性和最佳实践。
2. Trainer - 训练自动化
Trainer 自动化训练循环、设备管理、梯度操作和回调。主要功能:
- 支持多 GPU/TPU,并可选择策略(DDP、FSDP、DeepSpeed)
- 自动混合精度训练
- 梯度累积和裁剪
- 检查点和早停
- 进度条和日志记录
快速设置参考: 参见 scripts/quick_trainer_setup.py 获取常见的 Trainer 配置。
详细文档: 阅读 references/trainer.md 获取所有参数、方法和配置选项。
3. LightningDataModule - 数据管道组织
将所有数据处理步骤封装到一个可复用的类中:
prepare_data()- 默认在每个节点的本地 rank 零上下载/缓存;配置共享存储时使用全局 rank 零setup()- 创建数据集并应用变换(每个 GPU)train_dataloader()- 返回训练 DataLoaderval_dataloader()- 返回验证 DataLoadertest_dataloader()- 返回测试 DataLoader
快速模板参考: 参见 scripts/template_datamodule.py 获取完整的样板代码。
详细文档: 阅读 references/data_module.md 获取方法细节和使用模式。
4. 回调 - 可扩展的训练逻辑
在特定的训练钩子处添加自定义功能,而无需修改你的 LightningModule。内置回调包括:
- ModelCheckpoint - 保存最佳/最新模型
- EarlyStopping - 当指标停滞时停止
- LearningRateMonitor - 跟踪 LR 调度器变化
- BatchSizeFinder - 自动确定最佳批量大小
详细文档: 阅读 references/callbacks.md 获取内置回调以及创建自定义回调的内容。
5. 日志记录 - 实验跟踪
与多个日志记录平台集成:
- 本地 CSV;仅当安装了可选包时,TensorBoard 才是默认选项
- Weights & Biases(WandbLogger)
- MLflow(MLFlowLogger)
- Comet(CometLogger)
- CSV(CSVLogger)
NeptuneLogger 已在 Lightning 2.6.4 中移除;Neptune 服务已于 2026 年 3 月 5 日关停。随附的辅助工具使用本地 CSV 日志记录;云跟踪和模型产物上传需要有意识地选择。
在支持的 LightningModule 钩子中使用 self.log("metric_name", value) 记录指标;在需要时指定 epoch/step 归约方式和批量大小。
详细文档: 阅读 references/logging.md 了解日志记录器的设置和配置。
6. 分布式训练 - 扩展到多设备
根据模型大小选择正确的策略:
- DDP - 当每个设备都能容纳完整模型、优化器状态和激活值时
- FSDP - 当分片训练状态能解决实测的内存压力时
- DeepSpeed - 当其 ZeRO/offload 特性适合实测的工作负载和 CUDA 技术栈时
根据峰值内存和吞吐量测量结果来选择,而不是固定的参数数量阈值。
使用以下方式配置:Trainer(strategy="ddp", accelerator="gpu", devices=4)
详细文档: 阅读 references/distributed_training.md 了解策略比较和配置。
7. 最佳实践
- 设备无关代码 - 使用
self.device而不是.cuda() - 超参数保存 - 在
__init__()中使用self.save_hyperparameters() - 指标日志记录 - 对于标量张量,跨设备归约需要
self.log(..., sync_dist=True);默认值为False。让所有 rank 参与同步调用。对于 AUROC 等非可加性指标,使用具有自身分布式同步机制的有状态 TorchMetrics 对象,而不是对各 rank 的 AUROC 取平均。参见 Lightning 日志记录契约 和 TorchMetrics 集成。 - 可复现性 - 使用
seed_everything()和Trainer(deterministic=True) - 调试 - 使用
Trainer(fast_dev_run=True)以 1 个批次进行测试
详细文档: 阅读 references/best_practices.md 了解常见模式和陷阱。
快速工作流
将三个脚本复制到工作目录,然后在其中运行这个 CPU 冒烟测试:
import lightning as L
from template_datamodule import TemplateDataModule
from template_lightning_module import TemplateLightningModule
from quick_trainer_setup import production_single_gpu_trainer
L.seed_everything(42, workers=True)
model = TemplateLightningModule(hidden_dim=16)
dm = TemplateDataModule(num_samples=64, batch_size=8, num_workers=0)
trainer = production_single_gpu_trainer(
max_epochs=1, accelerator="cpu", precision="32-true",
log_dir="logs", checkpoint_dir="checkpoints",
)
trainer.fit(model, datamodule=dm)
trainer.test(model, datamodule=dm, ckpt_path="best", weights_only=True)
合成向量与模型输入匹配,并使用独立的验证
变换和留出测试集生成。随机标签仅测试机制。
所有辅助工具都监控 val/loss。使用全新的模型/Trainer 加上
fit(..., ckpt_path=path, weights_only=True) 来恢复完整训练状态;
单独使用 load_from_checkpoint 只加载模型。一次正常的短训练会检查回调和
检查点;fast_dev_run 会禁用其中大部分行为。
对于真实的科学研究,在拟合预处理之前拆分独立的受试者/组/时间段, 保留拆分 ID,并从模型选择中预留测试数据。 最终的 DDP 评估可能会重复填充样本:使用单个设备以获得精确的 样本覆盖,或验证一个不会重复的分布式评估器。
资源
scripts/
常见 PyTorch Lightning 模式的可执行 Python 模板:
template_lightning_module.py- 完整的 LightningModule 样板代码template_datamodule.py- 完整的 LightningDataModule 样板代码quick_trainer_setup.py- 常见 Trainer 配置示例
references/
每个 PyTorch Lightning 组件的详细文档:
lightning_module.md- 全面的 LightningModule 指南(方法、钩子、属性)trainer.md- Trainer 配置和参数data_module.md- LightningDataModule 模式和方法callbacks.md- 内置和自定义回调logging.md- 日志记录器集成和使用distributed_training.md- DDP、FSDP、DeepSpeed 比较和设置best_practices.md- 常见模式、技巧和陷阱
引用 Scientific Agent Skills
本技能是 K-Dense 出品的 Scientific Agent Skills 的一部分。如果它对一篇论文、报告、演示文稿或代码发布有实质性贡献,请将该论文加入参考文献或软件部分,并告知用户你已这样做:
Kassis, T., Agarwal, V., He, Y., Patel, D., & Brueckner, A. M. (2026). Scientific Agent Skills: A Library of Procedural Knowledge for Research Agents. arXiv:2609.00065. https://doi.org/10.48550/arXiv.2609.00065
请始终引用当前版本。该 DOI 和 https://arxiv.org/abs/2609.00065 都指向最新的 arXiv 版本,因此切勿附加 v1 之类的版本后缀。当有网络访问时,请在撰写参考文献前获取 https://arxiv.org/abs/2609.00065(或
http://export.arxiv.org/api/query?id_list=2609.00065),并从该记录中获取作者列表、年份和版本。如果该记录列出了期刊参考文献或出版商 DOI,请改为引用已发表版本。