본문 바로가기

728x90
반응형

Programming

모든 랜덤값을 고정하기 위한 함수 (python) 경진 대회든 실제 업무에서의 연구든 재현성을 가지는 것은 중요하다. 특히 gpu를 사용하는 경우 재현성을 확보하기 어려워지는 경우도 있다. 재현성을 확보하기 위해 다음과 같은 함수를 사용할 수도 있다. def seed_everything(seed=1234): random.seed(seed) os.environ['PYTHONHASHSEED'] = str(seed) np.random.seed(seed) torch.manual_seed(seed) torch.cuda.manual_seed(seed) torch.backends.cudnn.deterministic = True 더보기
[monitoring tools] wandb (weights & biases) 개념 머신러닝 실험을 원활히 지원하기 위한 사용도구 협업, code versioning, 실험 결과 기록 등을 제공 사용 가입 https://wandb.ai/home Setting → API keys 복사 새 프로젝트 생성 (Create new project) 코드 import wandb wandb.init(project='my-test-project', entity='sherryjeon') # 프로젝트명 입력 import torch import torchvision from torchvision import datasets, models, transforms import torch.nn as nn import torch.optim as optim import os import numpy as np im.. 더보기
[monitoring tools] Tensorboard from torch.utils.tensorboard import SummaryWriter import numpy as np img_batch = np.zeros((16, 3, 100, 100)) for i in range(16): img_batch[i, 0] = np.arange(0, 10000).reshape(100, 100)/10000/16*i img_batch[i, 1] = (1 - np.arange(0, 10000).reshape(100, 100)/10000)/16*i writer = SummaryWriter(logs_base_dir) writer.add_images('my_image_batch', img_batch, 0) writer.flush() writer.close() 기본 개념 scala.. 더보기
[pytorch] 전이 학습, Transfer Learning Transfer learning 다른 데이터셋으로 학습시킨 모델(pre-training learning)을 현재 데이터에 적용하는 것 일반적으로 대용량 데이터셋으로 만들어진 모델의 성능이 좋기 때문에 활용하는 것 현재 딥러닝에서 가장 일반적으로 사용하는 학습 기법 backbone architecture가 잘 학습된 모델에서 일부분만 변경하여 학습을 수행함 이미지 : Torchvision에서 다양한 기본 모델을 제공하고 있음 자연어 : HuggingFace가 사실상 표준으로 사용되고 있음 Freezing pre-trained model 활용 시 모델 일부분을 학습하지 않도록 frozen 시킴 최근에는 stepping frozen 기법이 사용되기도 함 (중간중간 frozen 시켜 그 부분을 학습시키지 않고 .. 더보기
[pytorch] 학습 결과 및 모델 저장하기 model.save() 학습 결과 저장 함수 모델 형태(architecture)와 파라미터를 저장할 수 있음 모델 학습 중간 과정을 저장함으로써 최선의 결과를 가지는 모델을 선택할 수 있음 만들어진 모델을 외부 연구자와 공유해 학습 재연성을 향상할 수 있음 state_dict : 모델의 파라미터를 의미 # 모델의 파라미터를 저장 torch.save(model.state_dict(), os.path.join(MODEL_PATH, "model.pt")) # 동일한 형태의 모델을 만들어 파라미터만 로드하여 사용 new_model = TheModelClass() new_model.load_state_dict(torch.load(os.path.join(MODEL_PATH, "model.pt"))) # 모델 arc.. 더보기
[pytorch] Dataset & Dataloader Dataset 클래스 하나의 데이터를 어떻게 가져올 것인가? 데이터 입력 형태를 정의하는 클래스 데이터를 입력하는 방식을 표준화 이미지, 텍스트, 오디오 등 데이터 포맷에 따라 다른 입력을 정의해야 한다. import torch from torch.utils.data import Dataset, DataLoader class CustomDataset(Dataset): def __init__(self, text, labels): # 초기 데이터 생성 방법 지정 self.labels = labels self.data = text def __len__(self): # 데이터의 전체 길이 return len(self.labels) def __getitem__(self, idx): # index값을 주었을 때 반.. 더보기
[Ray] 3-2 Ray Libraries: Ray Train (Key Concept) Ray Train의 주요 콘셉트는 다음과 같음 1. Trainers는 분산 학습을 수행 2. Configuration 객체는 configure 학습에 사용됨 3. Checkpoints는 학습 결과를 반환함 4. Predictors는 추론, 배치 예측등에 사용됨 Trainers trainers는 분산된 학습 수행에 대해 응답함 output : Result (학습 결과로 나온 metric과 마지막에 저장된 Checkpoint 포함) 또한 확장된 데이터 수집과 전처리를 위해 데이터셋과 전처리기로 구성할 수도 있음 아래 표는 내장 trainers Deep Learning Trainers Tree-Based Trainers Other Trainers TorchTrainer TensorflowTrainer Horo.. 더보기
[Ray] 3-1. Ray Libraries : Ray Data (Key Concept) Datasets 데이터셋은 ray object references(레이 객체 참조) 블록으로 구성되어 있음 이 블록은 arrow 테이블이나 파이썬 리스트로 구성되어 있고 텐서, 타뷸러 데이터도 지원함 Tabular Dataset : arrow 블록으로 구성된 데이터셋 Simple Dataset : 파이썬 블록으로 구성된 데이터셋 Tensor Dataset : 하나 또는 그 이상의 tensor type 컬럼을 가진 Tabular Dataset 위의 그림과 같이 데이터셋은 Ray object reference로 구성되어 있기 때문에 ray tasks, actors, library들 간에 자유롭게 전달할 수 있음 → Ray Dataset의 특징! Reading Data 원격 저장소에서 데이터를 읽을때 ray .. 더보기

728x90
반응형