PyTorch Lightning

홍찬우·2023년 7월 24일
0
post-custom-banner

Deep Learning Blocks

Deep Learning Process

  1. 데이터 준비 단계

    • 입출력 데이터를 담는 Tensor 생성
  2. Model Implementation

    • 신경망 학습을 위한 모델 구현
  3. Loss Implementation

    • 모델이 얼마나 틀렸는지를 측정하기 위한 함수 설정
  4. Updater Implementation

    • 최적 가중치로 조정하는 optimizer 구현
  5. Iterative Learning

    • 데이터 feeding을 통한 모델 반복 학습 및 검증

1) Data preparation

  1. Data를 내 cpu, gpu로 가져오는 단계

  2. 데이터 분절화

    • train / valid / test 데이터로 separation

    • validation data는 parameter update에는 사용되지 않음 (Early Stop에 사용)

  3. data tensor화

  1. batch data 제작

5) Iterative Learning

  • train & validation





PyTorch Lightning

DL Interface

PyTorch Lightning

  • PyTorch는 low-level에선 매우 복잡하지만, simple한 Interface를 통해 배우는 과정

  • PyTorch 세계에서의 Keras


Keras

  • 기계학습 Framework보다 Interface의 역할

  • 다양한 기계학습 라이브러리와 호환



PyTorch Lightning (PL)

PyTorch에 대한 high-level 인터페이스 제공
더 높은 수준의 자동화 기능 제공




Deep Learning Process with PL

  • PyTorchLightning.LightningModuletorch.nn.Module 을 확장시켜 놓은 것

  • 기존 nn.Module은 언제 update 및 loss를 돌릴지 제한이 없지만,
    LightningModule은 일반적인 패턴을 이용해 구현

  • PyTorchLightning.Trainer 을 이용하면 학습 과정을 간단히 구현



Data Preparation

  • prepare_data() , setup() 은 예약된 method

    • prepare_data() 은 한 script에 한 번 수행

      • e.g., data download, excel data 변환 등 한 번만 수행되어야 하는 작업
    • setup() 은 gpu 개수만큼 호출

      • e.g., gpu마다 들어가는 data를 전처리하는 작업

 PL에선 dataloader의 이름을 들고 다닐 필요 없이 함수처럼 사용


Model Implementation

  • nn.Module 대신 pl.LightningModule 사용



Other API



Torch metrics

PyTorch Metric 구현 모음

  • GPU를 지원하는 Metric도 존재






※ 모든 이미지 및 코드 출처는 네이버 커넥트재단 부스트캠프 AI Tech 5기입니다. ※

profile
AI-Kid
post-custom-banner

0개의 댓글