[부스트캠프 AI Tech 5기] Week 2 정리 및 회고

araseo·2023년 3월 17일
0
post-thumbnail

Week2 강의 부분 요약

Intro duction to Pytorch

  • PyTorch
    • Define by Run(Dynamic Computational Graph, DCG) : 실행을 하면서 그래프를 생성하는 방식
    • 디버깅이 다른 framework들 보다 쉽다는 장점
    • 자동 미분(backward 함수 사용) 및 다양한 형태의 DL과 관련된 함수들을 지원
  • Tensorflow
    • Define and Run : 그래프를 먼저 정의하고 실행 시점에 데이터를 feed하는 방식
    • production 및 scalability의 장점을 가짐

Tensor & Parameter & Buffer

TensorParameterBuffer
모델 저장시 값 저장
gradient 계산
값 업데이트

Pytorch datasets & dataloaders

  • Dataset 클래스
    • 데이터 입력 형태를 정의하는 클래스
from torch.utils.data import Dataset

class CustomDataset(Dataset):
    def __init__(self,):
    # 데이터의 위치나 파일명과 같은 초기화 작업을 위해 존재하는 함수
    # 이를 통해 모든 데이터를 메모리에 로드하지 않고 효율적으로 사용할 수 있음
        pass

    def __len__(self):
    # Dataset의 최대 요소 수를 반환하는 함수
        pass

    def __getitem__(self, idx):
    # 데이터셋의 idx번째 데이터를 반환하는데 사용
    # 전처리 및 데이터 증강하는 부분이 모두 여기에서 진행됨
        pass
  • Dataloader 클래스
    • Data의 Batch를 생성해줌
# 모델 학습을 위해서 데이터를 미니 배치(Mini batch)단위로 제공해주는 역할
DataLoader(dataset, batch_size=1, shuffle=False, sampler=None,
           batch_sampler=None, num_workers=0, collate_fn=None,
           pin_memory=False, drop_last=False, timeout=0,
           worker_init_fn=None)

모델 불러오기

  • model.save()
    • 학습의 결과를 저장하기 위한 함수
  • checkpoints
    • model.save()를 이용하여 학습의 중간중간 결과를 저장하는 것을 의미
    • earlystopping에 이용
    • colab 환경에서 학습시에 필요
  • Transfer learning
    • 다른 데이터셋으로 만든 모델을 현재 데이터에 적용
    • 일반적으로 대용량 데이터셋으로 만들어진 모델일수록 성능이 좋음
  • Freezing
    • pretrained model을 이용하여 Transfer learning을 할 때 모델의 일부분을 frozen시키는 것을 의미
    • layer들을 단계적으로 frozen 시켜서 학습시키는 방법도 존재

Monitering tools for Pytorch

  • Tensorboard
    • 학습 그래프 및 결과 등을 시각화해주는 도구
    • Tensorflow 뿐만 아니라 PyTorch도 연결 가능
  • Weight & bias
    • Tensorboard처럼 학습 그래프 및 결과 등을 시각화해줌
    • 협업, code versioning 등을 제공

Multi-GPU 학습

  • DataParallel
    • 단순히 데이터를 분배한 후 한 곳(코디네이터)으로 다시 모아서 평균을 취함
    • GPU를 불균형하게 사용하게 됨
  • DistributedDataParallel
    • 각 CPU 마다 process를 생성하여 개별 GPU에 할당하는 방식
    • 하나의 GPU로 모아주지 않고 개별적으로 연산의 평균을 냄
    • 각각의 CPU가 코디네이터 역할을 대신함

Hyperparameter Tuning

  • 모델의 성능을 높이는 3가지 방법 (중요도 순서)
    1. 데이터 변경
    2. 모델 변경
    3. Hyperparameter tuning
  • 가장 기본적인 방법 : grid search, random search 등

PyTorch Troubleshooting

  • OOM (Out Of Memory)
    • 배치 사이즈 줄여보기
    • GPUUtil 모듈을 이용하여 메모리의 상태를 확인해보기
!pip install GPUtil

import GPUtil
GPUtil.showUtilization()
  • torch.cuda.empty_cache()를 이용함으로써 사용되지 않은 GPU상 cache를 정리해줌으로써 가용 메모리를 확보(del 과는 다른 개념)
  • torch.no_grad()를 이용함으로써 inference 코드에서 이용함으로써 backward pass로 인해 쌓이는 메모리로부터 자유롭도록함

마스터 클래스 - 최성철 교수님(부경대학교 시스템경영공학부)

  • 앞으로 많은 ML/DL 엔지니어가 Data Feedback Loop 역량이 필요
  • 대용량 데이터를 다뤄본 경험이 중요할 것
  • MLOPs 엔지니어와 함께 AI 기반 시스템 설계 인력의 필요성이 증대
  • 집 값은 떨어진다...

한 주 요약

Week 2에서는 Week 1보다 업로드되어 있는 강의가 적어서 '좀 널널하게 할 수 있겠군..!'라는 안일한 생각을 했다가.. 방대한 과제 양에 치였습니다...ㅎ-ㅎ
다행히 발등에 불 떨어진 심정으로 풀어서 필수 과제 2개 모두 시간 내에 제출하였지만 (수고했다 나 자신.. 셀프 토닥..) 잠을 적게 자서 피로가 많이 쌓인 것 같습니다 ㅠ_ㅠ
그래도 이번 주차 과제를 풀어나가면서 pytorch의 숲부터 가지까지 보는 시간을 가질 수 있었기에 논문 구현 역량을 기르는데 정말 도움이 많이 된 것 같아서 뿌듯합니다!!
week 3도 화이팅하겠습니다👊👊🔥🔥

profile
AI를 공부하고 있는 학생입니다:)

0개의 댓글