Pytorch Lightning은 Pytorch보다 더 높은 수준의 추상화를 지원해 구조화된 코드를 작성할 수 있도록 한다.
PL의 코드 스타일에 대해 살펴보자.
먼저 클래스(모델)를 선언한 다음, init함수에서 신경망 모델의 layer, 활성함수 등을 선언하고 forward에서는 이미 만든 layer를 활용해 모델을 구축한다.
그 다음 데이터를 준비한다. prepare_data함수에서 데이터를 입력받은 다음 텐서로 변환하고, 변환된 텐서에 대해 학습 / 검증 / 시험 단계를 거친다.
다음으로는 옵티마이저를 준비한 다음, 오차함수를 준비한다. 입력한 데이터를 최적화하는 과정이다.
즉, 학습 검증 평가 모드를 함수단위로 분할해서 진행한다.
각각의 단계를 자세히 살펴보자.
epoch_end부분의 리턴타입은 수정할 수 있어 한 epoch마다 원하는 방향으로 출력을 조절할 수 있다.
Pytorch와 Pytorch Lightning가 어떤 부분에서 차이나는지 비교하며 공부하자.