-
Sequence Parallelism: Long Sequence Training fromSystem Perspective논문리뷰 2022. 10. 10. 16:41
AI 모델이 거대화되면서, GPU parallel 학습에 대한 연구가 많이 진행되고 있다.
그중에서, sequence parallel 방법에 대한 논문을 리뷰하고자 한다.
1. Background
Transformer 기반 모델을 사용해본 사람은 모두 알것이다.
긴 문장, 문서가 있으면, max_vocab을 정해서 짜른 후 input으로 사용한다.
왜 일부를 잘라서 사용할까? 당연하게도 메모리 문제이다.
data batch, layer, parameter를 쪼개서 multi-GPU로 올려 연산하고 있는 상황에서 ( data parallel, pipe parallel, tensor parallel)
Input(sequence)도 쪼개서 학습시킬수 없을까?
2. Method (Ring self-Attention , RSA)
논문에서 제안하는 sequence parallel (RSA)은 그림과 같은 N개의 토큰으로 이루어진 sequence 를 쪼개서 각 GPU에 넣는다.
sequence parallel 은 Transformer 기반의 모델에서만 사용할 수 있는 방법이다.
Transformer 모델에서 우리에게 필요한건? Q,K,V 벡터이다.
1. sequence를 n개의 덩어리(chunk)로 쪼개보자.
각 GPU에는 (Q^1..Q^n), (K^1..K^n), (V^1..V^n) 씩의 벡터들이 들어있다.
여기서 Q^n벡터는 n번째 GPU에 있는 Q벡터의 일부를 의미한다.
2. n번째 GPU의 attention score를 구해보자.
Attention^n = (Q^n, K )
Q^n 벡터에 대한 attention score는 모든 GPU에 있는 K벡터와 내적해야한다.
Q^n벡터에 대해 K^1..K^n벡터를 내적한 결과가 Ring communication을 통해 전달된다.
3. n번째 GPU 의 output을 구해보자.
Output^n = (Attention^n, V )
2에서 구한 Attention 벡터에 대해서 모든 V벡터와의 내적이 필요하다.
2와 마찬가지로 V1..Vn의 백터와 각 GPU에서 내적을하고, 그 결과가 Ring communication을 통해 전달되어 concat된다.
'논문리뷰' 카테고리의 다른 글
InterVL -논문 리뷰 (0) 2024.04.11 Style Gan 리뷰 (0) 2021.02.13 Semi-supervised learning - Fix match (1) 2020.08.02 [논문리뷰]Unsupervised Out-of-Distribution Detection by Maximum Classifier Discrepancy (0) 2020.06.13