AI 모델 개발: DNN 및 최신 모델 – PyTorch Lightning
ㅁ DNN 및 최신 모델
ㅇ 정의:
PyTorch Lightning은 PyTorch 기반의 고수준 딥러닝 프레임워크로, 모델 학습 코드와 엔지니어링 코드를 분리하여 가독성과 재사용성을 높여주는 경량 래퍼 라이브러리이다.
ㅇ 특징:
– 모델 정의, 데이터 로딩, 학습 루프 등을 구조적으로 분리
– 분산 학습, mixed precision, 체크포인트 저장 등의 기능을 최소한의 코드 변경으로 지원
– 연구와 프로덕션 환경 모두에서 사용 가능
– 콜백(callback)과 로거(logger) 기능을 통한 확장성 제공
ㅇ 적합한 경우:
– 연구자가 모델 아이디어에 집중하고 싶을 때
– 대규모 실험 관리 및 재현성이 중요한 프로젝트
– 분산 학습 및 GPU/TPU 환경을 쉽게 활용해야 하는 경우
ㅇ 시험 함정:
– PyTorch Lightning은 PyTorch를 대체하는 것이 아니라 보조하는 프레임워크임
– 학습 루프를 자동화하지만, 세부 제어를 완전히 불가능하게 하는 것은 아님
– TensorFlow의 Keras와 동일한 수준의 API 추상화로 오해할 수 있음
ㅇ 시험 대비 “패턴 보기” 예시:
O: “PyTorch Lightning은 PyTorch 코드 구조를 단순화하고 분산 학습을 지원하는 고수준 프레임워크이다.”
X: “PyTorch Lightning은 PyTorch를 대체하는 완전히 새로운 딥러닝 프레임워크이다.”
ㅁ 추가 학습 내용
PyTorch Lightning의 핵심 클래스는 LightningModule과 LightningDataModule이다.
LightningModule은 모델의 아키텍처 정의, 학습·검증·테스트 단계의 로직, 옵티마이저 및 학습 스케줄러 설정을 담당한다.
LightningDataModule은 데이터셋 로딩, 전처리, 데이터 분할(train/val/test) 과정을 표준화하여 코드 재사용성과 가독성을 높인다.
Trainer 객체는 학습을 제어하는 핵심 요소로, 주요 파라미터에는 max_epochs(학습 epoch 수), accelerator(CPU, GPU, TPU, MPS 등 가속기 설정), devices(사용 장치 개수), callbacks(학습 중 특정 시점에 실행되는 기능) 등이 있다.
분산 학습 전략으로는 ddp(Distributed Data Parallel), dp(Data Parallel), deepspeed 등이 있으며, 환경과 목적에 맞게 선택해야 한다.
Mixed precision 학습은 fp16 또는 bf16을 사용하여 메모리 사용량과 연산 속도를 최적화할 수 있으며, Trainer 설정에서 precision 옵션으로 지정한다.
체크포인트 저장과 로딩은 모델 학습 상태를 보존·복원하는 데 사용되며, ModelCheckpoint 콜백 또는 Trainer의 save/load 기능을 활용한다.
PyTorch 코드에서 Lightning으로 전환할 때는 모델 정의를 LightningModule로 옮기고, 데이터 관련 처리를 LightningDataModule로 분리하며, 학습 루프를 Trainer로 대체하는 최소 구조 변경으로 구현할 수 있다.