Colab에서 실행해 보기 이 문서에서는 PyTorch Lightning을 사용해 이미지 분류 파이프라인을 구축합니다. 코드의 가독성과 재현성을 높이기 위해 이 스타일 가이드를 따르겠습니다. 이와 관련된 좋은 설명은 여기에서 확인할 수 있습니다.Documentation Index
Fetch the complete documentation index at: https://translations.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
PyTorch Lightning과 W&B 설정
DataModule - 우리가 원하던 데이터 파이프라인
- 다운로드 / 토큰화 / 처리.
- 정제하고 (필요하다면) 디스크에 저장.
- Dataset 안에 로드.
- 변환 적용 (회전, 토큰화 등…).
- DataLoader 안에 래핑.
Callbacks
내장 콜백
Trainer에 전달할 수 있습니다.
사용자 정의 콜백
LightningModule - 시스템 정의하기
LightningModule은 모델이 아니라 시스템을 정의합니다. 여기서 시스템이란 모든 연구 코드를 하나의 클래스로 묶어, 독립적으로 동작할 수 있게 하는 것을 의미합니다. LightningModule은 PyTorch 코드를 다음 5개 섹션으로 구성합니다:
- 계산(
__init__) - 학습 루프(
training_step) - 검증 루프(
validation_step) - 테스트 루프(
test_step) - 옵티마이저(
configure_optimizers)
학습 및 평가
DataModule로 데이터 파이프라인을, LightningModule로 모델 아키텍처와 학습 루프를 구성했다면, 나머지는 PyTorch Lightning Trainer가 모두 자동으로 처리합니다.
Trainer는 다음을 자동으로 처리합니다:
- 에포크 및 배치 반복
optimizer.step(),backward,zero_grad()호출.eval()호출, 그래디언트 활성화/비활성화- 가중치 저장 및 로드
- W&B 로깅
- 멀티 GPU 학습 지원
- TPU 지원
- 16비트 학습 지원
마무리 생각
- 예전: 전통적인 PyTorch 모델 정의는 여기저기 흩어져 있었습니다. 모델은 어떤
model.py스크립트에 있고, 학습 루프는train.py파일에 있는 식이었죠. 파이프라인을 이해하려면 이리저리 왔다 갔다 하며 코드를 봐야 했습니다. - 지금:
LightningModule은training_step,validation_step등을 모델 정의와 함께 묶어 주는 시스템 역할을 합니다. 이제는 모듈화되어 있고 공유하기도 좋습니다. - 예전: TensorFlow/Keras의 가장 큰 장점 중 하나는 입력 데이터 파이프라인입니다. 데이터셋 카탈로그도 풍부하고 계속 성장하고 있습니다. PyTorch의 데이터 파이프라인은 가장 큰 고통 포인트였습니다. 일반적인 PyTorch 코드에서는 데이터 다운로드/정리/전처리가 여러 파일에 흩어져 있는 경우가 많았습니다.
- 지금: DataModule은 데이터 파이프라인을 하나의 공유 가능하고 재사용 가능한 클래스로 정리해 줍니다.
train_dataloader,val_dataloader(들),test_dataloader(들)과 그에 맞는 transform, 데이터 처리/다운로드 단계를 모아 놓은 집합이라고 보면 됩니다. - 예전: Keras에서는
model.fit으로 모델을 학습시키고,model.predict로 추론을 수행할 수 있습니다.model.evaluate는 테스트 데이터에 대해 익숙한 단순 평가를 제공했죠. PyTorch에서는 그렇지 않습니다. 보통은train.py와test.py가 따로 존재합니다. - 지금:
LightningModule이 있으면Trainer가 모든 것을 자동화해 줍니다. 모델을 학습하고 평가하기 위해서는trainer.fit과trainer.test만 호출하면 됩니다. - 예전: TensorFlow는 TPU를 사랑하고, PyTorch는…
- 지금: PyTorch Lightning을 사용하면 동일한 모델을 여러 GPU는 물론 TPU에서도 아주 쉽게 학습시킬 수 있습니다.
- 예전: 저는 Callback의 큰 팬이고, 커스텀 Callback을 직접 작성하는 것을 선호합니다. Early Stopping처럼 사소해 보이는 것도 전통적인 PyTorch에서는 논쟁거리였습니다.
- 지금: PyTorch Lightning에서는 Early Stopping과 Model Checkpointing을 사용하는 것이 정말 간단합니다. 여기에 커스텀 Callback도 직접 작성할 수 있습니다.
🎨 결론 및 참고 자료
- Step-by-step walk-through: 공식 튜토리얼 중 하나입니다. 문서가 매우 잘 정리되어 있어 학습 자료로 적극 추천합니다.
- Use Pytorch Lightning with W&B: PyTorch Lightning에서 W&B를 사용하는 방법을 익힐 수 있는 간단한 Colab 예제입니다.