전체 글(327)
-
8. multi-GPU
모델을 나누거나 데이터를 나눠서 병렬처리. - 한번도 해본적은 없는 것 같다.. 일부 layer는 GPU:0에서, 일부 layer는 GPU:1로 보내는 방식인데........ 쉽지 않아보인다. 데이터를 나눠서 일부는 GPU:0을 사용하고, 일부는 GPU:1을 사용해서 병렬적으로 수행 - DataParallel, DistributedDataParallel 사용. - DataParallel : GPU 사용 불균형 문제 발생, Batch size 감소(병목 현상 발생) 등 문제점이 존재하긴함. - DistributedDataParallel : 각 CPU 별 process 생성. -> 개별 GPU 할당
2023.11.17 -
7. pytorch monitoring tools
1. tensorboard 2. weight & bias : 유로 버전도 있는 툴. import os logs_base_dir = 'logs' os.makedirs(logs_base_dir, exist_ok=True) from torch.utils.tensorboard import SummaryWriter import numpy as np writer = SummaryWriter(logs_base_dir) for n_iter in range(100): writer.add_scalar('Loss/train', np.random.random(), n_iter) # writer가 현재 logs_base_dir의 경로에 위치중이므로 그 이하 Loss폴더 내의 train 폴더 경로에 기입하도록 path 지정. w..
2023.11.17 -
6. 모델 저장, 불러오기
저장 : torch.save(model_name.state_dict(), path) - checkpoints : earlystopping 사용 시 중간중간 최선의 결과를 저장하는 것. - MLops 사용하는게 어떻나.. 생각해봄. 불러오기 : model = torch.load(path) - transfer learning 수행. - backbone architecture가 잘 학습된 모델에서 일부분만 변경하여 학습을 수행하는 것 - 주로 대용량 데이터로 학습된 모델을 불러오기 때문에 성능이 괜찮다. 요즘은 transfer learning에서 stacking frozen 학습 방식도 사용한다. - frozen or train : layer.requires_grad = False 지정.
2023.11.17 -
5. pytorch dataset
DataLoader 클래스를 사용하여 pytorch model의 input으로 제공하게 된다. - tensor로 변환 + batch dataset 생성이 주된 업무. - generator 형식이므로 for 문을 통해서 하나씩 받아오면 된다. next(), iter() 함수와 함께 사용! - 여러가지 parameter가 있는데 document를 한번 찾아보자.
2023.11.16 -
4. AutoGrad & Optimizer
딥러닝 모델 구축 시 정의해야하는 4가지 1. input 2. forward 3. output 4. backward ~~~ criterion = torch.nn.MSELoss() optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate) optimzer.zero_grad() # 이전 가중치 초기화 output = model(input) loss = criterion(outputs, labels) loss.backward() # backpropagation 진행. 모든 gradient 구하기 optimizer.step() # optimizer를 사용하여 gradient기반으로 weight update. ~~~
2023.11.16 -
3. Pytorch 프로젝트 구조
colab 등 docker에 ssh로 접근할 수 있는 방법 설명. 1. config.json : arguments(=parameters) 정보 저장 - 이후 프로젝트에서 수정사항이 있을 때 하드코딩 말고 간단하게 config.json 파일만 수정하여 다른 결과값을 도출해볼 수 있다. - 흡사 모듈화를 시키는 것과 비슷함. 2. data_loader 폴더 3. model 폴더 4. trainer 폴더 5. utils 폴더 등으로 어느정도 프로젝트의 구조를 정형화(=템플릿) 방식을 통일하는 것이 팀 프로젝트를 진행하기 용이하다.
2023.11.13