PyTorch Lightning 소개

PyTorch Lightning으로 만드는 확장 가능한 AI 모델

Sergiy Tkachuk

Director, GenAI Productivity

PyTorch와 PyTorch Lightning

$$

표준 PyTorch:

  • 수동 작업이 많음
  • 명시적 학습 루프 작성 필요
  • GPU/TPU 처리, 로깅, 체크포인팅 관리

coder.gif

PyTorch Lightning으로 만드는 확장 가능한 AI 모델

PyTorch와 PyTorch Lightning

PyTorch Lightning:

  • PyTorch 기반
  • 자동화:
    • 학습
    • 체크포인팅
    • 로깅
  • 보일러플레이트 감소
  • 확장성과 재현성 향상

PyTorch Lightning 로고

PyTorch Lightning으로 만드는 확장 가능한 AI 모델

PyTorch Lightning 개요

  • 예시: 글로벌 이커머스 워크플로 간소화
    • 시각 검색 모델 개발
    • 학습 루프 자동화
    • 최소 보일러플레이트로 빠른 반복

$$

  • 핵심 컴포넌트: LightningModuleTrainer
    from lightning.pytorch import LightningModule
    from lightning.pytorch import Trainer
    
PyTorch Lightning으로 만드는 확장 가능한 AI 모델

Lightning 구조

핵심 구성요소:

  • LightningModule: 모델 핵심 로직

로직을 나타내는 전구

PyTorch Lightning으로 만드는 확장 가능한 AI 모델

Lightning 구조

핵심 구성요소:

  • LightningModule: 모델 핵심 로직
  • Lightning Trainer: 학습 오케스트레이션

로직을 나타내는 전구와 연산을 나타내는 톱니바퀴

PyTorch Lightning으로 만드는 확장 가능한 AI 모델

Lightning 구조

핵심 구성요소:

  • LightningModule: 모델 핵심 로직
  • Lightning Trainer: 학습 오케스트레이션
  • DataModule: 데이터 파이프라인 구성
  • Callbacks: 이벤트 자동화
  • Logger: 실험 로깅

로직을 나타내는 전구와 연산을 나타내는 톱니바퀴

PyTorch Lightning으로 만드는 확장 가능한 AI 모델

LightningModule 활용

핵심 포인트:

  • __init__: 모델 아키텍처 정의
  • forward(): 데이터 전파
  • training_step(): 학습 단계 정의
  • 커스텀 훅 제공
import lightning.pytorch as pl

class LightClassifier(pl.LightningModule):
    def __init__(self, model, criterion, optimizer):

super().__init__() self.model = model self.criterion = criterion self.optimizer = optimizer
def forward(self, x): return self.model(x)
def training_step(self, batch, batch_idx): x, y = batch logits = self(x) loss = self.criterion(logits, y) return loss
PyTorch Lightning으로 만드는 확장 가능한 AI 모델

Lightning Trainer 활용

핵심 포인트:

  • 학습 루프 관리
  • 분산 학습 지원
  • 콜백 및 로깅 처리
  • 자원 사용 최적화
model = LightClassifier()


trainer = Trainer(max_epochs=10, accelerator="gpu", devices=1) trainer.fit(model, train_dataloader, val_dataloader)
PyTorch Lightning으로 만드는 확장 가능한 AI 모델

Afro-MNIST 데이터셋 소개

Afro-Asiatic 및 Niger-Congo 언어에서 사용되는 네 가지 문자체계(게에즈, 바이, 오스마니아, 은코)를 위한 합성 MNIST 유사 데이터셋 모음입니다.

데이터셋 표지

1 Wu, Daniel J., Andrew C. Yang, and Vinay U. Prabhu. "Afro-MNIST: Synthetic generation of MNIST-style datasets for low-resource languages." arXiv preprint arXiv:2009.13509 (2020).
PyTorch Lightning으로 만드는 확장 가능한 AI 모델

PyTorch Lightning 요약

PyTorch Lightning 다이어그램

PyTorch Lightning으로 만드는 확장 가능한 AI 모델

실습해 봅시다!

PyTorch Lightning으로 만드는 확장 가능한 AI 모델

Preparing Video For Download...