pytorch-lightning: 一個自動化 PyTorch 工程以將模型訓練從 CPU 擴展到多節點 GPU 的深度學習框架

pytorch-lightning: 一個自動化 PyTorch 工程以將模型訓練從 CPU 擴展到多節點 GPU 的深度學習框架

它解決了什麼問題

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

運作方式

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

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

對象是誰

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

重點特性

  • 硬體無關性: 僅需透過簡單的標記(flag)更改,即可在 CPU、GPU (CUDA/MPS) 和 TPU 之間切換,無需修改核心代碼。
  • 大規模擴展性: 支持在跨多個節點的數千個 GPU 上進行訓練。
  • 內置優化: 原生支持 16-bit 混合精度以及 DeepSpeed 和 FSDP 等最先進的分佈式策略。
  • 廣泛的集成: 與 TensorBoard、Weights & Biases、Comet 和 MLFlow 等流行的實驗管理器連接。
  • 生產就緒: 包含將模型導出到 TorchScript (JIT) 和 ONNX 以進行部署的工具。

Sources