pytorch-lightning: 一个自动执行 PyTorch 工程化以将模型训练从 CPU 扩展到多节点 GPU 的深度学习框架
pytorch-lightning: 一个自动执行 PyTorch 工程化以将模型训练从 CPU 扩展到多节点 GPU 的深度学习框架
它解决了什么问题
在原生 PyTorch 中训练深度学习模型通常需要编写重复且容易出错的工程代码,以处理诸如反向传播、混合精度和跨多个 GPU 或节点进行分布式训练等基础设施任务。PyTorch Lightning 移除了这些样板代码,让研究人员能够专注于模型科学,而不是底层的工程问题。
它是如何工作的
Lightning 在 PyTorch 之上提供了两个层级的抽象:
- PyTorch Lightning: 通过将模型逻辑(在
LightningModule中定义)与训练循环(由Trainer处理)解耦,来组织 PyTorch 代码。这使得同一套代码无需更改核心模型逻辑,即可从 CPU 扩展到多节点 GPU 或 TPU。 - Lightning Fabric: 为复杂模型(如 LLMs 或基础模型)提供专家级控制。它提供了一种轻量级的方式来扩展 PyTorch 训练循环和策略(如 DDP, FSDP, 和 DeepSpeed),同时让用户保持对训练循环的控制权。
适合谁使用
想要预训练或微调模型(包括 LLMs、扩散模型和图像分类器),但又不想管理分布式训练和硬件加速等复杂基础设施的 AI 研究人员和开发人员。
亮点
- 硬件无关性: 只需通过简单的标志位更改,无需修改核心代码,即可在 CPU、GPU (CUDA/MPS) 和 TPU 之间切换。
- 大规模可扩展性: 支持在跨多个节点、数千个 GPU 上进行训练。
- 内置优化: 原生支持 16-bit 混合精度以及 DeepSpeed 和 FSDP 等最先进的分布式策略。
- 广泛的集成: 与 TensorBoard, Weights & Biases, Comet, 和 MLFlow 等流行的实验管理器连接。
- 生产就绪: 包含将模型导出到 TorchScript (JIT) 和 ONNX 以进行部署的工具。
Sources
- undefinedLightning-AI/pytorch-lightning