본문 바로가기

반응형

전체 글

(68)
그래프 이론 - 플로이드워셜 알고리즘 나무위키를 기반으로 정리하였습니다. 플로이드 워셜을 그래프에서 가능한 모든 노드 쌍에 대한 최단 거리를 구하는 알고리즘입니다. data[a][b] = min(data[a][b], data[a][k]+data[k][b]) 가 핵심코드입니다. a-> b 로 바로 가는게 더 빠르냐 a->k->b 로 k를 거쳐서 가는게 더 빠르냐 더 빠른 놈으로 data[a][b]를 업데이트해라. 내가 헷갈렸던 부분은, D(2,3) = min(D(2,3),D(2,1)+D(1,3))이라고 하자. 이때 k는 1이다. 만약 D(2,1) 의 최소가 D(2,5)+D(5,1)이라면, 최적이 되는가? 였다. 이에 대한 답은 아래와 같다. 2->5->3이서 최솟값이 되는 과정은 (2->5->1)->3 순이 아니라 2-> ( 5->1->3) ..
[linux] 리눅스 구글 드라이브 다운로드 하기 (gdown) 원격으로 접속하는 서버에 외부 파일을 업로드하기 위해선, 본인의 컴퓨터에 해당 파일을 다운받은 후, 그 파일을 다시 그 서버로 업로드시켜줘야 했습니다. 그렇지만 google drive에 있는 파일을 다운받을 때에는 gdown을 사용하여 간편하게 다운받을 수 있습니다. 순서 1. pip install gdown # to upgrade pip install --upgrade gdown gdown이라는 패키지를 설치해줍니다. 순서 2. 다운받을 파일의 id를 복사해줍니다. 파일의 id를 얻기 위해 #2-1 파일을 우클릭한 후, 공유 버튼을 누릅니다. #2-2 링크 복사를 통해 해당 파일의 링크를 얻습니다. #2-3 링크 중에서 id의 위치부분을 복사해줍니다. 예시: https://drive.google.com..
[Pytorch] RuntimeError: Attempting to deserialize object on CUDA device 2 but torch.cuda.device_count() is 1. Please use torch.load with map_location to map your storages to an existing device. 파이토치를 통해 코드를 짜다보면 모델을 불러오기 위해 load하는 경우가 상당히 많습니다. 그런데 종종 아래와 같은 에러가 발생합니다. # 에러 메세지 RuntimeError: Attempting to deserialize object on CUDA device 2 but torch.cuda.device_count() is 1. Please use torch.load with map_location to map your storages to an existing device. # 에러가 발생한 코드 checkpoint = torch.load(args.pretrained) 이러한 에러가 발생하는 이유는 load를 할때, 불러오는 모델을 학습한 환경에서 2개 이상의 gpu가 사용됐기 때문에, 한 개의 gpu..
[Pytorch] 재생산성을 위한 랜덤설정 reproductibility, randomness control, seed Pytorch에서는 초기화와 속도향상을 위해서 다양한 random함수들이 사용됩니다. 하지만 딥러닝 모델 학습을 재생산하거나 동일한 조건내에서 실험을 해야 할 경우, 이런 randomness를 컨트롤해줘야 할 필요가 있습니다. # torch random 값 생성 torch.manual_seed(random_seed) # 현 gpu에서의 random 값 생성 \ torch.cuda.manual_seed(random_seed) # 2개 이상의 gpu를 사용할 때 torch.cuda.manual_seed_all(random_seed) # randomness가 들어간 함수 미사용 torch.backends.cudnn.deterministic = True # True일 시, 동일한 사이즈에 텐서들이 들어올때의 속..
[Pytorch] apex / amp 모델 학습 빠르게 시키는 법. github에서 pytorch 코드를 살펴보다 보면, apex, amp가 사용되는 모습을 자주 볼 수 있다. amp는 Automatic Mixed Precision의 약자로, 몇 operations들에서 float16 데이터타입을 사용해 학 속도를 향상시켜주는 방법을 제공해준다. 기존 pytorch는 데이터타입이 float32로 기본 설정이라는 것도 참고하면 좋을 것 같다. 또한 구글링을 하다보면 amp를 사용하는 방법이 apex.amp 와 torch.cuda.amp 두 방법이 나오는데, 아래 포스트를 보면 apex의 implementation들이 Pytorch에서 지원을 시작해서, apex는 이제 앞으로는 사용되지 않을 것이라고 한다. https://discuss.pytorch.org/t/torch-c..
[Pytorch] DDP-Distributed Data Parallel 구현 도입 ImageNet과 같이 큰 모델을 학습할 때엔 multi-gpu를 활용하여 학습속도를 향상시킬 수 있습니다. DataParallel과 DistributedDataParallel이 대표적인 방법입니다. DataParallel방법은 딱 한 줄만 수정해줘도 동작하기 때문에, 코딩하는데에는 오랜시간이 걸리진 않지만, DDP에 비해 gpu의 memory를 많이 잡아먹게되고, 학습속도도 비교적 느리기 때문에 전체 학습시간은 더 오래걸리게 된다는 큰 단점이 있습니다. 이번 포스트에서는 학습 속도 향상을 위한 DistributedDataParallel(DDP)을 사용하는 방법에 대해 포스트해보도록 하겠습니다. 이번 포스트의 구성은 # 도입 # 간단한 설명 # 상세한 설명 순으로 진행하였습니다. 데이터 셋은 CIF..
Anaconda와 git bash 연동하는 방법 visual studio에서 anaconda 연동이 command prompt와 밖에 안되서, 시각적, 기능적으로 편리한 git bash와 연동하는 방법을 찾았다. https://fmorenovr.medium.com/how-to-add-conda-to-git-bash-windows-21f5e5987f3d How to add Conda to Git Bash (Windows) For windows users, is not common to use the bash command in the command prompt. Also, in Git bash (the git console with some Linux… fmorenovr.medium.com 해당 글에 친절히 설명되어 있다.
[Pytorch 오류] Pytorch Dataparallel시 CUDA_LAUNCH_BLOCKING=1 현상. 다양한 이유가 있을 수 있겠지만, 나같은 경우 imagenet의 validation dataset이 올바르게 설정되어 있지 않아서였다. validation dataset을 다시 다운받은 후, 디렉토리를 설정해주니 정상 작동했다. ImageNet dataset 설치 방법에 대한 글을 작성한 후, 글을 첨부하도록 하겠다.

반응형