OOM(out of memory) OOM이 해결하기 어려운 이유 어디서 발생했는지 알기 어려움 Error backtracking이 이상한데로 감 메모리의 이전상황의 파악이 어려움 GPU Util 사용하기 nvidia-smi 처럼 GPU의 상태를 보여주는 모듈 colab은 환경에서 GPU 상태를 보여주기 편함 iter마다 메모리가 늘어나는지 확인가능 ! pip install GPUtil import GPUtil GPUtil.showUtilization() torch.cuda.empty_cache()써보기 사용되지 않는 GPU상 cache를 정리 가용 메모리를 확보 del 과는 구분이 필요 reset 대신 쓰기 좋은 함수 empty_cache를 사용했을때 강제적으로 garbage collector를 실행 학..
Hyper parameter 모델 스스로 학습하지 않고 학습을할때 사람이 지정해야하는 Parameter ex_ learning rate(NAS), optimizer, 모델의 크기 하이퍼파라미터에 의해 값이 크게 좌우됐지만 요즘은 그닥 마지막 0.01을 쥐어짜야할 때 도전 결과가 잘안나오면 모델을 변경 데이터를 변경 혹은 추가 혹은 점검 hyper parameter tuning -> 이 중 데이터가 가장 중요하다 왜냐하면 이미 좋은 모델이 뭔지 알고있다 하이퍼파라미터 튜닝은 마른 수건도 물이 떨어지는지 꽉 짜보자 하이퍼 파라미터 튜닝에 가장 기본적인 방법 grid search: 2배수 등 규칙적으로 하나씩 찾아본다 random search: 큰 스페이스에서 아무거나 랜덤으로 추출해서 사용해본다 => 예전에..
지금날의 딥러닝은 많은 데이터를 계산시기키 위한 GPU가 많이 필요하다. 개념정리 Single GPU vs Multi GPU 1개의 GPU vs 2개이상의 GPU GPU vs Node Node는 1대의 컴퓨터를 이야기한다. ex_ 1대의 Node안에있는 1대의 GPU를 사용한다. Single Node Single GPU Single Node Multi GPU 한대의 컴퓨터에 여러대의 GPU Multi Node Multi GPU ex_ 서버실 Model parallel 다중 GPU에 학습을 분산하는방법 모델 나누기 - AlexNet도 이 방법을 사용 - 모델의 병목현상이 발생할 수 있다. - 고난이도 과제임 모델 병렬화의 문제점 위의 그림은 병렬화를 하는 의미가 없다 아래 그림처럼 파이프라인을(배치코드를)..
초기단계에서는 대화식 개발과정이 유리하다 -> 학습과정과 디버깅 등 지속적인 확인이 가능하기 때문 하지만 배포 및 공유 단계에선 노트북으로 공유하면 재현등이 어렵다. 그래서 OOP + 모듈을 사용하여 프로젝트단위로 진행한다. github 템플릿을 사용해보자! 모듈구성 git clone https://github.com/victoresque/pytorch-template cd pytorch-template ## 해당 명령어로 같은 구조를가진 MyProject 폴더를 생성 python new_project.py MyProject cd MyProject python train.py -c config.json
많은 딥러닝 프레임워크가 있었지만 Facebook의 PyTorch와 Google의 Tensorflow가 리더로 자리잡았다. Pytorch와 Tensorflow의 가장 큰 차이점 Pytorch Dynamic Graph backward propagation을 쓸 때 autograd(자동미분)를 할 때 실행시점에서 그래프를 정의한다. computational_graph Define by Run 실행하면서 그래프를 생성한다. 즉시확인(디버깅)이 가능하다 -> pythoninc code Tensorflow Static Graph Define and Run 기법을 사용한다. 그래프를 먼저 정의하는 코드를 작성하고 실행시점에 데이터를 feed시킨다.
Latent Variable Models D.Kingma의 "VariationalInference and Deep Learning: A New Synthesis" 논문을 앞부분 조금 읽어보자 우리가 일반적으로 알고있는 Auto Encoder는 과연 generative model일까? -> 그렇지않다. 무엇때문에 Variational Auto Encoder가 Generative 모델이 될 수 있는지 살펴본다 VAE(Variational Auto - Encoder) Variational inference 목적은: Posterior distribution을 찾는거다. Posterior distribution은 observation이 주어졌을 때 내가 관심있어하는(찾고자하는) random variable의 확률..
과제하고 느낀점 Optimization 성능 비교를 하면서 Adam이 가장 빨리 minimum 값에 도달하는것을 확인할 수 있었다. 이미지또한 시퀀셜한 데이터로 생각할 수 있다는 사실을 알게되었다. 피어세션 정리 이번주 월,화에는 시간이 그냥 흘러간 기분이 들어서 다음주부터는 복습 차원에서 한개씩 전주에 했던 학습 리뷰와 당일에 배운 것들을 같이 정리해보는 시간을 갖기로했다. 학습 회고 GAN이라는 개념과 Transformer라는 개념이 조금 어려웠지만 설명을 잘 해주셔서 계속 되감기로 보며 조금은 이해가됐다. 이번주 주말에 마스터해서 꼭 익히도록 할 예정이다.
Generative Model 우리가 만약 강아지 사진이 있다면 강아지 사진의 분산 p(x)를 예측한다 Generation: (training set에 없는)강아지와 같은 이미지를 여러개를 생성할 수 있다 (sampling) Density Estimation: p(x) 어떤 이미지가 들어왔을 때 강아지같은지, 고양이같은지, 강아지가 아닌것같은지 구분해낸다 (anomaly detection - 이상행동감지) 이러한 모델을 explicit model이라한다. explicit model: 어떤 값이 주어졌을 때 확률값을 얻어낼 수 있는 모델 implicit model: 단순히 generation만 할 수 있는모델 Unsupervised representation learning: 귀가 있는지 등의 특성이있다...