본문 바로가기

부스트캠프 AI Tech/[Week3] Pytorch

[Week3] PyTorch 구조 학습 [Day2 ~ Day3]

*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 처리가 메인 업무
  • 병렬적인 데이터 전처리 코드의 고민 필요
    DataLoader의 arguments

 

*모델 불러오기

 

*모델 저장하기 - model.save()

  • 학습의 결과를 저장하기 위한 함수
  • 모델 형태(architecture)와 파라미터 저장
  • 모델 학습 중간 과정의 저장을 통해 최선의 결과모델을 선택
  • 만들어진 모델을 외부 연구자와 공유하여 학습 재연성 향상

 

*checkpoints

  • 학습의 중간 결과를 저장하여 최선의 결과를 선택
  • earlystopping 기법 사용시 이전 학습의 결과물을 저장
  • loss와 metric 값을 지속적으로 확인 저장
  • 일반적으로 epoch, loss, metric을 함께 저장하여 확인
  • colab에서 지속적인 학습을 위해 필요

 

 

*Transfer learning

  • 다른 데이터셋으로 만든 모델을 현재 데이터에 적용
  • 일반적으로 대용량 데이터셋으로 만들어진 모델의 성능↑
  • 현재의 DL에서는 가장 일반적인 학습 기법
  • backbone architecture가 잘 학습된 모델에서 일부분만 변경하여 학습을 수행함
  • Freezing
    • pretrained model을 활용시 모델의 일부분을 frozen시킴

      Transfer learning

 

*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