본문 바로가기

PYTHON/PYTORCH

(15)
[PYTORCH] DataLoader worker is killed by signal: killed 오류 그 아무도 돌려놓은 서버에 kill하라는 명령을 내리지 않았지만 밤에 돌려놓고 다음날 오전에 확인하면 이렇게 죽어있는 경우가 있다. 오류 내용은 아래 그림과 같다. 필자는 서버컴퓨터에 docker container를 띄워서 사용하고 있다. 구글링을 요리조리 해봤는데 --ipc=host를 추가하면 해결이 된다라는 말도 있었는데 필자는 이미 항상 써왔던 것이어서 패스. 그리고 shm size가 작아서 그럴수도 있다라는 말도 있었는데 이미 133G로 정말 빵빵하게 늘려져 있어서 패스. 그냥 데이터의 크기가 커서 안돌아간다는 건... 아니지 않을까 싶다... 어쨋든 상황상으로 생각해볼때 작은 데이터셋으로 테스트를 할때에는 문제가 없었는데 큰 데이터셋으로 학습을 돌릴때 저러는 것으로 보아 데이터의 크기가 너무 커..
[PYTORCH] Truncated File Read Error error message /usr/local/lib/python3.6/dist-packages/PIL/TiffImagePlugin.py:819: UserWarning: Truncated File Read warnings.warn(str(msg)) PIL (pillow)라이브러리에서 A라는 이미지를 로드하면서 발생한 오류이다. 이유는 A라는 이미지가 손상된 상태이기 때문이다. 즉 코드의 문제는 아니고 손상된 이미지이기 때문에 발생하는 warning이다. 궁금증 해결 끝.
[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의 동작을 살펴볼 수 있다.