728x90

 

요즘 딥러닝과 관련해서 파이토치 라이트닝을 다룰일이 많은데 생각보다 한국어로 되어있는 Document, Blog가 너무 적어서 직접 적어보려고 한다. 생각보다 글솜씨가 좋지 않더라도 많은 도움이 되었으면 한다.

 

파이토치를 사용하는 이유는?


딥러닝 파이프라인

다음과 같은 딥러닝 파이프라인에서 파이토치 라이트닝은 다음과 같은 추상화 계층을 이용해 딥러닝 파이프라인 설계를 매우 간단하게 만들어주기 때문에 사용한다.

  • LightningModule은 모델 구조, 훈련 방법, 평가 방법, 테스트 방법, 추론 방법, 옵티마이저 등을 정의하는 클래스이다.
  • Trainer은 LightningModule에서 정의한 모델을 훈련 및 평가하는 방법을 추상화한 클래스이다.

간단하게 LightningModule에는 무엇이 있으며 Trainer에는 무엇이 있는지 간단하게 살펴보고 포스팅을 마치려고 합니다.

 

LightningModule


필수적으로 사용하는 코드 위주로 적었습니다.

__init__ 초기화를 정의
forward( ) 데이터를 모델에 넣어서 실행
training_step( ) 모델 훈련시 사용하는 코드
validation_step( ) 모델 평가시 사용하는 코드
test_step( ) 모델 테스트시 사용하는 코드
predict_step( ) 모델 예측시 사용하는 코드
configure_optimizers( ) optimizer, learning rate 스케줄러를 선택합니다. 
GAN의 경우 여러가지 optimizer를 가질 수 있습니다.

 

Trainer


Trainer에 대해 선언하는 방법과 GPU를 사용하는 방법에 대해서 설명해드리겠습니다.

모델 훈련

model = MyLightningModule()

trainer = Trainer()
# 훈련만 하는 경우
trainer.fit(model, train_dataloader)

# 훈련과 평가를 하는 경우
trainer.fit(model, train_dataloader, val_dataloader)

 

모델 평가

model = MyLightningModule()

trainer = Trainer()

trainer.validate(model=model, dataloaders=val_dataloaders)

 

모델  GPU 사용

# CPU 사용
trainer = Trainer(accelerator="cpu")

# Training with GPU Accelerator using 2 GPUs
# 훈련시 GPU 2개를 사용
trainer = Trainer(devices=2, accelerator="gpu")

# Training with TPU Accelerator using 8 tpu cores
# 훈련시 8개의 TPU 사용
trainer = Trainer(devices=8, accelerator="tpu")

# Training with GPU Accelerator using the DistributedDataParallel strategy
# 4개의 GPU를 사용하며, DDP 방식 사용
trainer = Trainer(devices=4, accelerator="gpu", strategy="ddp")

 

다음에는 파이토치 라이트닝을 이용해서 간단한 인공지능 모델을 만들어보겠습니다.

728x90