Lightning-AI/pytorch-lightning

Pretrain, finetune ANY AI model of ANY size on 1 or 10,000+ GPUs with zero code changes.

What it solves

使用純 PyTorch 訓練深度學習模型通常需要編寫重複且容易出錯的工程代碼,以處理基礎設施任務,例如反向傳播、混合精度和跨多個 GPU 或節點的分佈式訓練。PyTorch Lightning 移除了這些樣板代碼,讓研究人員能夠專注於模型科學,而不是底層的工程問題。

How it works

Lightning 在 PyTorch 之上提供了兩個層級的抽象化:

  1. PyTorch Lightning: 將 PyTorch 代碼進行組織,透過將模型邏輯(在 LightningModule 中定義)與訓練迴圈(由 Trainer 處理)解耦。這使得相同的代碼可以在不改變核心模型邏輯的情況下,從 CPU 擴展到多節點 GPU 或 TPU。
  2. Lightning Fabric: 為複雜模型(如 LLMs 或基礎模型)提供專家級的控制。它提供了一種輕量級的方式來擴展 PyTorch 訓練迴圈和策略(例如 DDP, FSDP, 和 DeepSpeed),同時讓用戶保持對訓練迴圈的控制權。

Who it’s for

想要在不管理分佈式訓練和硬體加速的複雜基礎設施的情況下,預訓練或微調模型(包括 LLMs, 擴散模型和圖像分類器)的 AI 研究人員和開發人員。

Highlights

  • Hardware Agnostic: 透過簡單的標記(flag)更改,無需修改核心代碼即可在 CPU, GPU (CUDA/MPS), 和 TPU 之間切換。 n* Massive Scalability: 支持在跨多個節點的數千個 GPU 上進行訓練。
  • Built-in Optimizations: 原生支持 16-bit 混合精度和最先進的分佈式策略,例如 DeepSpeed 和 FSDP。
  • Extensive Integrations: 與 TensorBoard, Weights & Biases, Comet, 和 MLFlow 等熱門的實驗管理工具進行連接。
  • Production Ready: 包含用於將模型導出到 TorchScript (JIT) 和 ONNX 以進行部署的工具。