연두색연필
LimePencil's Log
연두색연필
전체 방문자
오늘
어제

About Me

  • GitHub
  • Instagram
  • Gmail

인기 글

  • 분류 전체보기 (70)
    • Machine Learning (3)
      • MNIST (2)
    • PS & Algorithm (9)
    • Web (4)
      • HTML (1)
      • JavaScript (3)
    • Rust (2)
      • The Rust Programming Langua.. (2)
    • 논문 리뷰 (12)
      • Reinforcement Learning (10)
      • Computer Vision (2)
    • DevOps (17)
      • Docker (9)
      • Kubernetes (8)
    • Development (6)
      • SQL (6)
    • 잡다한 것들 (15)
      • 부스트캠프 AI Tech 4기 (13)

최근 댓글

Tag

  • docker
  • Kubernetes
  • K8s
  • 도커
  • 부스트캠프
  • Python
  • ML
  • 백준
  • 쿠버네티스
  • 파이썬
08-20 19:11
hELLO · Designed By 정상우.
연두색연필

LimePencil's Log

잡다한 것들/부스트캠프 AI Tech 4기

부스트캠프 2주차 학습 일지 - Pytorch Basics

2022. 9. 26. 09:41

사용한 기술 스택들:  

 

9/26 월

학습한 것들:

예전엔 딥러닝을 하려면 scratch부터 시작해야 했으나 현재는 PyTorch와 TensorFlow라는 main framework 두개만 남았음

 

PyTorch는 Computational Graph를 사용한다 (실행을 하면서 그래프를 생성한다)

- 자동미분, 다양한 함수, multi-GPU 지원

 

Tensor: 텐서를 표현하는 PyTorch 클래스

- numpy.ndarray와 같음

 

.ndim = 차원 수

.shape= 텐서의 크기

.from_numpy= ndarray를 Tensor로 변환

.tensor= list에서 Tensor로 변환

.ones_like = 1로 차있는 같은 크기의 Tensor 반환

.numpy = array 반환

.dtype = 타입 반환

.view = shape 변환 (형태만 바꿔주기 때문에 복사가 아님)

.reshape= shape 변환 (복사해서 변환)

.squeeze = 차원 개수 1인 차원 삭제

.unsqueezed = 차원 개수 1인 차원 추가

.mm = 행렬곱셈

.matmul = 행렬곱셈이지만 broadcasting 지원(자동으로 차원 늘려주기)

.nn.functional as F = 사용하면 다양한 수식 변환 가능 (softmax, one_hot, cartesian product etc

 

requires_grad=True로 해주고 backward 해주면 자동으로 AutoGrad

 

 

회고:

대회에 대한 의미있는 대화를 한거 같다. 이번주는 강의가 많이 없고 과제가 많지만 그래도 강의 많이 듣는것보단 훨씬 낫다고 생각한다


9/27 화

학습한 것들:

PyTorch에서 hook은 원하는 함수를 이미 있는 모델에 원하는 때에 실행 시킬 수 있게 한다.

 

Apply를 사용하면 제일 위에 있는 model에 적용한 함수를 밑에 있는 sub-model에 다 적용 가능하다.

 

Buffer을 사용하면 gradient 계산을 하지는 않지만 텐서를 save_state_dict 할때 저장이 가능하다

 

Module_list, module_dict같은 함수를 사용하면 다양한 모델들을 저장할 수 있다.

 

setattr 함수로 새로운 attribute를 설정해 줄 수 

 

optimizer.zero_grad()를 해줘야 그 전의 gradient 값이 영향을 주지 않는다

 

loss.backward를 해줘서 gradient를 구하고 optimizer.step()을 해줘야 그 값이 update가 된다

 

일일이 해줘야하는걸 PyTorch에서 자동으로 해준다

 

Dataset class에서 전처리와 tensor바꾸어주는것 그리고 transform해준다.

- 즉 데이터의 형태를 같게 만들어 준다

- 이것은 데이터가 필요할때만 실행이 되고 모든 데이터를 이렇게 만들어 주는 것은 아니

 

Dataloader로 small_batch를 나눠서 gpu에 넣어준다

-sampler로 어떤 방식으로 batch를 뽑아올건지 정할수 있다

 

 

회고:

대회에 나갈 모델을 학습 시켜봐야겠다. 과제가 한번 날라가버려서 맨탈이 터졌지만 그래도 많은걸 배웠다

 

 

 


9/28 수

학습한 것들:

학습된 모델을 불러오는게 요즘 트렌드

- 불러와서 fine-tuning

 

model.save 로 학습 결과를 저장할 수 있음

 

state_dict와 load_state_dict로 parameter을 저장하고 불러올 수 있다

 

checkpoint 지속적으로 저장해줘서 원하는 시점으로 돌아간다

 

transfer learning 으로 일부분만 변경해서 학습을 수행한다

 

pretrained 모델 사용시 일부분을 frozen 시켜서 활용 

 

모델을 평가할때는 tensorboard와 weight and biases를 사용하면 좋다

 

 

회고:

대회 모델을 학습 시키고 있다. 이번 과제들에서 학습을 할때 필요한 것들에 대해서 배웠다. 많이 유용할 거라 생각된다


9/29 목

학습한 것들:

Node= 한대의 컴퓨터

 

궁극의 서버는 Multi Node Multi GPU

 

Model parallel: 모델을 다중 GPU에 나눈다

- AlexNet

 

조심해서 처리를 하지 않게 되면 병목 현상이 생긴다

 

Data parallel: 데이터를 나눠 GPU에 할당후 결과의 평균을 취한다

- Minibatch의 동작 방식과 유사하지만 한번에 여러 GPU에서 수행을 한다

 

파이토치에서는 DataParallel과 DistributedDataParallel을 제공한다.

- DataParallel로 사용하면 불균형 문제가 발생할 수 있다, GIL문제

- DistributedDataParallel을 사용하여 각 CPU마다 process 생성하여 각각 gpu에 할당한다

 

요즘에는 hyperparameter tuning보다 데이터의 질이 중요하다

 

Ray: multi-node multi-processing 지원 모듈

- ML/DL 병렬 처리를 위해 개발된 모듈

- Hyperparameter search를 위한 다양한 모듈을 제공한다

- ASAHAScheduler을 잘 사용하면 성능을 높일 수 있다

 

OOM(Out of memory)의 가장 보편적인 해결 방법: kernel 다시 시작

 

nvidia-smi로 gpu상태를 확인하자

 

torch.cuda.empty_cache()을 사용해서 가용 메모리를 확보해보자 garbage collector와 같은 느낌

 

loop안에서 축적되는 tensor을 피하자

- 1d tensor는 list로 변환하여 사용하자

 

필요가 없어지면 del을 사용하자

 

batch size를 1으로 줄여서 실험해보자

 

inference에서는 torch.no_grad()사용

 

colab에서는 큰 사이즈는 실행하지 않는다.

 

float precision을 줄일 수도 있다

 

회고:

이쪽 분야의 세계는 참 신기하다고 생각한다. 배울건 많고 새로운 것들이 매일 쏟아져 나온다. 다양한 유용한 팁을 배워서 써먹을 수 있을것 같다

 


9/30 금

학습한 것들:

심화 과제 수행

 

회고:

오피스 아워에서 이 분야의 미래와 전망을 배울수 있는 좋은 시간이였다 생각한다.

 

'잡다한 것들 > 부스트캠프 AI Tech 4기' 카테고리의 다른 글

6주차 학습 일지 - CV 기초대회  (0) 2022.10.24
부스트캠프 5주차 학습 일지 - Computer Vision Basics  (0) 2022.10.18
부스트캠프 4주차 학습 일지 - Computer Vision Basics  (0) 2022.10.11
부스트캠프 3주차 학습 일지 - Deep Learning Basics  (0) 2022.10.03
부스트캠프 1주차 학습 일지 - Python & AI Math  (0) 2022.09.19
    '잡다한 것들/부스트캠프 AI Tech 4기' 카테고리의 다른 글
    • 부스트캠프 5주차 학습 일지 - Computer Vision Basics
    • 부스트캠프 4주차 학습 일지 - Computer Vision Basics
    • 부스트캠프 3주차 학습 일지 - Deep Learning Basics
    • 부스트캠프 1주차 학습 일지 - Python & AI Math
    연두색연필
    연두색연필
    ML, Programming, PS, 삶의 순간을 기록

    티스토리툴바