[Pytroch] Multi GPU Training
·
ML & DL/PyTorch
Data Parallel (DP) 사용법 ... model = resnet18().to(device) model = torch.nn.DataParallel(model) ... 장점 위 예시처럼 매우 간단하게 사용이 가능하다 단점 메모리 사용량 증가 : 각 GPU에서 모델의 복사본을 만들어 메모리를 사용하기 떄문에 GPU의 수가 증가할 수록 메모리 사용량이 증가 통신 병목 현상 : 각 GPU에서 연산을 수행하고 연산 결과를 하나의 GPU로 모은 후에 모델을 업데이트 하기 때문에 GPU간 데이터를 복사하고 통신하는 데 시간이 소요된다. 또한, 하나의 GPU로 연산 결과를 모으기 때문에 GPU 수가 증가할 수록 하나의 GPU의 메모리 사용량이 증가해 효율적인 사용이 불가능하다. 참고 train 할 때 DP를 ..
[PyTorch] torchvision & transform
·
ML & DL/PyTorch
torchvision PyTorch에서 제공하는 이미지 및 비디오 데이터를 다루기 위한 라이브러리 입니다. CIFAR, COCO, MNIST, ImageNet 과 같은 일반적인 데이터셋을 로드할 수 있습니다. VGG, ResNet, Inception 등과 같은 이미지 분류에 사용되는 미리 학습된(pre-trained) 모델을 제공합니다. Transfrom, 이미지를 전처리하는데 사용되는 다양한 함수를 제공합니다. Utils, 다양한 작업을 수행하기 위한 유틸리티 함수들을 제공합니다. transform 이미지의 크기를 조정하거나, 랜덤으로 좌우 반저을 적용하거나, 색상을 조정하건, 이미지를 정규화 하는 등 다양한 이미지 전처리 작업을 할 수 있는 함수입니다. 원본 이미지 transforms.Resize 이..
[PyTorch] Dataset & DataLoader
·
ML & DL/PyTorch
Dataset 사용자가 정의한 데이터셋을 다루기 위한 추상 클래스입니다. 이 클래스를 통해 데이터셋을 다루는데 있어 일관성을 유지하면서 효율적으로 처리할 수 있습니다. Dataset은 일반적으로 다음과 같은 세 가지 요소를 포함합니다. __init__ : 데이터셋을 초기화하고 읽어들입니다. __getitem__ : 데이터셋에서 특정 인덱스의 샘플을 읽어들입니다. __len__ : 데이터셋의 샘플 개수를 반환합니다. 또한, 데이터셋을 사용하는 이유는 모델에 학습데이터를 제공하는 것 뿐만 아니라 데이터 전철, 증강, 로딩 등 다양한 작업을 수행합니다. from torch.utils.data import Dataset class CustomDataset(Dataset): def __init__(self,): ..
[PyTorch] nn.Module
·
ML & DL/PyTorch
https://pytorch.org/docs/stable/generated/torch.nn.Module.html Module — PyTorch 1.13 documentation Shortcuts pytorch.org named_children() & named_modules() 이 메서드들은 각각 모듈에 포함된 자식 모듈들과 모든 자식 모듈을 포함한 모듈의 계층 구조를 탐색할 수 있도록 합니다. named_children() 각 자식 모듈의 이름과 해당 모듈 객체를 순회 가능한 iterator로 반환합니다. 더보기 즉, nn.Module 에서 정의한 모든 자식 모듈을 순회하면서 이름과 해당 모듈을 함께 사용할 수 있습니다. import torch import torch.nn as nn class MyMo..
[PyTorch] torch.nn
·
ML & DL/PyTorch
torch.nn PyTorch에서 신경망 모델을 구현하는 데 필요한 여러 가지 클래스와 함수를 제공해주는 모듈입니다. nn.Linear 선형 변환(Linear Transformation)을 수행하는 클래스입니다. nn.Linear를 사용하여 tensor의 크기 or 모양을 반환합니다. # 입력 텐서의 차원은 5이고, 출력 텐서의 차원은 3인 nn.Linear 모듈을 생성합니다. linear_layer = nn.Linear(5, 3) # 입력 텐서를 생성합니다. input_tensor = torch.randn((2, 5)) # nn.Linear 모듈을 통해 입력 텐서를 출력 텐서로 변환합니다. output_tensor = linear_layer(input_tensor) print(output_tensor...
[PyTorch] Optimization, 최적화
·
ML & DL/PyTorch
다음 글은 파이토치 코리아의 기본 익히기 글을 참고하여 작성하였습니다. 모델을 학습하는 과정은 각 반복 단계에서 입력에 대한 출력을 추측하고, 추측과 정답 사이의 오류(loss)를 계산하고, 매개변수에 대한 오류의 도함수를 수집한 뒤(이전 글), 다양한 기법을 사용하여 이 파라미터들을 최적화(Optimize) 하는 과정의 반복입니다. 기본 코드 모델 매개변수 최적화하기 파이토치(PyTorch) 기본 익히기|| 빠른 시작|| 텐서(Tensor)|| Dataset과 Dataloader|| 변형(Transform)|| 신경망 모델 구성하기|| Autograd|| 최적화(Optimization)|| 모델 저장하고 불러오기 이제 모델과 데이터가 준비 tutorials.pytorch.kr 하이퍼파라미터(Hyperp..
[PyTorch] Autograd, 자동 미분
·
ML & DL/PyTorch
다음 글은 파이토치 코리아의 기본 익히기 글을 참고하여 작성하였습니다. Autograd 신경망을 학습할 때 가장 자주 사용되는 알고리즘은 역전파(backpropagtaion)입니다. 역전파에서 매개변수(모델 가중치)는 주어진 매개변수에 대한 손실함수의 변화도(gradient)에 따라 조정됩니다.) 이 변화도를 측정하기 위해선 미분과정이 필요하며 PyTorch에서는 torch.autograd 를 사용하여 자동 계산을 지원합니다. 다음 그래프에서 최적화 해야하는 매개변수는 w와 b 입니다. import torch x = torch.ones(5) # input tensor y = torch.zeros(3) # expected output w = torch.randn(5, 3, requires_grad=True..
[PyTorch] DATASET과 DATALOADER
·
ML & DL/PyTorch
다음 글은 파이토치 코리아의 기본 익히기 글을 참고하여 작성하였습니다. Dataset과 Dataloader PyTorch는 가지고 있는 데이터의 다양한 입력 형태를 정의하는 클래스로 Dataset을 제공하고, 이 Dataset을 사용하여 모델이 학습하기 직전 순회가능한 객체(iterable)로 (Tensor로 변환 및 병렬처리를 위한 Batch 처리)감쌉니다. Dataset torch.utils.data.Dataset 데이터의 입력 형태를 정의합니다. Image, Text, Audio, Video 등에 따른 다양한 입력을 정의해줍니다. DataLoader torch.utils.data.DataLoader 데이터셋의 특징을 가져오고 하나의 샘플에 정답(label)을 지정하는 일을 반복합니다. 학습 직전 데..
욱근욱
'ML & DL/PyTorch' 카테고리의 글 목록