pytorch-lightning: CPU에서 멀티 노드 GPU까지 모델 학습을 확장하기 위해 PyTorch 엔지니어링을 자동화하는 딥러닝 프레임워크
pytorch-lightning: CPU에서 멀티 노드 GPU까지 모델 학습을 확장하기 위해 PyTorch 엔지니어링을 자동화하는 딥러닝 프레임워크
해결하는 문제
순수 PyTorch로 딥러닝 모델을 학습시키는 것은 종종 역전파(backpropagation), 혼합 정밀도(mixed precision), 그리고 여러 GPU 또는 노드에 걸친 분산 학습과 같은 인프라 작업을 처리하기 위해 반복적이고 오류가 발생하기 쉬운 엔지니어링 코드를 작성해야 합니다. PyTorch Lightning은 이러한 보일러플레이트(boilerplate) 코드를 제거하여 연구자들이 기반이 되는 엔지니어링보다는 모델 과학에 집중할 수 있도록 합니다.
작동 방식
Lightning은 PyTorch에 대해 두 가지 수준의 추상화를 제공합니다:
- PyTorch Lightning: 모델 로직(
LightningModule에 정의됨)을 학습 루프(Trainer에 의해 처리됨)에서 분리함으로써 PyTorch 코드를 구성합니다. 이를 통해 핵심 모델 로직을 변경하지 않고도 동일한 코드를 CPU에서 멀티 노드 GPU 또는 TPU로 확장할 수 있습니다. - Lightning Fabric: 복잡한 모델(LLM 또는 파운데이션 모델과 같은)을 위한 전문가 수준의 제어를 제공합니다. 사용자가 학습 루프를 직접 제어하면서 PyTorch 학습 루프와 전략(DDP, FSDP, DeepSpeed 등)을 확장할 수 있는 가벼운 방법을 제공합니다.
대상 사용자
분산 학습 및 하드웨어 가속의 복잡한 인프라를 관리하지 않고 모델(LLM, 확산 모델(diffusion models), 이미지 분류기 포함)을 사전 학습하거나 미세 조정(finetune)하려는 AI 연구자 및 개발자.
주요 특징
- 하드웨어 불가지론(Hardware Agnostic): 간단한 플래그 변경만으로 핵심 코드 수정 없이 CPU, GPU (CUDA/MPS), TPU 간을 전환할 수 있습니다.
- 대규모 확장성: 여러 노드에 걸친 수천 개의 GPU에서 학습을 지원합니다.
- 내장된 최적화: 16비트 혼합 정밀도 및 DeepSpeed, FSDP와 같은 최첨단 분산 전략에 대한 네이티브 지원을 있습니다.
- 광범위한 통합: TensorBoard, Weights & Biases, Comet, MLFlow와 같은 인기 있는 실험 관리 도구와 연결됩니다.
- 프로덕션 준비 완료: 배포를 위해 모델을을 TorchScript (JIT) 및 ONNX로 내보내는 도구를 포함합니다.
Sources
- undefinedLightning-AI/pytorch-lightning