본문 바로가기

pytorch 사용법

(3)
Pytorch로 병렬처리하기 / Multi GPU 사용하기(DataParallel) 딥러닝을 하게되면 GPU를 이용한 연산은 선택이 아닌 필수이다. 딥러닝은 기본적으로 매트릭스 연산 기반이기 때문에 GPU를 사용해야 우리가 감당할 수 있는 연산속도가 나온다. 하지만 딥러닝 모델의 사이즈가 크고 데이터의 양이 너무 많으면, GPU 한 장으로 연산이 힘든 경우가 생긴다. 연산이 너무 오래걸리거나 원하는 Batch_size로는 CUDA OUT OF MEMORY 에러가 떠버리는 현상이 발생하는 것이다. 만약 자신이 GPU 여러 장을 가지고 있다면, 여러 장의 GPU를 이용(병렬처리)해 이를 해결할 수 있다. Pytorch는 여러 장의 GPU를 사용할 수 있도록 병렬처리 기능들을 제공하는데, 이번 글에서는 이에 대해 소개해볼 것이다. 1. torch.nn.DataParallel 단순히 model..
pytorch 모델 재현 가능하도록 만들기 모델은 재현이 가능해야한다. 그래야 내 실험 결과가 거짓이 아니라는 것을 보여줄 수 있고 모델을 최고 성능으로 재사용할 수 있다. 아래의 코드를 통해 모델은 재현이 가능해진다. torch.manual_seed(random_seed) torch.cuda.manual_seed(random_seed) torch.cuda.manual_seed_all(random_seed) # if use multi-GPU torch.backends.cudnn.deterministic = True torch.backends.cudnn.benchmark = False np.random.seed(random_seed) random.seed(random_seed)
pytorch parameter 합치기, loss 합치기 파이토치 이용 시 가끔씩 헷갈리는 문법을 정리해보겠다. #1 파라미터 한번에 업데이트 하기 optimizer = torch.optim.Adam(encoder_decoder_class.parameters(), lr = 1e-4) 만약 우리가 위처럼 인코더 모델(class)과 디코더 모델(class)을 하나로 이은 class가 아닌 각각의 class로 생성해서 가지고 있고, 이 두 클래스의 인스턴스의 변수를 한 번에 업데이트 하기위해서는 아래처럼 하면 된다. parameters = list(encoder_class.parameters()) + list(decoder_class.parameters()) optimizer = torch.optim.Adam(parameters, lr = 1e-4) 이렇게 두 인스..