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
| Tensor | Parameter | Buffer |
---|
모델 저장시 값 저장 | ❌ | ✅ | ✅ |
gradient 계산 | ❌ | ✅ | ❌ |
값 업데이트 | ❌ | ✅ | ❌ |
Pytorch datasets & dataloaders
from torch.utils.data import Dataset
class CustomDataset(Dataset):
def __init__(self,):
pass
def __len__(self):
pass
def __getitem__(self, idx):
pass
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 시켜서 학습시키는 방법도 존재
- Tensorboard
- 학습 그래프 및 결과 등을 시각화해주는 도구
- Tensorflow 뿐만 아니라 PyTorch도 연결 가능
- Weight & bias
- Tensorboard처럼 학습 그래프 및 결과 등을 시각화해줌
- 협업, code versioning 등을 제공
Multi-GPU 학습
- DataParallel
- 단순히 데이터를 분배한 후 한 곳(코디네이터)으로 다시 모아서 평균을 취함
- GPU를 불균형하게 사용하게 됨
- DistributedDataParallel
- 각 CPU 마다 process를 생성하여 개별 GPU에 할당하는 방식
- 하나의 GPU로 모아주지 않고 개별적으로 연산의 평균을 냄
- 각각의 CPU가 코디네이터 역할을 대신함
Hyperparameter Tuning
- 모델의 성능을 높이는 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도 화이팅하겠습니다👊👊🔥🔥