본문 바로가기
인공지능 개발하기/기술 & 논문 리뷰

분산 학습 1. Data Parallelism, Model Parallelism

by 선의공 2024. 11. 21.
반응형

 

 

ML서빙이나 효율적인 학습 시스템 구축을 어떻게 할지 공부하고 있습니다.

이번 포스팅에서는 분산 학습 방법에는 어떤게 있는지 알아볼게요.

 


0. Background

 Transformer가 나오고 BERT 모델 이후로 모델의 거대화가 급속히 진행되었습니다.

최근에 나오는 LLM들을 보면 Paramerter 수가 많아질 수록 모델의 성능이 좋아지고 있죠.

또한, 더욱 더 많은 데이터로 학습하며 모델을 성능을 높이는 방식을 적용하고 있습니다.

 

이런 방식으로 거대한 모델을 학습시키는 것이 본격화 되며

하나의 컴퓨팅 시스템 자원에서의 학습이 불가능해지는 문제가 발생합니다.

 

이런 이유로 여러 자원에 분산해서 모델 학습을 진행하는 "분산 학습"이 필요해졌습니다.

 


 

1. Data Parallelism System

데이터를 다수의 컴퓨터 자원으로 분산해서 학습하는 시스템입니다.

학습 데이터가 많은 상황에서의 학습 속도를 높이기 위해 나온 분산 학습 방법입니다.

각 모델이 데이터를 분산해서 학습하고 얻은 가중치를 Master에서 취합합니다.

이 과정을 Synchronization이라고 합니다.

 

 

 

1-1. Synchronization

Synchronization를 더 설명하자면

학습 데이터를 나눠서 학습했기 때문에 Weight가 업데이트 된 결과가 다를 것이고

Master에서 업데이트 결과를 모아서 평균을 내서 다시 나눠주는 과정입니다. 

All-Reduce라고 부르는  평균을 내서 다시 나눠주는 과정의 작업 속도는 

GPU간의 전송 속도에 비례합니다.

 

1-2. GPU간의 Interconnect

Synchonization은 GPU간의 네트워킹 속도가 중요하기 때문에

NVIDIA의 NVLink 등의 기술이 중요해졌다고 합니다.

Chip간의 통신에 사용되는 PCle에 비해 수십배 속도가 빠르다고 합니다.

 

해당 Data Pellelism 분산 방식을 통해서

시스템 처리량(Throughput)을 높이고 학습 시간을 단축할 수 있습니다.


2. Model parallelism

 

Parameter개수를 늘리고 학습 데이터를 늘리며 거대한 모델을 학습시키는 것이 본격화 되며

하나의 컴퓨팅 시스템에서의 학습이 불가능해지고 있다고 말했는데요,

이런 문제를 해결하고자 Model parallelism 방식이 고안되었습니다.

여러 GPU에 모델 paramter를 나눠서 연산하는 방식입니다.

 

 

2-1. Pipeline Parallelism

 

위의 이미지에서 파란색으로 감싼 부분이 Pipeline Parallelism 입니다.

Layer 혹은 Layer 여러 개로 묶은 단위인 Stage로 GPU에 나눠서 학습을 진행합니다.

병렬로 수행되지만, 파이프라인 단계 간 의존성 때문에 완전한 동시 처리가 어려운 경우도 있습니다.

 

2-2 Tensor parallelism

 

위의 이미지에서 초록색으로 감싼 부분입니다.

Weight matrix를 여러 GPU로 나누어 개별 연산을 한 후 결과를 합치는(concatenate) 방식으로 진행됩니다.

Weight matrix를 Row기준으로 나눠서 각 GPU에서 Input과 곱해 결과를 낸 후

Concatenate를 하면 원래의 결과가 나오게 됩니다.

레이어 내에서도 계산 병렬화가 가능하므로 Data parallelism과 마찬가지로

Throughput이 증가하는 장점이 있습니다.

 

2-3 다양한 방식 

 

효율을 올리기 위해 다양한 파이프라인 방식이 고려되고 있습니다.

 

방식1

 

파란색은 Forward Pass, 초록색은 Backward Pass입니다.

Device들은 Forward pass를 진행하고 끝나면 Backward pass를 역순으로 진행합니다.

그림에서 보면 Device4부터 순차적으로 Gradient를 계산하고 이전 Device로 전달합니다.

이런 방식은 Device마다 대기하는 시간이 발생해서 효율성이 낮습니다.

 

 

방식2

 

위의 그림과 같이 Device가 대기하는 시간을 줄이고자 여러 Stage를 할당해서 작업량을 세분화하고

Forward Pass와 Backward Pass를 번갈아 진행하며

효율성을 높이는 방식들이 제시되고 있습니다.

 

 

 

2-4 Model parallelism의 단점

 

모델 학습은 한번의 레이어를 거친 weight 갱신 시에

Forward propagation과 Backward propagation 2번의 작업을 거치게 됩니다.

Model parallelism은 이런 GPU가 생성한 중간 결과물을 2번씩

매번 Synchronization을 해야하니 네트워크 적으로 부담이 클 수 밖에 없습니다.

 

 


결론 

 

Nvidia나 Microsoft와 같은 선도 기업들이 분산 학습에 대해 활발히 연구를 진행하고 있습니다.

앞으로 증가하는 엄청난 크기의 모델 학습에

위에 단점들을 보완할

어떤 새로운 분산 방법을 적용하는지 지속해서 찾아봐야할 듯 합니다.

 

이미 많은 방법들이 고안되었겠지만 공부하는 입장으로서

 단편적으로

Model parallelism의 단점인 통신 부하의 문제를 해결하기 위해서

데이터를 압축해서 전달하는 방식의

gRPC 같은 통신 방식을 사용하는 것을 적용하는 것이 어떨까 

생각해보았습니다.

 

 


Inference

 

[Paper] Narayanan, D et al., 2021, Efficient Large-Scale Language Model Training on GPU Clusters Using Megatron-LM()

 

https://lifeisenjoyable.tistory.com/21

 

딥러닝 모델의 분산학습이란? (Data parallelism과 Model parallelism)

지난 글(자연어처리 모델 학습을 위한 하드웨어 구성은? - NVIDIA Grace)에서 NLP 모델의 학습시 큰 모델 크기와 대규모 학습 데이터 때문에 여러 GPU에 나누어 연산하는 분산학습이 이뤄진다고 간단

lifeisenjoyable.tistory.com

 

https://m.blog.naver.com/freepsw/221807767095

 

[분산 학습]Data parallelism vs Model parallelism

딥러닝 모델의 발전에 따라 모델의 규모(Layer 가 깊어지고, 계산할 뉴런이 많아짐)커지고, 이를 학습하기...

blog.naver.com

반응형