*AutoGrad & Optimizer
*torch.nn.Module
- 딥러닝을 구성하는 Layer의 base class
- Input, Output, Forward, Backward 정의
- 학습의 대상이 되는 parameter(tensor) 정의
*nn.Parameter
- Tensor 객체의 상속 객체
- nn.Module 내에 attribute가 될 때는 required_grad=True로 지정되어 학습 대상이 되는 Tensor
- 우리가 직접 지정할 일은 잘 없음 - 대부분의 layer에는 weights 값들이 지정되어 있음
*Backward
- Layer에 있는 Parameter들의 미분을 수행
- Forward의 결과값 (model의 output=예측치)과 실제값간의 차이(loss)에 대해 미분을 수행
- 해당 값으로 Parameter 업데이트
- optimizer 초기화 -> input을 통해 yhat 계산 -> yhat과 y의 loss 구함 -> backward()로 backprop계산 -> 파라미터 update
*PyTorch Datasets & dataloaders
얼마나 효율적으로 대용량 데이터를 input으로 잘 넣어줄까?
*Dataset 클래스
- 데이터 입력 형태를 정의하는 클래스
- 데이터를 입력하는 방식의 표준화
- Image, Text, Audio 등에 따른 다른 입력정의
- classification에서는 dict type으로 반환을 많이 함
*Dataset 클래스 생성시 유의점
- 데이터 형태에 따라 각 함수를 다르게 정의함
- 모든 것을 데이터 생성 시점에 처리할 필요는 없음 - image의 Tensor 변화는 학습에 필요한 시점에 변환
- 데이터 셋에 대한 표준화된 처리방법 제공 필요 - 후속 연구자 또는 동료에게는 빛과 같은 존재
- 최근에는 HuggingFace등 표준화된 라이브러리 사용
*DataLoader 클래스
- Data의 Batch를 생성해주는 클래스
- 학습직전(GPU feed전) 데이터의 변환을 책임
- Tensor로 변환 + Batch 처리가 메인 업무
- 병렬적인 데이터 전처리 코드의 고민 필요
*모델 불러오기
*모델 저장하기 - model.save()
- 학습의 결과를 저장하기 위한 함수
- 모델 형태(architecture)와 파라미터 저장
- 모델 학습 중간 과정의 저장을 통해 최선의 결과모델을 선택
- 만들어진 모델을 외부 연구자와 공유하여 학습 재연성 향상
*checkpoints
- 학습의 중간 결과를 저장하여 최선의 결과를 선택
- earlystopping 기법 사용시 이전 학습의 결과물을 저장
- loss와 metric 값을 지속적으로 확인 저장
- 일반적으로 epoch, loss, metric을 함께 저장하여 확인
- colab에서 지속적인 학습을 위해 필요
*Transfer learning
- 다른 데이터셋으로 만든 모델을 현재 데이터에 적용
- 일반적으로 대용량 데이터셋으로 만들어진 모델의 성능↑
- 현재의 DL에서는 가장 일반적인 학습 기법
- backbone architecture가 잘 학습된 모델에서 일부분만 변경하여 학습을 수행함
- Freezing
- pretrained model을 활용시 모델의 일부분을 frozen시킴
- pretrained model을 활용시 모델의 일부분을 frozen시킴
*Monitoring tools for PyTorch
*Tensorboard
- TensorFlow의 프로젝트로 만들어진 시각화 도구
- 학습 그래프, metric, 학습 결과의 시각화 지원
- PyTorch도 연결 가능 -> DL 시각화 핵심 도구
- scalar : metric 등 상수 값의 연속(epoch)을 표시
- graph : 모델의 computational graph 표시
- histogram : weight 등 값의 분포를 표현
- image : 예측 값과 실제 값을 비교 표시
- mesh : 3D 형태의 데이터를 표현하는 도구
*weight & biases
- 머신러닝 실험을 원활히 지원하기 위한 상용도구
- 협업, code versioning, 실험 결과 기록 등 제공
- MLOps의 대표적인 툴로 저변 확대 중
'부스트캠프 AI Tech > [Week3] Pytorch' 카테고리의 다른 글
[Week3] PyTorch 활용하기 [Day4] (0) | 2021.08.20 |
---|---|
[Week3] PyTorch Basics [Day1] (0) | 2021.08.17 |