본문 바로가기

[Day11] Data visualization 1-2. 시각화의 요소 데이터 시각화를 위해서는 당연히 데이터가 필요하다 시각화를 진행할 데이터를 보는 관점 데이터셋 관점 Global 전체 데이터의 대해서 개별 데이터의 관점 Local Dataset 종류 정형 데이터 : Tabular 테이블형태이다. csv, tsv 파일 한 행(row)가 데이터 1개, 한 열(column)은 feature 통계적 특성(분포, 평균), feature 사이 관계(수치형 간의 관계, 수치형과 범주형 간의 관계), 데이터간 비교 등을 시각화 할 수 있다. 시계열 데이터 : Time-Series 시간 흐름에 따른 데이터 정형데이터 뿐만 아니라 비디오 같은 비정형 데이터도 시계열로 존재할 수 있다. 추세(Trend), 계절성(Seasonality), 주기성(Cycle)등을 분석할 수 있다. 지리 데이..
[Day10] Pytorch 10. Troubleshooting OOM : Out Of Memory iteration을 돌면서 발생 왜,어디서 발생했는지 알기 어려워서 대처가 어려움 #1 CUDNN_STATUS_NOT_INIT #GPU를 제대로 설치하지 않았을 때 #2 device-side-assert #OOM의 일종 1. 간단한 방법 Batch size를 줄이고 CPU를 비우고(커널 재실행) 다시 실행해보기 2. GPUUtil GPU Util 로 현재 내 GPU의 상태를 확인한다 iteration 마다 메모리가 늘어나는지 확인할 수 있다 !pip install GPUtil import GPUtil GPUtil.showUtilization() 3. torch.cuda.empty_cache() GPU에서 사용하지 않는 캐시 cache 정리 del은 주소 관계만 끊기 때..
[Day10] Pytorch 9. Hyperparameter Tuning 하이퍼 파라미터(Hyper Parameter)는 학습시 사람이 지정해주는 값들이다. learning rate(감쇠율), 모델의 크기, optimizer 이 대표적인 예시이다. 성능을 높히기 위해서 1. 모델을 바꾼다 2. 데이터를 바꾸거나 다듬는다 3. 하이퍼파라미터를 조절한다 와 같은 세 가지 방법이 있다. 2번이 대부분의 상황에서 가장 많은 영향을 미친다. Search Layout Grid Layout search 일정한 범위 내의 값을 모두 시도해보고 가장 나은 성능을 발휘하는 파라미터를 찾는 방법 Random Layout search 값을 random하게 돌려서 그 중 가장 잘 나오는 하이퍼파라이퍼를 찾는다 그래서 random layout 으로 어느정도 잘 나오는 틀이 잡히면 그 범위안에서 gri..
[Day10] Pytorch 8. Multi-GPU 학습 데이터가 많아져서 GPU가 많이 필요하게 되었다. GPU single : 1개의 GPU multi : 2개 이상의 GPU GPU node(=system) : 1대의 컴퓨터 TensorRT와 같은 GPU 사용을 돕는 도구도 있다 멀티 GPU를 사용하는 두 가지 방법이 있다 Model Parallel : 모델 병렬화 성능을 올리는 하나의 분야로 자리잡고 있다 밑의 사진처럼 되도록 파이프라인을 짜야 한다 Data Parallel : 데이터 병렬화 2개로 나눈다면 각각 batch로 반으로 데이터를 나눈 후 나중에 각 GPU에서의 loss를 미분,평균을 구해서 전체 미분값을 구한다. minibatch를 병렬적으로 돌리는 것과 유사 4번에서 다시 한 GPU에 output을 모으고 다시 분배하는데, 그 역할을 하는 ..
[Day8] Pytorch 7. Monitoring tools for PyTorch 학습과정을 tracking할 수 있는 방법들 Tensorboard weight & biases 이 두 가지의 사용법을 알아보자!! Tensorboard TensorFlow의 프로젝트로 만들어진 시각화 도구 computational graph, metric, 학습결과의 시각화를 지원한다. scalar : metric, loss, precision 등 상수들을 시간(epoch)에 따라서 표시해준다. 모델의 computational graph weight 등의 값을 histogram으로 표현 image나 text 를 예측 값과 실제 값을 바로 비교 mesh : 3d 형태의 데이터 표현 Weight & Biases MLOps 도구 중 하나 머신러닝 실험을 지원하기 위한 도구 협업, code versioning,..
[Day8] Pytorch 6. 모델 불러오기 : model.save(), load, checkpoint, freeze, transfer learning 최근 finetuning을 많이 하기 때문에 다른 사람이 만든 모델을 불러오고 사용하는 방법을 알아보자 학습 결과에 대한 모델과 파라미터 저장 학습의 결과를 저장해주는 함수이다. 모델의 architecture 와 parameter를 저장한다. 또한 중간과정을 저장해서 나중에 최선의 결과인 모델을 선택할 수 있다 model.state_dict() : 모델의 파라미터 표시 torch.save(model.state_dict()) : 모델의 파라미터 저장 model.pt 라는 pd파일로 저장 load_state_dict() : 파라미터만 load torch.save() : 모델의 architecture와 파라미터가 함께 저장 torch.load() : 모델의 architecture와 파라미터가 함께 load f..
[Day7] Pytorch 5. Pytorch Dataset : dataset, transforms, DataLoader 대용량 데이터 처리가 중요하다 Dataset 클래스 데이터 입력 형태를 정의해서 표준화 시킨다 데이터를 어떻게 불러올 것인지, 길이는 얼마인지를 정의한다. 어떻게 반환해 줄 것인지를 __getitem__()에서 map-style로 결정해준다 import torch from torch.utils.data import Dataset class CustomDataset(Dataset): # 초기 데이터 생성 방법을 지정 # 데이터의 directory 지정을 하기도 함 def __init__(self,text,labels): self.label=labels self.data=text # 데이터의 전체 길이 def __len__(self): return len(self.labels) # 반환되는 데이터의 형태 #..
[Day7] Pytorch 4. AutoGrad & Optimizer : Module, Parameter torch로 layer 구성하기 torch.nn.Module : 딥러닝을 구성하는 Layer의 base class input output forward y^값을 구하는 과정 cost 구하기 backward weight를 autograd(미분) optimize를 해서 gradient를 update nn.Parameter weight같은 것들 nn.Module 내에 attribute가 될 때 required_grad=True로 자동 지정된다. required_grad=True의 뜻은 backward 때 미분의 대상이라는 의미이다. Tensor의 상속객체