본문 바로가기

DeepLearning

[torch] DDP 모드에서 훈련된 모델 불러오기. def load_DDP_model(path,model_frame): ''' path : /path/to/DDP-trained-model.pt model_frame : model structure ''' state_dict=torch.load(path) from collections import OrderedDict new_state_dict = OrderedDict() for k, v in state_dict.items(): name = k[7:] # remove 'module.' of DataParallel/DistributedDataParallel new_state_dict[name] = v model_frame.load_state_dict(new_state_dict) return model_fram.. 더보기
[torch] multi-gpu (DDP)로 사용하기 튜토리얼 아래의 코드는 간단하게 autoencoder를 만드는 과정을 적은 것이다. mp.spawn해봤자 global에 있는 model에는 영향을 안준다. 따라서, 학습 중간에 훈련된 trained-model을 torch.save로저장해야한다. 다른 것으로는 과거의 loss변동을 이용하는 옵티마이저들 (ex. ADAM)같은 것들도 저장해서 불러와야한다고 한다. SGD는 해당사항이 없다. 이 부분에 대해서는 테스트가 필요할 것 같다. 다만, 나의 경우는 데이터가 너무 커서 컴퓨터 메모리에 모두 못 올리는 상황인 것이라 문제가 없지 않을까 한다. 현재 내 상황은 총 데이터는 5TB이고 메모리에 모두 못 올리니 50gb 정도 불러온 후에 이를 배치로 나눠서 훈련하고 있는 상황이다. 그리고 각 gpu에서 돌던 모델들이 .. 더보기
[torch] cross-validation을 위한 기능 만들기 (multi-gpu) 정리가 안된 단계이지만 DistributedDataParallel 기능을 잘 활용하면 cross-validation을 수행할 수 있을 것으로 보인다. 구체적으로 각 gpu만큼 k-fold cv가 가능하다. 다만, 각 gpu에서 연산된 loss값 같은 것은 pickle로 내보내게 한 후에 하나로 합쳐야할 것으로 보인다. 테스트가 필요한 사항은 아래와 같다. DDP를 통해 각 gpu에서 진행되던 모델이 학습되는 것이 연동된다면 정확한 k-fold는 아니게 된다. import os import sys import tempfile import torch import torch.distributed as dist import torch.nn as nn import torch.optim as optim import.. 더보기
[PRML] 2.2.1 The Dirichlet distribution (디리클레 분포) 1. 개요 앞서봤던 수식 2.34의 다항분포의 파라미터 {u_k}에대한 사전확률 중 하나인 디리클레 분포 (Dirichlet distribution)를 살펴보겠다. 2. 내용 다항분포의 형태를 탐구하면 결합 사전 분포 (conjugate piror)는 수식 2.37로 주어지는 것을 볼 수 있다. 여기서 0 더보기
[PRML] 2.2. Multinomial variables (다변량 변수) 1. 개요 이진 변수 (binary variables)는 2가지의 가능한 값들 중 하나를 정량화하는 것에 쓰일 수 있다. 하지만, 우리는 자주 K개의 상호적으로 겹치지 않는 상태들에 대해 마주할 수 있다. 다양한 방식으로 이를 서술할 수 있지만 편의상 1-of-K 개념 (1-of-K scheme)으로 살펴보려한다. 2. 내용 이 개념에서는 변수는 K차원의 벡터 x에 의해 표현되며 벡터 x의 원소 x_k는 1이고 나머지 원소들은 0이다. 예를들어 K=6개의 상태로 표현하면서 x_3=1이라면 벡터 x는 수식 2.25와 같이 표현된다. 여기서 벡터 x의 원소들의 합은 1을 만족한다. 만일 우리가 u_k라는 파라미터로 x_k=1의 확률로 나타내면 벡터 x의 분포는 수식 2.26과 같이 나타난다. 여기서 u_k의.. 더보기
[PRML] 2.1.1 The beta distribution (베타 분포) 1. 개요 수식 2.8에서 봤듯이 베르누이 분포와 나아가 이항 분포에서 u에대한 최대 가능도 설정은 데이터에서 x=1이라는 값을 갖는 관측값의 비율이다. 이것은 이미 말했듯이 과적합 문제를 작은 데이터셋에서 발생시킬 수 있다. 이 문제에 대해 베이지안 해결법을 적용하기 위해서는 우리는 u에대한 사전확률 p(u)를 도입해야 한다. 여기서 우리는 간단하고 유용한 분석적인 특징을 갖는 사전확률의 한 가지 형태를 고려할 것이다. 2. 내용 가능도 함수는 [u**x][(1-u)**(1-x)]의 형태의 원소들의 곱셈으로 이루어진다는 것을 알고 있다. 만일 우리가 사전확률이 u와 (1-u)의 승수 (powers of u and 1-u)에 비례하는 사전확률을 선택한다면, 사전확률과 가능도 함수에 비례하는 사후 확률 분.. 더보기
[PRML] 2.1. Binary variables (이진 변수들) 1. 개요 먼저, 단일 이진 무작위 변수 (single binary random variable) x ∈ {0,1}에 대해 다루면서 시작하겠습니다. 예를들어 x는 동전 던지기로 설명할 수 있습니다. x=1은 앞 면 (heads) x=0은 뒷면 (tails)로 기술하는 것이지요. 2. 내용 동전이 손상되어서 앞 면이 떨어질 확률이 뒷 면이 떨어질 확률과 다르다고 상상해봅시다. 그렇다면 x=1의 확률은 파라미터 u에 대해 수식 2.1과 같이 표기됩니다. 여기서 0 더보기
[PRML] 2. Probability distributions (확률 분포들) 1. 개요 챕터 1에서 우리는 확률 이론들이 패턴인식 문제들에서 어떻게 중요한 역할을 하는지 다뤘습니다. 이제 몇 가지 특이한 확률 분포들에 대해 탐험하고 그것들의 특징을 다룰 것입니다. 이러한 분포들은 보다 복잡한 모델을 다루기 위한 기초로서 이 책 전체를 걸쳐 많이 사용하게 될 것입니다. 2. 내용 이 챕터에서 다뤄지는 분포의 역할은 유한한 원소로 이루어진 집합 x들에대한 무작위 변수 x의 확률분포 p(x)를 모델링하는 것입니다. 이것이 밀도 예측 (density estimation)이라는 문제라고 합니다. 챕터에서 이에 대한 논의를 위해 샘플들은 i.i.d (independent and identically distributed)라고 가정하겠습니다. 여기서 주의할점은, 밀도 예측 문제는 근본적으로 .. 더보기