검증과 테스트 도입

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

Sergiy Tkachuk

Director, GenAI Productivity

왜 검증과 테스트를 도입할까요?

  • 검증
    • 모델 성능 이슈를 조기에 식별
    • 과적합/과소적합 방지
  • 테스트
    • 미보던 데이터에서의 성능

검증 및 테스트 다이어그램

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

검증 구현하기

  • 각 에포크마다 모델 성능 평가
  • 더 안정적인 관점을 위한 지표 집계
def validation_step(self, batch, batch_idx):
  x, y = batch
  preds = self(x)
  loss = F.cross_entropy(preds, y)
  self.log('val_loss', loss)


def validation_epoch_end(self, outputs): avg_loss = torch.stack([x['loss'] for x in outputs]).mean() self.log('avg_val_loss', avg_loss)
PyTorch Lightning으로 만드는 확장 가능한 AI 모델

테스트 구현하기

  • 미보던 데이터에서 최종 성능 평가
  • 현실 환경에서의 효율성 벤치마크
  • 배포를 위한 지표 제공
def test_step(self, batch, batch_idx):
  x, y = batch
  y_hat = self(x)
  loss = F.cross_entropy(y_hat, y)
  self.log('test_loss', loss)


def test_epoch_end(self, outputs): avg_loss = torch.stack([x['loss'] for x in outputs]).mean() self.log('avg_test_loss', avg_loss)
PyTorch Lightning으로 만드는 확장 가능한 AI 모델

Torchmetrics로 평가하기

$$

  • 정확도와 같은 지표 모니터링
  • Lightning 워크플로우에 손쉽게 통합
  • 정확도 초기화
  • 각 검증 단계에서 정확도 계산
from torchmetrics import Accuracy

class BaseModel(pl.LightningModule):
    def __init__(self):
        super().__init__()
        self.accuracy = Accuracy()

def validation_step(self, batch, batch_idx): x, y = batch preds = self(x) acc = self.accuracy(preds, y) self.log('val_acc', acc)
PyTorch Lightning으로 만드는 확장 가능한 AI 모델

DataModule, 검증, 테스트 연결하기

  • 데이터 로직을 DataModule에 집중화

  • 일관된 train/val/test 분할

  • 검증 지표 자동 로깅

  • 준비부터 리포팅까지 재현 가능한 파이프라인

DataModule, 검증 및 테스트 다이어그램

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

연습해 봅시다!

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

Preparing Video For Download...