빅데이타 & 머신러닝/Pytorch 7

6. Pytorch - 대규모 분산학습에서 고려할 사항

대규모 분산 학습에서 고려할 사항조대협 (http://bcho.tistory.com) 그러면 실제로 분산 학습은 어떻게 이루어질까, 하나의 머신에서 여러 GPU를 사용하는 멀티 GPU의 경우에는 코드만 싱글 GPU 코드와 다르지 다른 설정은 다르지 않다. 그러나 멀티 머신 학습의 경우에는 각 머신에서 학습 코드를 실행해줘야 하고, 같은 데이터 소스로 부터 데이터를 각 머신에서 읽어와야 한다. 그렇다면 동시에 여러 머신에 학습 코드를 어떻게 실행할까?스케쥴러수동으로, 특정 서버에서 각각 학습 코드를 실행할 수 도 있지만, 보통 수십,수백개의 머신에서 하나의 학습만을 돌리는 일은 드물다. 중간 중간 실험을 위해서 작은 모델을 학습하기도 하고, 전체 머신들에서 하나의 거대 모델들을 돌리기도 한다.  만약 50..

5. 파이토치 - 분산 학습의 개념과 하드웨어

분산학습의 개념조대협 (http://bcho.tistory.com)분산 학습 개념분산학습이란, 모델이 커서 하나의 머신이나 장치(CPU,GPU) 에서 학습이 불가능할때, 모델을 여러개의 GPU나 또는 여러개의 머신으로 나눠서 학습을 하는 방법이다.분산 학습의 방법분산 학습 방법은 크게 모델 병렬화 (Tensor Parallelism), 데이터 병렬화 (Data Parallelism) 으로 분류 할 수 있다.   출처 https://uvadlc-notebooks.readthedocs.io/en/latest/tutorial_notebooks/scaling/JAX/tensor_parallel_simple.html 데이터 병렬화 : Distributed Data Parallelism (이하 DDP)라고 하는데,..

파이토치 분산 학습 도구 비교

1. 개요torch.distributed.launch와 torchrun은 둘 다 PyTorch에서 분산 학습을 실행하기 위한 도구이다.torch.distributed.launch는 이전부터 사용되어 온 유틸리티이며, torchrun은 더 최근에 등장한 도구로 사용 편의성을 개선했다.2. 주요 차이점 torch.distributed.launchtorchrun사용 편의성--local_rank 인자를 수동으로 스크립트에 전달해야 함--local_rank 자동 처리기능 범위기본적인 분산 학습 실행 기능 제공torch.distributed.launch 기능 + 탄력성(elasticity), 오류 처리 등 추가 기능 제공오류 처리worker 실패 시 자동 재시작 기능 없음worker 실패 시 자동 재시작 기능 제공..

파이토치 4 - 쿠버네티스에서 학습하기

파이토치 모델을 학습을 하는데 여러 사람이 동시에 작업을 하거나 또는 학습이 멀티 GPU, 멀티 노드를 사용할 경우에는 한정된 GPU 자원을 어떻게 배치할지에 대한 어려움이 생긴다. 또한 파이토치 작업이 학습도중에 중단되거나 했을때 자동으로 학습을 재시작하는 것과 같은 자동화된 관리가 필요한데, 이런 문제를 해결하기 위해서 가장 보편적으로 사용되는 접근 방법이 쿠버네티스나 Slurm등이 될 수 있다.  향후에 멀티 머신 기반의 학습이나 Fault Torelent 아키텍처를 기반으로한 분산 모델 학습 방법에도 설명하겠지만, 이 글에서는 간단하게 모델을 쿠버네티스에서 학습할 수 있는 방법에 대해서 알아본다.  아래 코드는 파이토치 라이트닝을 이용하여 Fashion Mnist 데이터를 학습하는 간단한 DNN ..

파이토치 3. 파이토치라이트닝

파이토치 라이트닝 파이토치 라이트닝은 파이토치를 한번 더 추상화하는 프레임웍으로, 파이토치 코딩의 복잡도를 낮춰주는 프레임이다. 텐서플로우의 복잡도를 케라스로 잡아주는 느낌이라고 할까? 한번더 추상화하는 만큼, 약간의 성능저하가 발생한다.  아래와 같은 간단한 선형 회귀 모델이 있다고 하자.import osimport torchfrom torch import nnimport torch.nn.functional as Ffrom torch.utils.data import DataLoaderimport lightning as Lfrom torch.utils.data import TensorDataset# 데이터x_train = torch.FloatTensor([[1], [2], [3]])y_train = t..

파이토치 2. 선형회귀 (Linear Regression)을 통한 코드 구조 이해

파이토치의 모델 코드 구조를 이해해보자.먼저 가장 간단한 선형 회귀 모델 코드를 살펴보자. 아래는 전체 코드 블럭이다. 아래 코드는 "모두를 위한 딥러닝 시즌 2 파이토치 편"을 참고하였다. https://deeplearningzerotoall.github.io/season2/lec_pytorch.htmlimport matplotlib.pyplot as pltimport numpy as npimport torchimport torch.nn as nnimport torch.nn.functional as Fimport torch.optim as optim# 데이터x_train = torch.FloatTensor([[1], [2], [3]])y_train = torch.FloatTensor([[1], [2],..

파이토치 1. 기본 자료형 텐서

파이토치는 기본 자료형으로 행렬을 표현하는 텐서라는 자료형을 사용한다.아래 코드는 간단하게 배열로 부터 텐서를 생성하고, 이를 곱하는 코드이다. 곱셈은 matmul 함수를 이용하거나 @ 를 이용할 수 있다. # Multiply Tensorsimport torcha = torch.tensor([[1,2],[3,4]])b = torch.tensor([[1],[1]])c = torch.matmul(a, b)print(c)print(a@b) GPU에 텐서 생성파이토치에서는 텐서를 생성할때 텐서가 저장되는 메모리를 지정할 수 있다. 일반적인 메모리나 또는 GPU가 있을 경우 GPU 메모리를 지정할 수 있다.아래 코드는 GPU가 있을 경우 텐서 a,b를 GPU에 저장하고 서로 곱한 결과를 출력하는 코드이다. # p..