본문 바로가기

PAINTYCODE

(61)
[PYTORCH] DistributedDataParallel이란? - Nvidia APEX로 구현하기 Introduction 행렬(이하 Tensor)연산을 기반으로 하는 Deep Neural network는 CPU에서 연산을 할때보다 GPU를 통해서 그래픽 연산을 할때 더 높은 퍼포먼스를 보인다. Deeplearning이 점차 발달하면서 신경망을 더욱 깊고 크게 설계하는 것이 트렌드가 되면서 이제는 GPU 한장으로는 학습하기에 벅차다. (hpyer-scale...) 또한 Deeplearning 을 점목하는 task가 점점 늘어나고, 이미지보다 더 큰 동영상, 음원 등을 학습데이터로 사용하기 때문에 한개의 GPU로 학습시키기에는 성능/메모리의 제한이 있다. 그래서 이제는 하나의 GPU만을 사용해서 학습을 시키는 것이 아닌 여러개의 GPU를 사용하는 multi-GPU 학습이 필요하다. Pytorch에서는 D..
[PYTORCH] Pytorch Lightning이란? Introduction PytorchLightning은 Pytorch를 구조적으로 편하게 사용할 수 있도록 인터페이스 제공 목적의 라이브러이이다. 라이브러리 내부적으로 16bit train, DP (DataParallel), DDP (DistributedDataParallel) 등을 진짜 몇줄만 적어서 사용할 수 있도록 구현되어있다. 필자도 Pytorch를 계속 써오고 다양한 모델들을 implementation하고 buildup 해보면서 신경써야할 여러 부분들이 있었는데, Pytorch lightning 라이브러리를 딱 보고 좋다!라는 생각을 하였다. 그래서 한번 써보려고한다. 기존 코드들을 다 implement 시키는 것은 좀 귀찮겠지만 앞으로 제작하는 프로젝트는 Lightning을 적용하여 코드를 구..
[PYTORCH] 2개 이상의 Loss를 사용할때 주의할 점 model을 모델링할때 loss function을 2개 이상 사용하는 경우가 있다. 이때 아래와 같은 로그가 뜰 수 있다. RuntimeError: one of the variables needed for gradient computation has been modified by an inplace operation: [torch.cuda.FloatTensor [64, 128, 512]], which is output 0 of PermuteBackward, is at version 89; expected version 0 instead. Hint: the backtrace further above shows the operation that failed to compute its gradient. The..
[PYTORCH] torch.max 함수 설명 torch.max torch.max(input) -> Tensor torch.max(input, dim, keepdim=False, *, out=None) -> tuple (max, max_indices) torch.max 함수는 텐서에서 최대값을 구하는 함수이다. import torch import torch.nn as nn data = torch.randn((5, 5)) print(data) print(torch.max(data)) #### # tensor([[ 1.1328, -0.0392, -0.7076, 0.5610, 0.8010], # [-0.0898, -1.4467, -0.7285, -0.1195, -2.1070], # [ 0.4547, 1.7739, 0.1664, -1.0242, 0.0474..
[파이토치] torch.argmax 함수 torch.argmax torch.argmax(input) → LongTensor torch.argmax(input, dim, keepdim=False) → LongTensor 이 함수는 input tensor에 있는 모든 element들 중에서 가장 큰 값을 가지는 공간의 인덱스 번호를 반환하는 함수이다. a = torch.randn(4, 4) print(a) output = torch.argmax(a) print(output) #### output ##### ''' tensor([[-0.5014, -0.1785, 0.2534, 0.7167], [-0.7887, 1.0920, 0.5385, -1.1797], [-1.0129, 0.2337, 0.5757, 0.9139], [ 1.4672, -1.0605,..
[파이토치] torch.mm 함수 torch.mm torch.mm(input, mat2, *, out=None) → Tensor mm은 input과 mat2에 대해서 matrix multiplication을 수행하는 함수이다. 이 함수는 broadcast되지 않는 것이 특징이다. 만약 broadcasting된 것을 원한다면 torch.matul 함수를 사용하여아 한다. torch.mm( torch.tensor([[2, 2], [2, 2]]), torch.tensor([[2, 2], [2, 2]]) ) #### output #### ''' tensor([[8, 8], [8, 8]]) ''' 간단하게 torch를 import 하고 코드를 돌려보면 mm의 동작을 살펴볼 수 있다.
[fairseq] 설치 시 오류 'enum'오류 https://github.com/pytorch/fairseq GitHub - pytorch/fairseq: Facebook AI Research Sequence-to-Sequence Toolkit written in Python. Facebook AI Research Sequence-to-Sequence Toolkit written in Python. - GitHub - pytorch/fairseq: Facebook AI Research Sequence-to-Sequence Toolkit written in Python. github.com fairseq를 사용하려고 installation을 진행할때, 깃을 clone해서 fairseq를 설치할 것이다. git clone https://github.co..
[TorchAudio] Transformations 알아보기 torchaudio에서 transformations을 지원한다. 지금까지는 다 Librosa나 numpy 라이브러리를 사용해서 변환하였는데, torch에서도 제공해주는 것을 확인하였다. 또한 torchaudio는 leverages Pytorch's GPU Support이기 때문에 GPU를 사용하여 연산을 진행할 수 있다. (CPU에서 처리하는 것 보다 속도가 더 빠르다) ** torchaudio를 사용할때 꼭 soundfile 과 sox의 의존성을 잘 확인하자https://pytorch.org/audio/stable/backend.html#backend torchaudio에서 제공해주는 transformation들은 아래와 같다. Resample Spectrogram GriffinLim ComputeDe..