본문 바로가기

728x90

boostcamp AI tech

(73)
Optimization Momentum - 새 batch에 대한 weight를 조정할 때, 이전 배치에서 계산한 gradient의 관성을 유지한다. - 현재 위치에서의 gradient와 현재까지의 momentum을 가지고 구한다. - batch에 따라 gradient가 요동치는 상황에서 효과가 있을 수 있다. - local minimum convergence를 방해해서 local minimum를 벗어나는데 활용될 수 있다. Nesterov Accelerated Gradient - 현재까지의 momentum과 해당 momentum이 안내하는 곳으로 이동한 곳에서의 gradient를 가지고 구한다. - converging 속도가 빠르다. Adagrad - 많이,자주 변한 파라미터 w1에 대해서는 앞으로 적게 변화시키고, 적게,조금..
Boostcamp AI - week3 Deep learning 기초를 다루는 한 주였다. 놀라운 기록들을 갱신했던 모델들의 역사와 구조를 살펴보면서 새로운 아이디어의 출현이 어떤 것인지 관찰할 수 있었다. 이전 모델의 단점을 어떻게 개선해서 한 걸음씩 나아갔는지를 공부하면서 감탄을 금치 못했다. Image classification 문제 말고도 semantic segmentation, object detection, generative model이 어떻게 발전해 왔는지도 살펴봤다. task가 바뀜으로써 문제를 바라보는 관점이 달라지고 그 문제를 해결하기 위해 했던 고민과 노력을 엿볼 수 있었다. 현재에 와서 우리가 사용하는 도구들과 아이디어가 (AI 발전 과정에서) 언제 어떤 문제를 해결하기 위해 등장했던 것인지 깨닫는 과정은 굉장히 인상 ..
Multi gpu training, Hyper parameter Search, etc 1. Multi gpu training - Multi gpu training: - 모델의 sequence1은 gpu0에, sequence2는 gpu1에 분리해서 계산 하거나 (모델 나누기) - 데이터 절반은 gpu0에, 나머지 절반은 gpu1에 분리해서 계산 하고 결과를 평균내거나 (데이터 나누기) - DataParallel : 한명의 gpu가 나머지 gpu에게 데이터 분배, 취합 등의 역할을 수행 (다른 gpu보다 메모리 더 사용) - DistributedDataParallel : 이 방식으로 데이터를 나누고자 dataloader를 만들 때는 distributedSampler 정의, pin_memory=True등의 설정이 필요함. 예를들어 n개의 cpu가 n개의 gpu에게 각각 데이터를 주고 받고 한다..
Monitoring tools 1. Tensorboard from torch.utils.tensorboard import SummaryWriter import numpy as np writer = SummaryWriter(logs_base_dir) for n_iter in range(100): writer.add_scalar('Loss/train', np.random.random(), n_iter) writer.add_scalar('Loss/test', np.random.random(), n_iter) writer.add_scalar('Accuracy/train', np.random.random(), n_iter) writer.add_scalar('Accuracy/train', np.random.random(), n_iter) wri..
Model save, load & Transfer Learning 1. Save and load Model parameters for param_tensor in model.state_dict(): print(param_tensor, "\t", model.state_dict()[param_tensor].size()) torch.save(model.state_dict(), os.path.join(MODEL_PATH, "model.pt")) new_model = TheModelClass() new_model.load_state_dict(torch.load(os.path.join(MODEL_PATH, "model.pt")) - 모델의 parameter만 model.pt로 저장해두고 불러 올 수 있다. (모델 class는 가지고 있어야한다.) from torchsummary ..
PyTorch Project 1. Project Template https://github.com/victoresque/pytorch-template GitHub - victoresque/pytorch-template: PyTorch deep learning projects made easy. PyTorch deep learning projects made easy. Contribute to victoresque/pytorch-template development by creating an account on GitHub. github.com pytorch-template/ │ ├── train.py - main script to start training ├── test.py - evaluation of trained model ..
PyTorch Basics - pytorch의 핵심은 auto grad이다. 자동으로 미분을 해준다. w = torch.tensor(2.0, requires_grad=True) y = w**2 z = 10*y + 50 z.backward() print(w.grad) # dz/dw = 40 a = torch.tensor([2., 3.], requires_grad=True) b = torch.tensor([2., 3.], requires_grad=True) Q = 3*a**3 - b**2 external_gradient = torch.tensor([1,1]) Q.backward(gradient = external_gradient) # 변수가 a,b두개 이므로 external_gradient추가 print(a.grad) # [36, 8..
Boostcamp AI - week2 이번주는 pytorch framwork에 대해 학습했다. 인턴 기간 동안 몸으로 구르면서 터득했던 내용들이였다. 깔끔하게 한번 정리하는 기분으로 공부했다. 프로젝트 구조, pytorch, 공식문서를 읽는 습관, 라이브러리 사용 경험 등 인턴쉽을 통해 터득했던 내용이 많은 것 같다. boostcamp 강의를 들으면서 '네부캠 이후였다면 인턴쉽 동안 더 잘 할 수 있었을까?' 하는 생각이 종종 든다. 아무튼 참 좋은 강의와 과제, 사람들이다. 내가 몰랐던 많은 pytorch 기능들을 연습해보았다. 아주 신기하다. 강력한 도구들로 활용할 수 있을 것 같다. 시간이 지나서 이 도구들을 잊어버리지는 않을까 걱정이 든다. 키워드만 기록해두고 공식문서를 찾아갈 수 있도록 해야겠다. Master class 요즘은 Mi..

728x90