Megatron-LM: 모델 병렬 처리를 이용한 수십억 파라미터 언어 모델 훈련

Megatron-LM은 메모리 제약으로 인해 훈련이 어려운 대규모 Transformer 모델을 위한 효율적인 layer 내부 모델 병렬 처리(intra-layer model parallelism) 기법을 제시합니다. 이 접근법은 새로운 컴파일러나 라이브러리 변경 없이 PyTorch에 몇 가지 통신 연산만을 추가하여 구현할 수 있으며, 수십억 개의 파라미터를 가진 GPT-2 및 BERT와 유사한 모델을 512개의 GPU를 사용하여 성공적으로 훈련시켰습니다. 특히, 이 논문은 모델 크기가 커질 때 BERT와 같은 모델에서 layer normalization의 배치가 성능에 매우 중요함을 보여주었고, 이를 통해 WikiText103, LAMBADA, RACE 데이터셋에서 최고 수준(SOTA)의 성능을 달성했습니다. 논문 제목: Megatron-LM: Training Multi-Billion Parameter Language Models Using Model Parallelism

Shoeybi, Mohammad, et al. "Megatron-lm: Training multi-billion parameter language models using model parallelism." arXiv preprint arXiv:1909.08053 (2019).

Megatron-LM: Training Multi-Billion Parameter Language Models Using Model Parallelism

Mohammad Shoeybi 12{ }^{12} Mostofa Patwary 12{ }^{12} Raul Puri 12{ }^{12} Patrick LeGresley 2{ }^{2} Jared Casper 2{ }^{2}<br>Bryan Catanzaro 2{ }^{2}

Abstract

최근 언어 모델링 연구는 대규모 Transformer 모델 학습이 자연어 처리(NLP) 애플리케이션의 state of the art(SOTA)를 발전시킨다는 것을 보여준다. 그러나 매우 큰 모델은 메모리 제약으로 인해 학습하기가 상당히 어려울 수 있다. 본 연구에서는 매우 큰 Transformer 모델을 학습하기 위한 기술을 제시하고, 수십억 개의 파라미터를 가진 Transformer 모델 학습을 가능하게 하는 간단하고 효율적인 intra-layer model parallel 접근 방식을 구현한다.

우리의 접근 방식은 새로운 컴파일러나 라이브러리 변경을 요구하지 않으며, pipeline model parallelism과 직교적(orthogonal)이고 상호 보완적이다. 또한 네이티브 PyTorch에서 몇 가지 통신 연산만 삽입하여 완전히 구현할 수 있다. 우리는 이 접근 방식을 통해 512개의 GPU를 사용하여 최대 83억 개의 파라미터를 가진 Transformer 기반 모델을 수렴시켰다.

우리는 39 TeraFLOPs를 유지하는 강력한 단일 GPU baseline(최대 FLOPs의 30%)과 비교했을 때, 전체 애플리케이션에서 15.1 PetaFLOPs를 유지하며 76%의 스케일링 효율성을 달성했다.

대규모 언어 모델이 SOTA를 더욱 발전시킬 수 있음을 보여주기 위해, 우리는 GPT-2와 유사한 83억 개의 파라미터를 가진 Transformer 언어 모델BERT와 유사한 39억 개의 파라미터를 가진 모델을 학습시켰다. 우리는 BERT와 유사한 모델에서 layer normalization의 위치에 대한 세심한 주의가 모델 크기가 커짐에 따라 성능 향상을 달성하는 데 중요하다는 것을 보여준다.

GPT-2 모델을 사용하여 **WikiText103 데이터셋에서 SOTA 결과(SOTA perplexity 15.8 대비 10.8)**를, **LAMBADA 데이터셋에서 SOTA 결과(SOTA accuracy 63.2% 대비 66.5%)**를 달성했다. 우리의 BERT 모델은 **RACE 데이터셋에서 SOTA 결과(SOTA accuracy 89.4% 대비 90.9%)**를 달성했다.

1. Introduction

Natural Language Processing (NLP)는 사용 가능한 compute 및 데이터셋 크기 증가에 힘입어 빠르게 발전하고 있다. 풍부한 compute와 데이터는 **비지도 사전학습(unsupervised pretraining)**을 통해 점점 더 큰 language model을 학습시키는 것을 가능하게 한다 (Devlin et al., 2018; Radford et al., 2019). 경험적 증거에 따르면, 더 큰 language model은 article completion, question answering, natural language inference와 같은 NLP task에 훨씬 더 유용하다 (Lan et al., 2019; Raffel et al., 2019). 최근 연구에서 보여주듯이, 이러한 사전학습된 language model을 다운스트림 자연어 task에 fine-tuning함으로써 state-of-the-art 결과를 달성할 수 있다 (Devlin et al., 2018; Peters et al., 2018; Howard & Ruder, 2018; Radford et al., 2018; 2017; Ramachandran et al., 2016; Liu et al., 2019b; Dai et al., 2019; Yang et al., 2019; Liu et al., 2019a; Lan et al., 2019).

이러한 모델들이 커지면서, 현대 프로세서의 메모리 한계를 초과하게 되고, activation checkpointing (Chen et al., 2016)과 같은 추가적인 메모리 관리 기술이 필요해진다. ADAM과 같이 널리 사용되는 최적화 알고리즘은 momentum 및 기타 optimizer state를 저장하기 위해 파라미터당 추가 메모리를 요구하며, 이는 효과적으로 학습될 수 있는 모델의 크기를 줄인다. **모델 병렬화(model parallelism)**에 대한 여러 접근 방식은 모델을 분할하여 가중치와 관련 optimizer state가 프로세서에 동시에 상주할 필요가 없도록 함으로써 이러한 한계를 극복한다. 예를 들어, GPipe (Huang et al., 2018) 및 Mesh-Tensorflow (Shazeer et al., 2018)는 다양한 종류의 model parallelism을 위한 프레임워크를 제공한다. 그러나 이들은 모델을 다시 작성해야 하며, 아직 개발 중인 커스텀 컴파일러 및 프레임워크에 의존한다.

본 연구에서는 intra-layer model-parallelism을 사용하여 간단하고 효율적인 model parallel 접근 방식을 구현한다. 우리는 Transformer 기반 language model의 내재된 구조를 활용하여, 커스텀 C++ 코드나 컴파일러 없이 PyTorch에서 효율적으로 학습되는 간단한 model-parallel 구현을 만든다. 이 접근 방식은 GPipe (Huang et al., 2018)와 같은 접근 방식에서 주장하는 **pipeline 기반 model parallelism과 직교(orthogonal)**한다.

우리의 접근 방식의 확장성을 입증하기 위해,

Figure 1. GPU 수에 따른 Model (파란색) 및 Model+Data (녹색) parallel FLOPS. Model parallel (파란색): GPU당 약 10억 개의 파라미터(예: 2개 GPU의 경우 20억, 4개 GPU의 경우 40억)로 최대 8-way model parallel weak scaling을 보여준다. Model+data parallel (녹색): model parallel과 유사한 구성에 64-way data parallel이 결합된 형태이다.

단일 NVIDIA V100 32GB GPU에서 12억 개의 파라미터를 가진 모델을 학습시켜 39 TeraFLOPs를 유지하는 baseline을 설정한다. 이는 DGX-2H 서버에 구성된 단일 GPU의 이론적 최고 FLOPS의 30%에 해당하므로, 강력한 baseline이다. 8-way model parallelism을 사용하여 512개 GPU에서 모델을 83억 개의 파라미터로 확장했을 때, 전체 애플리케이션에서 초당 최대 15.1 PetaFLOPs를 유지한다. 이는 단일 GPU 사례와 비교하여 76%의 scaling efficiency이다. Figure 1은 더 자세한 scaling 결과를 보여준다.

모델 크기 확장이 정확도에 미치는 영향을 분석하기 위해, left-to-right GPT-2 (Radford et al., 2019) language model과 BERT (Devlin et al., 2018) bidirectional Transformer를 모두 학습시키고 여러 다운스트림 task에서 평가한다. 우리는 기존 BERT 아키텍처가 크기가 증가함에 따라 모델 성능 저하를 초래함을 보여준다. 우리는 Transformer layer의 layer normalization 및 residual connection을 재배열함으로써 이 문제를 극복하고, 이러한 변경을 통해 모델 크기가 증가함에 따라 개발 세트의 다운스트림 task 결과가 단조적으로(monotonically) 향상됨을 보여준다. 또한, 우리 모델이 WikiText103에서 test set state of the art (SOTA) 결과를 달성하고, LAMBADA에서 cloze-style prediction 정확도, 그리고 RACE 데이터셋에서 reading comprehension SOTA 결과를 달성함을 보여준다.

요약하면, 우리의 기여는 다음과 같다:

  • 기존 PyTorch Transformer 구현에 몇 가지 목표 지향적인 수정만을 가하여 간단하고 효율적인 model parallel 접근 방식을 구현했다.
  • 우리의 model 및 data parallel 기술에 대한 심층적인 경험적 분석을 수행하고, 512개 GPU를 사용하여 최대 76%의 scaling efficiency를 입증했다.
  • BERT와 유사한 모델에서 layer normalization의 위치에 대한 신중한 고려가 모델 크기가 커짐에 따라 정확도 향상을 달성하는 데 중요함을 보여주었다.
  • 모델 크기 확장이 GPT-2 (83억 파라미터까지 연구) 및 BERT (39억 파라미터까지 연구) 모델 모두에서 정확도 향상을 가져옴을 입증했다.
  • 우리 모델이 test set에서 state of the art 결과를 달성함을 보여주었다: WikiText103에서 perplexity (10.8 ppl), LAMBADA에서 정확도 (66.5%), RACE에서 정확도 (90.9%).
  • 우리의 코드와 학습 및 평가 파이프라인을 https://github.com/NVIDIA/Megatron-LM에 오픈 소스로 공개했다.

2. Background and Challenges

2.1. Neural Language Model Pretraining

사전학습된 language model은 NLP 연구자들의 필수적인 도구가 되었다. 대규모 코퍼스 사전학습을 활용하여 언어의 견고한 신경망 표현을 학습하는 것은 지난 10년간 활발히 연구되어 온 분야이다.

신경망 언어 표현을 사전학습하고 전이하는 초기 연구들은 사전학습된 word embedding table이 scratch부터 학습된 word embedding table에 비해 downstream task 결과에서 더 나은 성능을 보임을 입증했다 (Mikolov et al., 2013; Pennington et al., 2014; Turian et al., 2010). 이후 연구들은 단어의 contextual representation을 포착하는 신경망 모델을 학습하고 전이함으로써 이 분야의 발전을 이끌었다 (Melamud et al., 2016; McCann et al., 2017; Peters et al., 2018; Radford et al., 2017; 2019).

최근의 병렬 연구들 (Ramachandran et al., 2016; Howard & Ruder, 2018; Radford et al., 2018; Devlin et al., 2018; Liu et al., 2019b; Dai et al., 2019; Yang et al., 2019; Liu et al., 2019a; Lan et al., 2019)은 이러한 아이디어를 더욱 발전시켜, 단순히 contextual word representation을 추출하기 위해 language model을 전이하는 것을 넘어, downstream task에 대해 language model을 end-to-end 방식으로 fine-tuning하는 데까지 이르렀다. 이러한 연구들을 통해 state of the art는 단지 word embedding table을 전이하는 것에서 수십억 개의 파라미터를 가진 전체 language model을 전이하는 수준으로 발전했다.

이러한 방법론의 발전은 대규모에서 효율적으로 작동하고 증가하는 연산 요구 사항을 충족할 수 있는 하드웨어, 시스템 기술 및 프레임워크의 필요성을 야기했다. 우리의 연구는 이러한 추세에서 또 한 걸음 나아가기 위해 필요한 도구를 제공하는 것을 목표로 한다.

2.2. Transformer Language Models and Multi-Head Attention

현재 NLP 연구는 Transformer 모델 (Vaswani et al., 2017)이 보여주는 우수한 정확도와 연산 효율성 덕분에 이를 활용하는 방향으로 나아가고 있다.

Figure 2. Transformer 아키텍처. 보라색 블록은 fully connected layer에 해당한다. 각 파란색 블록은 N번 반복되는 단일 Transformer layer를 나타낸다.

원래의 Transformer는 Encoder와 Decoder 두 부분을 사용하여 입력 시퀀스를 다른 출력 시퀀스로 변환하는 기계 번역 아키텍처로 설계되었다. 그러나 BERT (Devlin et al., 2018) 및 GPT-2 (Radford et al., 2019)와 같이 Transformer를 활용한 최신 언어 모델링 연구에서는 필요에 따라 Encoder 또는 Decoder만을 사용한다. 본 연구에서는 Decoder 아키텍처인 GPT-2와 Encoder 아키텍처인 BERT를 모두 탐구한다.

Figure 2는 우리가 사용한 모델의 개략적인 다이어그램을 보여준다. 모델 아키텍처에 대한 자세한 설명은 이전 연구 (Vaswani et al., 2017; Devlin et al., 2018; Radford et al., 2019)를 참조하기 바란다. 주목할 만한 점은 GPT-2와 BERT 모두 GeLU (Hendrycks & Gimpel, 2016) 비선형 함수와 **multi-head attention 및 feed forward layer의 입력에 대한 layer normalization (Ba et al., 2016)**을 사용하는 반면, 원래의 Transformer (Vaswani et al., 2017)는 ReLU 비선형 함수를 사용하고 출력에 layer normalization을 적용한다는 것이다.

2.3. Data and Model Parallelism in Deep Learning

심층 신경망 학습을 다수의 하드웨어 가속기로 확장하는 데에는 두 가지 주요 패러다임이 있다:

  • 데이터 병렬화(data parallelism) (Valiant, 1990): 학습 미니배치(minibatch)를 여러 워커(worker)에 분할하는 방식.
  • 모델 병렬화(model parallelism): 모델의 메모리 사용량과 연산을 여러 워커에 분산하는 방식.

사용 가능한 워커 수에 비례하여 미니배치 크기를 늘리면(즉, 약한 확장성(weak scaling)), 학습 데이터 처리량에서 거의 선형적인 확장을 관찰할 수 있다. 그러나 **대규모 배치 학습(large batch training)**은 최적화 과정에 복잡성을 도입하여 정확도 감소 또는 수렴 시간 증가를 초래할 수 있으며, 이는 학습 처리량 증가의 이점을 상쇄한다 (Keskar et al., 2017). 추가 연구 (Goyal et al., 2017; You et al., 2017; 2019)는 이러한 영향을 완화하고 대규모 신경망의 학습 시간을 단축하는 기술을 개발했다. 학습을 더욱 확장하기 위해, 병렬 연구 (Chen et al., 2016)는 데이터 병렬화와 **활성화 체크포인트(activation checkpointing)**를 결합했다: 메모리 요구 사항을 줄이기 위해 순방향 전달(forward pass)에서 활성화를 저장하지 않고 역방향 전달(backward pass)에서 재계산하는 방식이다.

그러나 이러한 기술들은 해결할 수 있는 문제 크기에 근본적인 한계를 가진다: 모델이 하나의 워커에 완전히 들어가야 한다는 점이다. BERT 및 GPT-2와 같이 크기와 복잡성이 증가하는 language model의 등장으로, 신경망은 현대 하드웨어 가속기의 메모리 용량에 근접하게 되었다. 이 문제에 대한 한 가지 해결책은 모델의 메모리 사용량을 줄이기 위해 **파라미터 공유(parameter sharing)**를 사용하는 것이지만 (Lan et al., 2019), 이는 모델의 전체 용량을 제한한다. 우리의 접근 방식은 모델 병렬화를 활용하여 모델을 여러 가속기에 분할하는 것이다. 이는 메모리 부담을 완화할 뿐만 아니라, 마이크로배치(microbatch) 크기와 무관하게 병렬 처리량(parallelism)을 증가시킨다.

모델 병렬화 내에는 두 가지 추가 패러다임이 있다: **레이어별 파이프라인 병렬화(layer-wise pipeline parallelism)**와 **더 일반적인 분산 텐서 연산(distributed tensor computation)**이다. 파이프라인 모델 병렬화에서는 한 장치에서 일련의 연산 그룹이 수행된 후, 그 결과가 파이프라인의 다음 장치로 전달되어 다른 연산 그룹이 수행된다. 일부 접근 방식 (Harlap et al., 2018; Chen et al., 2018)은 파이프라인 병렬화와 함께 파라미터 서버(parameter server) (Li et al., 2014)를 사용한다. 그러나 이들은 불일치(inconsistency) 문제를 겪는다. TensorFlow용 GPipe 프레임워크 (Huang et al., 2018)는 **동기식 경사 하강법(synchronous gradient descent)**을 사용하여 이 불일치 문제를 극복한다. 이 접근 방식은 통신 및 연산 작업의 효율적인 파이프라인 처리를 위한 추가 로직이 필요하며, 효율성을 저하시키는 파이프라인 버블(pipeline bubbles) 또는 정확도에 영향을 미치는 옵티마이저 자체의 변경이라는 문제점을 안고 있다.

분산 텐서 연산은 연산을 가속화하거나 모델 크기를 늘리기 위해 여러 장치에 텐서 연산을 분할하는 직교적이고 더 일반적인 접근 방식이다. 이러한 병렬 연산을 조율하는 딥러닝 프레임워크인 FlexFlow (Jia et al., 2018)는 최적의 병렬화 전략을 선택하는 방법을 제공한다. 최근 Mesh-TensorFlow (Shazeer et al., 2018)는 TensorFlow (Abadi et al., 2015)에서 일반적인 종류의 분산 텐서 연산을 지정하기 위한 언어를 도입했다. 병렬 차원은 최종 사용자가 언어로 지정하며, 결과 그래프는 적절한 **집단 기본 요소(collective primitives)**로 컴파일된다. 우리는 Mesh-TensorFlow에서 활용된 것과 유사한 통찰력을 활용하여, Transformer의 attention head 계산에서 병렬성을 활용하여 Transformer 모델을 병렬화한다. 그러나 모델 병렬화를 위한 프레임워크와 컴파일러를 구현하는 대신, 기존 PyTorch Transformer 구현에 몇 가지 **목표 지향적인 수정(targeted modifications)**만을 가한다. 우리의 접근 방식은 간단하며, 새로운 컴파일러나 코드 재작성을 요구하지 않고, 다음 섹션에서 설명하는 바와 같이 몇 가지 간단한 기본 요소를 삽입하는 것만으로 완전히 구현될 수 있다.

3. Model Parallel Transformers

우리는 Transformer 네트워크의 구조를 활용하여 몇 가지 동기화 primitive를 추가함으로써 간단한 모델 병렬 구현을 생성한다. Transformer layer는 Figure 2에서 보여지듯이 **self attention 블록과 두 개의 layer로 구성된 Multi-Layer Perceptron (MLP)**으로 이루어져 있다. 우리는 이 두 블록 각각에 대해 모델 병렬화를 도입한다.

먼저 MLP 블록에 대해 자세히 설명한다. 블록의 첫 번째 부분은 GEMM이며, 그 뒤에 GeLU 비선형성이 이어진다:

Y=GeLU(XA)Y=\operatorname{GeLU}(X A)

GEMM을 병렬화하는 한 가지 옵션은 가중치 행렬 AA를 행(row)을 따라 분할하고 입력 XX를 열(column)을 따라 분할하는 것이다:

X=[X1,X2],A=[A1A2].X=\left[X_{1}, X_{2}\right], A=\left[\begin{array}{l} A_{1} \\ A_{2} \end{array}\right] .

이러한 분할은 Y=GeLU(X1A1+X2A2)Y=\operatorname{GeLU}\left(X_{1} A_{1}+X_{2} A_{2}\right)를 초래한다. GeLU는 비선형 함수이므로 GeLU(X1A1+X2A2)GeLU(X1A1)+GeLU(X2A2)\operatorname{GeLU}\left(X_{1} A_{1}+X_{2} A_{2}\right) \neq \operatorname{GeLU}\left(X_{1} A_{1}\right)+\operatorname{GeLU}\left(X_{2} A_{2}\right)이며, 이 접근 방식은 GeLU 함수 이전에 동기화 지점이 필요하다.

또 다른 옵션은 AA를 열(column)을 따라 A=[A1,A2]A=\left[A_{1}, A_{2}\right]로 분할하는 것이다. 이 분할은 각 분할된 GEMM의 출력에 GeLU 비선형성을 독립적으로 적용할 수 있게 한다:

[Y1,Y2]=[GeLU(XA1),GeLU(XA2)]\left[Y_{1}, Y_{2}\right]=\left[\operatorname{GeLU}\left(X A_{1}\right), \operatorname{GeLU}\left(X A_{2}\right)\right]

이는 동기화 지점을 제거하므로 유리하다. 따라서 우리는 첫 번째 GEMM을 이러한 열 병렬 방식으로 분할하고, 두 번째 GEMM은 행(row)을 따라 분할하여 Figure 3a에서 보여지듯이 어떠한 통신도 필요 없이 GeLU layer의 출력을 직접 받도록 한다. 두 번째 GEMM의 출력은 dropout layer로 전달되기 전에 GPU들 간에 reduce된다. 이 접근 방식은 MLP 블록의 두 GEMM을 GPU들 간에 분할하며, **forward pass에서 단 한 번의 all-reduce 연산(gg operator)**과 **backward pass에서 단 한 번의 all-reduce 연산(ff operator)**만을 필요로 한다. 이 두 operator는 서로의 conjugate이며, PyTorch에서 몇 줄의 코드로 구현할 수 있다. 예를 들어, ff operator의 구현은 아래에 제공된다:

class f(torch.autograd.Function):
    def forward(ctx, x):
        return x
    def backward(ctx, gradient):
        all_reduce(gradient)
        return gradient

Code 1. ff operator의 구현. gg는 backward에서 identity, forward에서 all-reduce인 ff와 유사하다.

Figure 3. 모델 병렬화를 적용한 Transformer 블록. ffgg는 conjugate 관계이다. ff는 forward pass에서 identity operator이고 backward pass에서 all-reduce인 반면, gg는 forward pass에서 all-reduce이고 backward pass에서 identity이다.

Figure 3b에서 보여지듯이, self attention 블록의 경우 multihead attention 연산의 내재된 병렬성을 활용한다. key (KK), query (QQ), value (VV)와 관련된 GEMM을 열 병렬 방식으로 분할하여, 각 attention head에 해당하는 행렬 곱셈이 하나의 GPU에서 로컬로 수행되도록 한다. 이를 통해 attention head별 파라미터와 워크로드를 GPU들 간에 분할할 수 있으며, self-attention을 완료하기 위한 즉각적인 통신이 필요하지 않다. self attention 이후의 출력 linear layer의 GEMM은 행(row)을 따라 병렬화되며, GPU들 간의 통신 없이 병렬 attention layer의 출력을 직접 받는다. MLP와 self attention layer 모두에 대한 이 접근 방식은 두 GEMM 그룹을 융합하고, 중간의 동기화 지점을 제거하여 더 나은 스케일링을 가능하게 한다. 이를 통해 단순한 Transformer layer의 모든 GEMM을 forward path에서 단 두 번의 all-reduce, backward path에서 단 두 번의 all-reduce만으로 수행할 수 있다 (Figure 4 참조).

Transformer language model은 hidden-size (HH) 곱하기 vocabulary-size (vv) 차원의 출력 embedding을 가진다. 최신 language model의 경우 vocabulary size가 수만 개의 토큰에 달하기 때문에 (예: GPT-2는 50,257의 vocabulary size를 사용), 출력 embedding GEMM을 병렬화하는 것이 유리하다. 그러나 Transformer language model에서는 출력 embedding layer가 입력 embedding과 가중치를 공유하므로, 둘 다 수정이 필요하다. 우리는 입력 embedding 가중치 행렬 EH×vE_{H \times v}를 vocabulary 차원 E=[E1,E2]E=\left[E_{1}, E_{2}\right] (열 방향)을 따라 병렬화한다. 각 파티션이 이제 embedding 테이블의 일부만 포함하므로, 입력 embedding 이후에 all-reduce (gg operator)가 필요하다. 출력 embedding의 경우, 한 가지 접근 방식은 병렬 GEMM [Y1,Y2]=[XE1,XE2]\left[Y_{1}, Y_{2}\right]=\left[X E_{1}, X E_{2}\right]을 수행하여 logits을 얻고, all-gather Y=Y= all-gather ([Y1,Y2])\left(\left[Y_{1}, Y_{2}\right]\right)를 추가한 다음, 결과를 cross-entropy loss 함수로 보내는 것이다. 그러나 이 경우, vocabulary size가 크기 때문에 all-gather는 b×s×vb \times s \times v 요소 ( bb는 batch-size, ss는 sequence length)를 통신하게 되는데, 이는 매우 크다. 통신 크기를 줄이기 위해, 우리는 병렬 GEMM [Y1,Y2]\left[Y_{1}, Y_{2}\right]의 출력을 cross entropy loss와 융합하여 차원을 b×sb \times s로 줄인다. logits 대신 scalar loss를 통신하는 것은 통신량을 크게 줄여 모델 병렬 접근 방식의 효율성을 향상시킨다.

Figure 4. Transformer layer의 통신 연산. 단일 모델 병렬 Transformer layer의 forward 및 backward pass에는 총 4개의 통신 연산이 있다.

우리의 모델 병렬 접근 방식의 대부분은 통신을 줄이고 GPU의 연산 한계를 유지하는 기술로 특징지을 수 있다. 하나의 GPU가 dropout, layer normalization 또는 residual connection의 일부를 계산하고 결과를 다른 GPU에 브로드캐스트하는 대신, 우리는 GPU들 간에 연산을 복제하기로 선택한다. 특히, 우리는 각 GPU에 layer normalization 파라미터의 복사본을 유지하고, 모델 병렬 영역의 출력을 가져와 이 텐서에 dropout 및 residual connection을 실행한 다음, 이를 다음 모델 병렬 영역의 입력으로 제공한다. 모델을 최적화하기 위해 각 모델 병렬 worker가 자체 파라미터 세트를 최적화하도록 허용한다. 모든 값이 GPU에 로컬이거나 복제되어 있으므로, 이 공식화에서는 업데이트된 파라미터 값을 통신할 필요가 없다.

하이브리드 모델 및 데이터 병렬화와 난수 생성 처리에 대한 자세한 내용은 참고를 위해 Appendix B에 제시되어 있다. 요약하자면, 위에서 설명한 우리의 접근 방식은 구현이 간단하며, forward 및 backward pass에 몇 가지 추가 all-reduce 연산만 필요하다. 컴파일러가 필요하지 않으며, (Huang et al., 2018)과 같은 접근 방식이 주장하는 파이프라인 모델 병렬화와 직교적이며 상호 보완적이다.

4. Setup

사전학습된 언어 이해 모델은 자연어 처리 및 언어 이해 분야의 핵심 task이다. 언어 모델링에는 여러 가지 정식화(formulation)가 존재한다. 본 연구에서는 GPT-2 (Radford et al., 2019)와 BERT (Devlin et al., 2018)에 초점을 맞춘다.

  • GPT-2: 왼쪽에서 오른쪽으로 텍스트를 생성하는 Transformer 기반의 언어 모델.
  • BERT: 언어 모델 마스킹(masking)에 기반한 양방향 Transformer 모델.

다음 섹션에서 이 모델들에 대한 우리의 구성을 설명하며, 더 자세한 내용은 원 논문을 참조한다.

4.1. Training Dataset

장기적인 종속성을 가진 대규모의 다양한 학습 데이터셋을 수집하기 위해, 우리는 가장 큰 언어 모델링 데이터셋 여러 개를 통합하였다. 우리는 **Wikipedia (Devlin et al., 2018), CC-Stories (Trinh & Le, 2018), RealNews (Zellers et al., 2019), OpenWebtext (Radford et al., 2019)**로 구성된 통합 데이터셋을 생성하였다. 다운스트림 task로의 학습 데이터셋 유출을 방지하기 위해, 우리는 WikiText103 테스트 세트 (Merity et al., 2016)에 포함된 Wikipedia 문서들을 제거하였다. 또한, 전처리 과정에서 발생한 CC-Stories 코퍼스의 불필요한 개행 문자(newline)도 제거하였다. BERT 모델의 경우 BooksCorpus (Zhu et al., 2015)를 학습 데이터셋에 포함시켰으나, 이 데이터셋은 LAMBADA task와 중복되므로 GPT-2 학습에서는 제외하였다.

우리는 모든 데이터셋을 통합한 후, 내용 길이가 128 토큰 미만인 모든 문서를 통합 데이터셋에서 필터링하였다. 통합된 데이터셋에 유사한 내용이 여러 번 나타날 수 있으므로, 자카드 유사도(jaccard similarity)가 0.7보다 큰 콘텐츠를 중복 제거하기 위해 locality-sensitive hashing (LSH)을 사용하였다. 그 결과, 통합 코퍼스는 174GB의 중복 제거된 텍스트를 포함하게 되었다.

4.2. Training Optimization and Hyperparameters

모델을 효율적으로 학습시키기 위해 우리는 V100의 Tensor Core를 활용하고자 dynamic loss scaling을 적용한 mixed precision training을 사용한다 (Micikevicius et al., 2017; NVIDIA, 2018).
먼저, 가중치 WW단순 정규 분포 WN(0,0.02)W \sim \mathcal{N}(0,0.02)로 초기화한다.
그 후, residual layer 바로 앞에서 가중치를 12N\frac{1}{\sqrt{2 N}}로 스케일링한다. 여기서 N은 self-attention 및 MLP 블록으로 구성된 Transformer layer의 개수이다.
옵티마이저로는 Adam (Kingma & Ba, 2014)을 사용하며, weight decay λ=0.01\lambda=0.01 (Loshchilov & Hutter, 2019)을 적용한다.
또한, 대규모 모델 학습의 안정성을 향상시키기 위해 global gradient norm clipping 1.0을 사용한다.
모든 경우에 dropout은 0.1을 사용한다.
마지막으로, 메모리 사용량을 더 효율적으로 관리하기 위해 모든 Transformer layer 이후에 activation checkpointing (Chen et al., 2016)을 활용한다.

GPT-2 모델의 경우, 모든 학습은 1024개의 subword unit 시퀀스를 사용하며, batch size는 512, 총 30만 iteration 동안 수행된다.
학습률은 1.5e-4이며, 3천 iteration 동안 warmup을 거친 후, 나머지 29만 7천 iteration 동안 single cycle cosine decay를 따른다. 최소 학습률은 1e-5에서 decay를 멈춘다.

BERT 모델의 경우, 우리는 (Lan et al., 2019)에 설명된 학습 과정을 대체로 따른다.
원래 BERT의 dictionary를 사용하며, vocab size는 30,522이다.
또한, (Lan et al., 2019)에서 제안된 대로 next sentence prediction head를 sentence order prediction으로 교체하고, (Joshi et al., 2019)의 whole word n-gram masking을 사용한다.
모든 경우에 batch size는 1024로 설정하고, 학습률은 1.0e-4를 사용한다. 이 학습률은 1만 iteration 동안 warmup된 후, 2백만 iteration 동안 선형적으로 decay된다.
다른 학습 파라미터는 (Devlin et al., 2018)과 동일하게 유지된다.

5. Experiments

우리의 모든 실험은 최대 32대의 DGX-2H 서버 (총 512개의 Tesla V100 SXM3 32GB GPU)를 사용한다. 우리의 인프라는 멀티 노드 딥러닝 애플리케이션에 최적화되어 있으며, 서버 내부 GPU 간에는 NVSwitch를 통해 300GB/sec의 대역폭을, 서버 간에는 각 서버당 8개의 InfiniBand 어댑터를 사용하여 100GB/sec의 상호 연결 대역폭을 제공한다.

5.1. Scaling Analysis

구현의 확장성을 테스트하기 위해, 우리는 Table 1에 상세히 설명된 네 가지 파라미터 세트를 가진 GPT-2 모델을 고려한다. self attention layer에서 GEMM(General Matrix Multiply) 크기를 일관되게 유지하기 위해, attention head당 hidden size는 96으로 고정하고, head 수와 layer 수를 변경하여 10억에서 80억 파라미터 범위의 구성을 얻는다. 12억 파라미터 구성은 단일 GPU에 적합한 반면, **80억 파라미터 모델은 8-way model parallelism (8개의 GPU)**을 필요로 한다.

원래 vocabulary size는 50,257이었지만, logit layer의 효율적인 GEMM을 위해 GPU당 vocabulary size가 128의 배수가 되는 것이 유리하다. 우리는 최대 8-way model parallelism을 연구하므로, vocabulary를 128×8=1024128 \times 8 = 1024로 나누어떨어지도록 padding하여, padding된 vocabulary size는 51,200이 된다.

우리는 model parallel scaling과 model+data parallel scaling을 모두 연구한다. model parallel scaling의 경우, 모든 구성에서 고정된 batch size 8을 사용한다. Data parallel scaling은 일반적으로 훨씬 더 큰 global batch size를 사용하는 많은 state-of-the-art 모델을 학습하는 데 필수적이다. 이를 위해, model+data parallel 경우에는 모든 실험에서 global batch size를 512로 고정하며, 이는 64-way data parallelism에 해당한다.

5.1.1. Model and Data Parallelism

이 섹션 전반에 걸쳐, 우리는 모델 병렬(model parallel)모델+데이터 병렬(model+data parallel) 두 경우 모두에서 **모델 파라미터에 대한 약한 스케일링(weak scaling)**을 보여줄 것이다. 약한 스케일링은 일반적으로 배치 크기를 확장하여 수행되지만, 이 접근 방식은 단일 GPU에 맞지 않는 대규모 모델 학습 문제를 해결하지 못하며, 큰 배치 크기에서는 학습 수렴 저하로 이어진다. 이와 대조적으로, 우리는 여기에서 약한 스케일링을 사용하여 그렇지 않으면 학습 불가능했던 더 큰 모델을 학습시킨다. 모든 스케일링 수치의 기준선은 Table 1의 첫 번째 구성(12억 개 파라미터)이 단일 GPU에서 실행되는 경우이다. 이 기준선은 전체 학습 과정 동안 39 TeraFLOPS를 달성하며, 이는 DGX-2H 서버의 단일 GPU 이론적 최고 FLOPS의 30%에 해당하므로 강력한 기준선이다.

Table 1. 스케일링 연구에 사용된 파라미터. 각 attention head의 hidden size는 96으로 일정하게 유지된다.

Hidden SizeAttention headsNumber of layersNumber of parameters (billions)Model parallel GPUsModel +data parallel GPUs
153616401.2164
192020542.52128
230424644.24256
307232728.38512

Figure 5. GPU 수에 따른 모델 병렬 및 모델+데이터 병렬 약한 스케일링 효율성.

Figure 5는 모델 병렬 및 모델+데이터 병렬 모두에 대한 스케일링 값을 보여준다. 우리는 두 설정 모두에서 뛰어난 스케일링 수치를 관찰한다. 예를 들어, 8-way (8 GPU) 모델 병렬을 사용하는 83억 개 파라미터 모델은 선형 스케일링의 77%를 달성한다. 모델+데이터 병렬은 gradient의 추가 통신을 필요로 하므로 스케일링 수치가 약간 감소한다. 그러나 512개의 GPU에서 실행되는 가장 큰 구성(83억 개 파라미터)에서도, 우리는 강력한 단일 GPU 기준선 구성(12억 개 파라미터)의 선형 스케일링 대비 74%의 스케일링을 달성한다. 추가 스케일링 분석은 Appendix D에 제공된다.

5.2. Language Modeling Results Using GPT-2

대규모 language model이 state of the art를 더욱 발전시킬 수 있음을 입증하기 위해, 우리는 Table 2에 나열된 크기와 구성의 GPT-2 모델들을 학습시키는 것을 고려한다. 355M 모델은 BERT-Large 모델(Devlin et al., 2018)과 크기 및 구성이 동일하다. 2.5B 모델은 이전의 가장 큰 GPT-2 모델보다 크며, 8.3B 모델은 우리가 아는 한, 지금까지 학습된 어떤 left-to-right Transformer language model보다도 크다.

Table 2. GPT-2에 사용된 모델 구성. | Parameter <br> Count | Layers | Hidden <br> Size | Attn <br> Heads | Hidden <br> Size <br> per <br> Head | Total <br> GPUs | Time <br> per <br> Epoch <br> (days) | | :---: | :---: | :---: | :---: | :---: | :---: | | 355 M | 24 | 1024 | 16 | 64 | 64 | 0.86 | | 2.5 B | 54 | 1920 | 20 | 96 | 128 | 2.27 | | 8.3 B | 72 | 3072 | 24 | 128 | 512 | 2.10 |

Table 3. Zero-shot 결과. SOTA는 Wikitext103의 경우 (Khandelwal et al., 2019)에서, LAMBADA의 경우 (Radford et al., 2019)에서 가져왔다.

ModelWikitext103 <br> Perplexity \downarrowLAMBADA <br> Accuracy \uparrow
355 M19.3145.18%45.18 \%
2.5 B12.7661.73%61.73 \%
8.3 B10.81\mathbf{10 . 8 1}66.51%\mathbf{66 . 5 1 \%}
Previous SOTA15.7963.24%63.24 \%

우리의 language model을 학습하고 평가하기 위해 섹션 4에 설명된 절차를 사용한다. Table 2는 또한 68,507 iteration에 해당하는 한 epoch를 진행하는 데 걸리는 시간을 나열한다. 예를 들어, 512개의 GPU를 사용하는 8.3B 모델의 경우 각 epoch는 약 이틀이 걸린다. Table 1의 스케일링 연구에 사용된 구성과 비교하면, 2.5B 모델은 동일하며, 8.3B 모델은 32개의 attention head 대신 24개를 사용하고, 355M 모델은 이전에 본 어떤 모델보다 훨씬 작지만 여전히 64개의 GPU를 사용하여 학습하므로 epoch당 시간이 훨씬 짧다.

Figure 6. Validation set perplexity. 모든 language model은 300k iteration 동안 학습된다. 더 큰 language model은 더 작은 모델보다 훨씬 빠르게 수렴하며 더 낮은 validation perplexity에 도달한다.

Figure 6은 iteration 수에 따른 validation perplexity를 보여준다. 모델 크기가 증가함에 따라 validation perplexity는 감소하며, 8.3B 모델의 경우 9.27의 validation perplexity에 도달한다. 학습된 모델의 LAMBADA 및 WikiText103 데이터셋에 대한 zero-shot 평가 결과는 Table 3에 보고되어 있다. 평가 방법론에 대한 자세한 내용은 Appendix E를 참조하라. 우리는 모델 크기가 증가할수록 WikiText103의 perplexity가 낮아지고 LAMBADA의 cloze accuracy가 높아지는 경향을 관찰한다. 우리의 8.3B 모델은 WikiText103 테스트 세트에서 적절히 조정된 perplexity 10.81로 state of the art perplexity를 달성한다. 66.51%의 accuracy로, 8.3B 모델은 LAMBADA task에서 이전의 cloze accuracy 결과들을 유사하게 능가한다. 우리는 83억 개 파라미터 모델에서 생성된 샘플을 Appendix C에 포함했다. 최근 Microsoft 연구원들은 NVIDIA와의 협력으로 Megatron을 사용하여 170억 개 파라미터 GPT-2 모델인 Turing-NLG (Microsoft, 2020)를 학습시켰고, 모델을 확장함에 따라 accuracy가 더욱 향상됨을 보여주며 더 큰 모델의 가치를 강조했다.

Table 4. BERT에 사용된 모델 구성.

Parameter <br> CountLayersHidden <br> SizeAttention <br> HeadsTotal <br> GPUs
336 M24102416128
1.3 B24204832256
3.9 B48256040512

테스트 세트에 있는 어떤 데이터도 학습에 사용되지 않도록 하기 위해, 우리는 이전 연구(Radford et al., 2019)에서와 같이 학습 세트에 나타나는 테스트 세트 8-gram의 비율을 계산한다. WikiText103 테스트 세트는 최대 10.8%의 중복을 가지며, LAMBADA 테스트 세트(Paperno et al., 2016)는 최대 1.4%의 중복을 가진다. WikiText103 테스트 세트는 이미 WikiText103 학습 세트(Radford et al., 2019)와 9.09%의 중복을 가진다는 점에 유의해야 한다. 이러한 결과들이 이전 연구와 일치하므로, 우리는 테스트 데이터의 어떤 문서도 학습 데이터에 의도치 않게 포함되지 않았다고 확신한다.

5.3. Bi-directional Transformer Results Using BERT

이 섹션에서는 우리의 방법론을 BERT-style Transformer 모델에 적용하고, 모델 스케일링이 여러 다운스트림 task에 미치는 영향을 연구한다. 선행 연구(Lan et et al., 2019)에서는 3억 3,600만 개의 파라미터를 가진 BERT-large 모델 이상으로 모델 크기를 늘리면 예상치 못한 성능 저하가 발생한다는 것을 발견했다. 이 저하를 해결하기 위해 해당 연구의 저자들(Lan et al., 2019)은 **파라미터 공유(parameter sharing)**를 도입하여, 기존 BERT 모델에 비해 자신들의 모델이 훨씬 더 잘 확장됨을 보여주었다.

우리는 이러한 동작을 추가로 조사하고, Figure 7에 나타난 바와 같이 layer normalization과 residual connection의 순서를 재배열하는 것이 BERT-style 모델을 BERT-Large 이상으로 확장하는 데 결정적임을 경험적으로 입증했다. Figure 7의 아키텍처 (b)는 (a)의 원래 BERT 아키텍처에서 관찰된 불안정성을 제거하며, **더 낮은 학습 손실(training loss)**을 보인다. 우리가 아는 한, 이러한 변경이 더 큰 BERT 모델의 학습을 가능하게 한다는 것을 보고한 것은 우리가 처음이다.

Table 5. MNLI, QQP, SQuAD 1.1, SQuAD 2.0의 개발 세트 결과 및 RACE의 테스트 세트 결과. trained tokens는 모델 사전학습 중 소비된 토큰(batch size * 반복 횟수에 비례)을 우리의 336M 모델의 사전학습 중 소비된 토큰으로 정규화한 값이다.

Modeltrained tokens ratioMNLI m/mm accuracy (dev set)QQP accuracy (dev set)SQuAD 1.1 F1 / EM (dev set)SQuAD 2.0 F1 / EM (dev set)RACE m/h accuracy (test set)
RoBERTa (Liu et al., 2019b)290.2 / 90.292.294.6 / 88.989.4 / 86.583.2 (86.5 / 81.8)
ALBERT (Lan et al., 2019)390.892.294.8 / 89.390.2 / 87.486.5 (89.0 / 85.5)
XLNet (Yang et al., 2019)290.8 / 90.892.395.1 / 89.790.6 / 87.985.4 (88.6 / 84.0)
Megatron-336M189.7 / 90.092.394.2 / 88.088.1 / 84.883.0 (86.9 / 81.5)
Megatron-1.3B190.9 / 91.092.694.9 / 89.190.2 / 87.187.3 (90.4 / 86.1)
Megatron-3.9B191.4 / 91.492.795.5 / 90.091.2 / 88.589.5 (91.8 / 88.6)
ALBERT ensemble (Lan et al., 2019)95.5 / 90.191.4 / 88.989.4 (91.2 / 88.6)
Megatron-3.9B ensemble95.8 / 90.591.7 / 89.090.9 (93.1 / 90.0)

Figure 7. 원래 아키텍처 (a)와 재배열된 아키텍처 (b)를 사용한 BERT 모델의 학습 손실(training loss). 왼쪽 그림은 336M 및 752M BERT 모델의 학습 손실을 보여준다. 원래 아키텍처는 336M 모델에서 잘 작동하지만, (b)의 수정 사항은 더 낮은 학습 손실로 안정적인 학습을 가능하게 한다.

Figure 7(b)의 아키텍처 변경을 사용하여, Table 4에 자세히 설명된 세 가지 다른 경우를 고려한다. 336M 모델은 BERT-large와 동일한 크기이다. 1.3B 모델은 이전에 336M BERT-large 모델보다 더 나쁜 결과를 보인 BERT-xlarge 구성과 동일하다 (Lan et al., 2019). 우리는 더 큰 hidden size와 더 많은 layer를 사용하여 BERT 모델을 3.9B 파라미터 경우로 확장한다. 모든 경우에 attention head당 hidden size는 64로 일정하게 유지된다. 336M 및 1.3B 모델은 2백만 iteration 동안 학습되었고, 3.9B 모델은 1백 5십만 iteration 동안 학습되었으며 현재도 학습 중이다.

3% held-out 세트에서, 336M, 1.3B, 3.9B 모델은 각각 1.58, 1.30, 1.16의 validation set perplexity를 달성했으며, 이는 모델 크기가 커질수록 단조적으로 감소한다. 우리는 학습된 모델을 GLUE 벤치마크의 MNLI 및 QQP (Wang et al., 2019), Stanford Question Answering 데이터셋의 SQuAD 1.1 및 SQuAD 2.0 (Rajpurkar et al., 2016; 2018), 그리고 독해 RACE 데이터셋 (Lai et al., 2017)을 포함한 여러 다운스트림 task에 대해 fine-tuning한다. fine-tuning을 위해 (Liu et al., 2019b)와 동일한 절차를 따른다. 먼저 batch size와 learning rate에 대한 하이퍼파라미터 튜닝을 수행한다. 최적의 값을 얻은 후, 5가지 다른 무작위 초기화 시드에 대한 개발 세트 결과의 중앙값을 보고한다. 각 모델 및 task에 사용된 하이퍼파라미터는 Appendix A에 제공된다. Table 5는 MNLI, QQP, SQuAD 1.1, SQuAD 2.0의 개발 세트 결과와 RACE의 테스트 세트 결과를 보여준다. RACE의 테스트 세트 결과의 경우, 먼저 개발 세트를 사용하여 5가지 무작위 시드에서 중앙값을 제공하는 체크포인트를 찾고, 해당 체크포인트의 테스트 세트 결과를 보고한다. 또한 SQuAD 개발 세트 및 RACE 테스트 세트에 대한 5-way ensemble 결과도 보고한다. Table 5에서 우리는 다음을 관찰한다: (a) 모델 크기가 증가함에 따라 모든 경우에서 다운스트림 task 성능이 향상된다. (b) 우리의 3.9B 모델은 다른 BERT 기반 모델과 비교하여 개발 세트에서 state of the art 결과를 확립한다. (c) 우리의 3.9B 모델은 RACE 테스트 세트에서 단일 모델 및 ensemble SOTA 결과를 모두 달성한다.

6. Conclusion and Future Work

본 연구에서는 기존 PyTorch Transformer 구현에 약간의 수정만을 가하여 모델 병렬화(model parallelism)를 구현함으로써, 기존의 단일 GPU 모델 학습이 가진 한계를 성공적으로 극복하였다. 우리는 8-way 모델 병렬화를 통해 512개의 NVIDIA V100 GPU에서 최대 83억 개의 파라미터를 가진 Transformer 기반 모델을 효율적으로 학습시켰으며, 전체 애플리케이션에 걸쳐 최대 15.1 PetaFLOPs의 지속적인 성능을 달성하였다.
또한, BERT 모델의 경우 모델 크기가 증가함에 따라 정확도를 높이기 위해서는 BERT-like 모델에서 layer normalization의 위치에 세심한 주의를 기울이는 것이 중요함을 보여주었다. 우리는 모델 크기가 다운스트림 task 정확도에 미치는 영향을 연구하여, 다운스트림 task에서 훨씬 우수한 결과를 얻었으며, WikiText103, LAMBADA, RACE 데이터셋에서 새로운 SOTA를 수립하였다. 마지막으로, 우리는 모델 병렬 Transformer를 활용한 향후 연구를 가능하게 하기 위해 코드를 오픈 소스로 공개하였다.

향후 연구를 위한 몇 가지 방향이 있다. 사전학습(pretraining) 규모를 계속 늘리는 것은 기존 딥러닝 하드웨어 및 소프트웨어를 더욱 시험할 유망한 연구 방향이다. 이를 실현하기 위해서는 optimizer의 효율성과 메모리 사용량 개선이 필요할 것이다. 또한, 160억 개 이상의 파라미터를 가진 모델을 학습시키려면 DGX-2H 박스의 16개 GPU 내에서 사용 가능한 메모리보다 더 많은 메모리가 필요할 것이다. 이러한 모델의 경우, 노드 간(inter-node) 모델 병렬화와 함께 계층 내(intra-layer) 및 계층 간(inter-layer) 모델 병렬화의 하이브리드 방식이 더 적합할 것이다.
그 외 세 가지 연구 방향은 다음과 같다: (a) 다른 모델 계열(XLNet, T5)의 사전학습, (b) 더 어렵고 다양한 다운스트림 task(예: Generative Question Answering, Summarization, Conversation)에서 대규모 모델의 성능 평가, (c) 지식 증류(knowledge distillation)를 사용하여 이러한 대규모 사전학습된 teacher 모델로부터 작은 student 모델 학습.

References

Abadi, M., Agarwal, A., Barham, P., Brevdo, E., Chen, Z., Citro, C., Corrado, G. S., Davis, A., Dean, J., Devin, M., Ghemawat, S., Goodfellow, I., Harp, A., Irving, G., Isard, M., Jia, Y., Jozefowicz, R., Kaiser, L., Kudlur, M., Levenberg, J., Mané, D., Monga, R., Moore, S., Murray, D., Olah, C., Schuster, M., Shlens, J., Steiner, B., Sutskever, I., Talwar, K., Tucker, P., Vanhoucke, V., Vasudevan, V., Viégas, F., Vinyals, O., Warden, P., Wattenberg, M., Wicke, M., Yu, Y., and Zheng, X. TensorFlow: Large-scale machine learning on heterogeneous systems, 2015. URL http: //tensorflow.org/. Software available from tensorflow.org.

Ba, J. L., Kiros, J. R., and Hinton, G. E. Layernorm. CoRR, abs/1607.06450, 2016. URL http: / /arxiv.org / abs/1607.06450.

Chen, C.-C., Yang, C.-L., and Cheng, H.-Y. Efficient and robust parallel dnn training through model parallelism on multi-gpu platform. arXiv:1809.02839, 2018.

Chen, T., Xu, B., Zhang, C., and Guestrin, C. Training deep nets with sublinear memory cost. CoRR, abs/1604.06174, 2016. URL http: / /arxiv.org / abs/1604.06174.

Dai, Z., Yang, Z., Yang, Y., Carbonell, J. G., Le, Q. V., and Salakhutdinov, R. Transformer-xl: Attentive language models beyond a fixed-length context. CoRR, abs/1901.02860, 2019. URL http://arxiv.org/ abs/1901.02860.

Devlin, J., Chang, M.-W., Lee, K., and Toutanova, K. Bert: Pre-training of deep bidirectional transformers for language understanding, 2018.

Goyal, P., Dollár, P., Girshick, R. B., Noordhuis, P., Wesolowski, L., Kyrola, A., Tulloch, A., Jia, Y., and

He, K. Accurate, large minibatch SGD: training imagenet in 1 hour. CoRR, abs/1706.02677, 2017.

Harlap, A., Narayanan, D., Phanishayee, A., Seshadri, V., Devanur, N., Ganger, G., and Gibbons, P. Pipedream: Fast and efficient pipeline parallel dnn training. arXiv:1806.03377, 2018.

Hendrycks, D. and Gimpel, K. Bridging nonlinearities and stochastic regularizers with gaussian error linear units. CoRR, abs/1606.08415, 2016. URL http : //arxiv.org/abs/1606.08415.

Howard, J. and Ruder, S. Fine-tuned language models for text classification. CoRR, abs/1801.06146, 2018.

Huang, Y., Cheng, Y., Chen, D., Lee, H., Ngiam, J., Le, Q. V., and Chen, Z. Gpipe: Efficient training of giant neural networks using pipeline parallelism. CoRR, abs/1811.06965, 2018. URL http://arxiv.org/ abs/1811.06965.

Jia, Z., Zaharia, M., and Aiken, A. Beyond data and model parallelism for deep neural networks. arXiv:1807.05358, 2018.

Joshi, M., Chen, D., Liu, Y., Weld, D. S., Zettlemoyer, L., and Levy, O. Spanbert: Improving pre-training by representing and predicting spans. arXiv:1907.10529, 2019.

Keskar, N. S., Mudigere, D., Nocedal, J., Smelyanskiy, M., and Tang, P. T. P. On large- batch training for deep learning: Generalization gap and sharp minima. ICLR, 2017.

Khandelwal, U., Levy, O., Jurafsky, D., Zettlemoyer, L., and Lewis, M. Generalization through memorization: Nearest neighbor language models. arXiv:1911.00172, 2019.

Kingma, D. P. and Ba, J. Adam: A method for stochastic optimization. arXiv preprint arXiv:1412.6980, 2014.

Lai, G., Xie, Q., Liu, H., Yang, Y., and Hovy, E. Race: Large-scale reading comprehension dataset from examinations. arXiv:1704.04683, 2017.

Lan, Z., Chen, M., Goodman, S., Gimpel, K., and Soricut, P. S. R. Albert: A lite bert for self-supervised learning of language representations. arXiv:1909.11942, 2019.

Li, M., Andersen, D. G., Park, J. W., Smola, A. J., Ahmed, A., Josifovski, V., Long, J., Shekita, E. J., and Su, B.-Y. Scaling distributed machine learning with the parameter server, 2014.

Liu, X., He, P., Chen, W., and Gao, J. Multi-task deep neural networks for natural language understanding. CoRR, abs/1901.11504, 2019a. URL http://arxiv.org/ abs/1901.11504.

Valiant, L. G. A bridging model for parallel computation. Communications of the ACM, 33(8):103-111, 1990.

Vaswani, A., Shazeer, N., Parmar, N., Uszkoreit, J., Jones, L., Gomez, A. N., Kaiser, L., and Polosukhin, I. Attention is all you need. CoRR, abs/1706.03762, 2017.

Wang, A., Singh, A., Michael, J., Hill, F., Levy, O., and Bowman, S. R. Glue: A multi-task benchmark and analysis platform for natural language understanding. ICLR, 2019.

Yang, Z., Dai, Z., Yang, Y., Carbonell, J. G., Salakhutdinov, R., and Le, Q. V. Xlnet: Generalized autoregressive pretraining for language understanding. CoRR, abs/1906.08237, 2019. URL http: / /arxiv.org / abs/1906.08237.

You, Y., Gitman, I., and Ginsburg, B. Large batch training of convolutional networks. arXiv:1708.03888, 2017.

You, Y., Li, J., Reddi, S., Hseu, J., Kumar, S., Bhojanapalli, S., Song, X., Demmel, J., and Hsieh, C.-J. Large batch optimization for deep learning: Training bert in 76 minutes. arXiv:1904.00962, 2019.

Zellers, R., Holtzman, A., Rashkin, H., Bisk, Y., Farhadi, A., Roesner, F., and Choi, Y. Defending against neural fake news. CoRR, abs/1905.12616, 2019. URL http: //arxiv.org/abs/1905.12616.

Zhu, Y., Kiros, R., Zemel, R. S., Salakhutdinov, R., Urtasun, R., Torralba, A., and Fidler, S. Aligning books and movies: Towards story-like visual explanations by watching movies and reading books. CoRR, abs/1506.06724, 2015.

A. BERT Finetuning Hyperparameters

Table 6는 fine-tuning 시 각 모델 및 task에 사용된 하이퍼파라미터를 제시한다.

B. Model Parallel Supplementary Material

이 섹션에서는 하이브리드 모델 및 데이터 병렬화난수 생성(random number generation) 처리에 대한 자세한 내용을 제시한다.

B.1. Hybrid Model and Data Parallelism

Model parallelism은 data parallelism과 독립적(orthogonal) 관계이므로, 두 방식을 동시에 사용하여 대규모 모델을 합리적인 시간 안에 학습할 수 있다. Figure 8은 hybrid model parallelism과 data parallelism을 위한 GPU 그룹 구성을 보여준다. 동일한 서버 내의 두 개 이상의 GPU가 model parallel group을 형성하며(예: Figure 8에서 GPU 1~8), 하나의 모델 인스턴스가 이 GPU들에 걸쳐 분산된다. 나머지 GPU들은 동일 서버에 있을 수도 있지만, 일반적으로는 다른 서버에 위치하며 추가적인 model parallel group을 실행한다. 각 model parallel group에서 동일한 위치에 있는 GPU들(예: Figure 8의 GPU 1, 9, …, 505)은 data parallel group을 형성하며, 해당 data parallel group의 모든 GPU는 동일한 model parameter를 보유한다.

Back propagation 동안에는 각 data parallel group 내에서 weight gradient를 줄이기 위해 여러 gradient all-reduce 연산을 병렬로 실행한다. 필요한 총 GPU 수는 model parallel group의 개수와 data parallel group의 개수를 곱한 값이다. 예를 들어, 8.3 billion parameter 모델의 경우, model parallel group당 8개의 GPU와 64-way data parallelism을 사용하여 총 512개의 GPU를 사용한다. 모든 통신은 PyTorch에서 NCCL을 호출하는 Python 코드로 구현된다. 각 model parallel group 내의 GPU들은 그룹 내 모든 GPU와 all-reduce를 수행하며, data parallelism의 경우 각 all-reduce 연산은 각 model parallel group에서 하나씩 선택된 GPU들끼리 이루어진다.

TaskModelBatch sizeLearning rateTraining epochs
MNLI336M 1.3 B 3.8B1281e51 \mathrm{e}-510
QQP336M1285e-512
1.3 B1283e53 \mathrm{e}-5
3.8 B2564e54 \mathrm{e}-5
SQUAD 1.1336M643e-52
1.3 B483e53 \mathrm{e}-5
3.8 B481e51 \mathrm{e}-5
SQUAD 2.0336M483e53 \mathrm{e}-52
1.3 B643e53 \mathrm{e}-5
3.8 B481e51 \mathrm{e}-5
RACE336M322e52 \mathrm{e}-53
1.3 B161e51 \mathrm{e}-5
3.8 B322e52 \mathrm{e}-5

Table 6. Downstream task에서 BERT 모델을 finetuning하기 위한 hyperparameter.

B.2. Model Parallel Random Number Generation

dropout과 같이 무작위 숫자 생성을 활용하는 기술은 현대 딥러닝 학습의 핵심 요소이다. Transformer는 residual connection 이전의 model parallel 영역 외부와 self attention block 내의 model parallel 영역 내부에 dropout layer를 가지고 있다. 일부 dropout layer는 model parallel 영역에 있고 다른 일부는 그렇지 않기 때문에, dropout이 올바르게 작동하도록 무작위 숫자 생성을 신중하게 처리해야 한다. residual connection dropout을 model parallel worker 간에 동기화하기 위해, 우리는 학습 시작 시 동일한 seed로 무작위 숫자 생성기를 초기화한다. 이는 모든 model parallel worker에서 동일한 dropout 패턴을 생성한다. 그러나 model parallel 영역 내의 dropout은 전체 연산에 걸쳐 무작위성을 달성하기 위해 각 worker마다 다른 무작위 패턴을 생성해야 한다. 이를 위해 우리는 model parallel 영역 내의 dropout을 위한 별도의 무작위 숫자 생성기를 유지한다. 이 무작위 숫자 생성기는 각 model parallel worker마다 고유하게 seed가 설정된다.

Figure 8. 8-way model parallel 및 64-way data parallel을 사용한 하이브리드 모델 및 데이터 병렬화를 위한 GPU 그룹화.

Context: 미국에서 격렬하게 당파적인 정치인들을 하나로 묶는 주요 세력이 있다: 바로 거대 기술 기업들이다. 연방 및 주 차원의 민주당과 공화당은 실리콘 밸리 거대 기업들의 권력을 면밀히 조사하고, 잠재적으로 그들을 규제하기 위해 함께 모이고 있다. 뉴욕의 민주당 법무장관인 레티샤 제임스는 금요일에 8개 주(민주당 4명, 공화당 4명)의 법무장관과 컬럼비아 특별구가 페이스북에 대한 반독점 조사를 시작했다고 발표했다.

Megatron-LM: 제임스 장관이 소송으로 이어질 가능성이 높다고 말한 이 조사는 주 및 연방 법원에서 기술 기업들의 시장 지배력에 도전하는 일련의 고위급 규제 조치 중 가장 최근의 것이다. 법무부는 또한 페이스북의 데이터 관행과 회사가 2011년 연방거래위원회와의 동의 명령을 위반했는지 여부를 조사하고 있다. 이 동의 명령은 회사가 제3자와 개인 정보를 공유하기 전에 사용자로부터 명시적인 동의를 얻도록 요구했다.

초당파적 연합이 페이스북을 고소하게 된 계기는 무엇일까? 명확하게 한 가지 이유가 있는 것은 아니다. 그러나 의원들과 규제 당국은 5천만 명 이상의 사용자에게 영향을 미친 데이터 유출, 플랫폼에서의 가짜 뉴스 확산, 2016년 선거 기간 동안 러시아 지원 계정에 의한 선전 확산 등 회사의 최근 논란에 대해 점점 더 우려하고 있다.

민주당 법무장관들이 소송을 제기하는 것에 대해 얼마나 진지한지도 명확하지 않다. 법무장관들은 보도 자료를 통해 조사를 발표했지만, 소송 제기 여부에 대한 결정은 아직 내리지 않았다고 밝혔다. 과거에는 일부 법무장관들이 소송을 제기하지 않고 기술 기업들로부터 합의를 이끌어내는 데 노력을 집중하기도 했다. 제임스 장관은 성명에서 "우리 주의 반독점법 위반인 의료 사기, 가격 담합 및 기타 위반을 조사하고 기소한 법무장관으로서, 우리는 기업들이 시장에서 소비자와 경쟁을 보호하지 못할 때 책임을 묻는 데 전념하고 있습니다"라고 말했다.

뉴욕 타임즈가 처음 보도한 이 조사는 기술 산업을 지배하는 기업들이 전 세계 반독점 규제 당국의 조사를 받고 있는 가운데 발표되었다. 구글, 트위터, 페이스북, 아마존은 미국과 유럽에서 일련의 반독점 조사와 집단 소송에 직면해 있다...

C. Text Samples

다음은 Megatron-LM이 context prompt를 사용하여 생성한 텍스트 샘플이다. 일부 텍스트는 잘려 있다.

Context: 꽃은 때때로 블룸(bloom) 또는 블러섬(blossom)으로 알려져 있으며, 현화식물(Magnoliophyta 문(division)의 식물, 속씨식물이라고도 함)에서 발견되는 생식 구조이다. 꽃의 생물학적 기능은 일반적으로 정자와 난자의 결합을 위한 메커니즘을 제공함으로써 번식을 수행하는 것이다.

Megatron-LM: 꽃의 구조적 구성 요소는 **꽃잎(petals)**과 **꽃받침(sepals)**으로, 이는 생식 기관이며, 꽃의 기저부를 형성하는 **화통(hypanthium)**과 암술머리(stigma)인 **꽃받침통(calyx)**이다. 꽃은 꽃받침과 꽃잎으로 이루어진 복합 구조이며, 꽃받침은 세 개의 융합된 **화피편(tepals)**으로, 꽃잎은 두 개의 융합된 꽃잎으로 구성되지만, 이 규칙에는 몇 가지 예외가 있다. 세 개의 꽃받침은 융합되어 **꽃받침통(calyx)**이라는 관을 형성하며, 이는 수분 곤충을 유인하는 구조이다. 꽃잎은 두 개의 융합된 꽃받침(바깥쪽)으로 구성되어 있으며, 이들은 끝에서 열리고 안쪽으로 접혀(clasp) 꽃잎을 형성한다. 네 개의 꽃받침과 꽃잎은 합쳐져 **화관(corolla)**을 형성하는데, 이는 꽃의 가장 바깥쪽 구조로 꽃가루를 운반한다.

꽃의 구조는 중요한 기능적 의미를 가지며, 여기에는 곤충으로부터 난소를 보호하고 꽃의 수컷 부분과 암컷 부분 사이에서 꽃가루를 전달하는 것이 포함된다. 꽃의 구조는 또한 식물이 꽃잎의 모양과 수술의 색깔 등으로 수분 매개자를 유인하는 데 사용된다.

꽃의 구조는 식물마다 크게 다르다. 가장 단순한 꽃은 가지가 없고 두 개의 꽃받침과 하나의 꽃잎으로만 이루어져 있다. 다른 예시들은 여러 개의 꽃잎이 함께 연결되어 있으며, 가장 안쪽의 꽃받침은 완전히 융합되어 **꽃받침통(calyx)**이라는 관을 형성한다. 꽃잎은 일반적으로 곤충을 유인하기 위해 색깔이 있으며, 곤충은 특정 파장의 빛만 볼 수 있다. 꽃받침도 종종 색깔이 있지만, 일반적으로 색깔 범위가 더 제한적이다.

일부 꽃은 수술(stamens), 꽃밥(anthers), **난소(ovaries)**와 같은 추가적인 구조를 가지고 있다. 일부 꽃에 수술과 꽃밥이 존재하는 것은 **교차 수분(cross-pollination)**에 사용된다. 난소는 암컷 배우자가 생산되는 기관이며, 꽃의 배아에서 가장 먼저 발달하는 구조이다. 난소는 암컷 꽃의 생식 시스템이며, 난소벽, 밑씨(ovule), 난관(oviduct)으로 구성된다.

꽃은 크기와 모양이 작게는 아주 작고 크게는 거대하며, 종종 밝은 색을 띤다. 꽃은 꽃머리(flower head), 꽃차례(inflorescence), 포엽(bract), 불염포(spathe), 또는 **심피(carpels)**와 같은 더 큰 구조의 일부로 볼 수 있다.

"flower"라는 용어는 일반적으로 외부에서 보이는 꽃 구조에 적용되지만, 많은 ...

Context: OpenAI는 악의적인 사용에 대한 우려로 전체 GPT-2 모델을 공개하지 않았지만, 새로운, 더 큰 데이터셋으로 학습된 원래 GPT와 동일한 크기(1억 1,700만 개의 파라미터)의 더 작은 버전을 공개했다. 큰 모델만큼 강력하지는 않지만, 더 작은 버전도 여전히 언어 생성 능력을 가지고 있다.

Megatron-LM: 2016년 12월, DeepMind는 15억 개 이상의 파라미터를 가진 훨씬 더 큰 모델인 GPT-3를 출시했다. DeepMind는 이 모델을 공개할 계획이 없으므로, 다른 AI 연구자들이 이를 복사하고 기반으로 구축할 수 있을지에 대한 의문이 남아 있다.

다른 언어 모델들은 다른 기술을 사용하여 구축되었다. 2016년, 컬럼비아 대학교, 토론토 대학교, Google DeepMind의 연구팀은 심층 신경망을 포함한 신경망 기반 모델이 언어의 문법 규칙을 학습할 수 있음을 보여주었다. Google DeepMind의 한 그룹은 이러한 규칙이 네트워크에서 일종의 **의사 결정 트리(decision tree)**로 표현될 수 있음을 시연했는데, 트리 내의 노드는 문장의 단어이고, 단어에 대한 규칙은 트리의 끝에 있는 의사 결정 노드로 표현된다. 네트워크는 규칙을 따르는지 여부에 따라 문장에서 다음 단어를 선택하기 위해 네트워크를 통과한다. 2017년, DeepMind 팀은 모델의 학습 및 성능을 자세히 설명하는 논문을 발표했다.

이 모델의 문제점은 많다. 가장 큰 문제 중 하나는 문법 규칙이 모호하다는 것이다. 예를 들어, "I came down"이라는 구문은 계단에서 내려왔다는 의미일 수도 있고, 하늘에서 내려왔다는 의미일 수도 있다. 영어에는 모호한 문장의 다른 예시들이 많이 있다. 이 모델은 모호한 문장들 사이의 차이를 구별할 방법이 없으므로, 자신이 아는 규칙을 기반으로 전체 문장에 대해 단순히 예측을 한다. 이는 모델을 과적합(overfitting) 현상에 취약하게 만든다. 이를 피하기 위해 모델은 대규모 데이터셋을 사용하여 학습되어야 하며, 이를 통해 모델은 데이터에서 유용한 패턴을 찾고, 그 패턴을 사용하여 예측을 하는 데 도움을 받을 수 있다. 이 접근 방식은 또한 오류가 발생하기 쉬운데, 이는 올바른 예측을 하는 데 학습 데이터에 의존하며, 데이터가 잘못 레이블링될 수 있어 결과적으로 좋지 않은 예측 집합을 생성하는 모델이 될 수 있기 때문이다. GPT-2의 경우, 모델은 각 구문 유형(주어-동사-목적어)에 대해 약 100개의 학습 문장만 가지고 있다.

또한, 언어는 다른 유형의 구문에 대해 다른 규칙을 가지고 있다. 영어에서는 주어-동사-목적어 구성이 상당히 보편적이지만, 다른 언어는 다른 규칙을 가지고 있어 GPT 학습을 더 복잡하게 만든다.

마지막으로, 규칙의 수와 모델의 성능 사이에는 본질적인 trade-off가 있다 ...

Context: 제36회 국제 머신러닝 학회(ICML 2019)는 2019년 6월 10일부터 6월 15일까지 미국 캘리포니아주 롱비치에서 개최된다. 컨퍼런스는 튜토리얼 하루(6월 10일)로 시작하여, 3일간의 본 컨퍼런스 세션(6월 11-13일), 그리고 2일간의 워크숍(6월 14-15일)으로 구성된다.

Megatron-LM: 광범위한 범위를 가진 이 컨퍼런스는 머신러닝 분야의 실무자와 연구자들을 위한 도전과 기회를 다룬다. 컨퍼런스 프로그램은 강화 학습부터 계산 생물학까지, AI부터 딥러닝까지 다양한 머신러닝 주제를 다루는 세션을 특징으로 한다. 이는 머신러닝의 발전을 탐구하고 발표하는 세계 최고의 포럼이다.

ICML 2019는 실무자, 연구자, 학생들에게 흥미로운 인상적인 범위의 세션을 제공할 것이다. 우리가 다룰 주제 중 일부는 다음과 같다:

  • 강화 학습

  • Soft Computing

  • 계산 생물학

  • Convolutional networks

  • 딥러닝

  • 통계 학습 이론

  • 통계 학습 기계

  • 자연어 처리

  • 생물학

수상 첫 회부터 이 컨퍼런스는 성장하고 발전해왔다. 오늘날, 이는 머신러닝 분야의 최첨단 연구를 선보이는 최고의 포럼이다. 이 컨퍼런스는 머신러닝의 최신 연구를 선보이는 가장 중요한 장소이자, 실무자, 연구자, 학생들이 아이디어와 통찰력을 교환할 수 있는 장소로 널리 인정받고 있다.

이 컨퍼런스는 발표의 우수성과 초청 연사의 질로부터 명성과 영향력을 얻는 피어 리뷰(peer-reviewed) 학술대회이다. 모든 발표의 50% 이상이 전문가 위원회에 의해 내용에 따라 선정된다는 점을 고려할 때, 이 컨퍼런스의 높은 연구 및 품질 기준이 매우 높은 수준을 유지하고 있음이 분명하다.

Context: 국방부는 화요일 주말에 흑해에 추락한 러시아 비행기에서 비행 기록 장치를 발견했다고 밝혔다. 러시아 군용 Tu-154 비행기에 탑승했던 92명 전원은 일요일 아침 러시아 남부 도시 소치에서 이륙한 지 2분 만에 추락하여 사망한 것으로 추정된다.

Megatron-LM: 한 아이가 페트로파블롭스크-캄차츠키 마을의 지방 정부 건물에 있는 임시 영안실에서 사망한 친척의 초상화를 들고 있다. 러시아 국방부 Tu-154 비행기가 92명을 태우고 일요일 아침 러시아 남부 도시 소치에서 이륙한 직후 흑해에 추락했다. (Yuri Kochetkov/EPA)

국방부에 따르면, 비행기는 1,000피트 이상의 깊이에서 발견되었고 기록 장치는 손상되었다. 성명서는 "국방부는 기록 장치를 항공기 추락 사고의 주요 조사 기관인 국제항공위원회에 인계하기로 결정했다"고 밝혔다.

비행기의 블랙박스 수색은 강풍과 거친 파도로 인해 방해를 받고 있다. 조사관들은 추락 사고에 대한 형사 조사를 시작했으며, 관계자들은 기술적 결함이 원인일 가능성이 높다고 밝혔다.

러시아 대통령 블라디미르 푸틴은 수요일을 희생자들을 위한 애도의 날로 선포했다.

D. Further Scaling Analysis

이 섹션에서는 어텐션 헤드(attention head) 수확장 결과(scaling results)에 미치는 영향을 연구한다. 또한, 12억 개 파라미터 모델에 대한 강력한 확장 결과를 제시한다.

D.1. Attention Heads and Scaling

이 섹션에서는 attention head가 모델 병렬 확장(model parallel scaling)에 미치는 영향을 연구한다. 이를 위해 우리는 8-way 모델 병렬 처리를 사용하는 83억 개 파라미터 구성을 고려하고, head 수를 16개에서 32개로 변경하며 실험을 진행했다. 결과는 Table 7에 제시되어 있다.

attention head 수가 증가함에 따라, self-attention layer 내부의 일부 GEMM 연산의 크기가 작아지고, self-attention softmax의 요소 수가 증가한다. 이러한 변화는 확장 효율성(scaling efficiency)의 약간의 감소로 이어진다. 향후 연구에서는 모델 속도와 모델 정확도 간의 균형을 맞추는 대규모 Transformer 모델을 설계하기 위해 이 하이퍼파라미터에 주의를 기울여야 할 것이다.

D.2. Strong Scaling

우리의 모델 병렬화(model parallelism)는 주로 단일 GPU 메모리에 들어가지 않는 대규모 모델의 학습을 가능하게 하기 위해 설계되었지만, batch size를 늘리지 않고도 더 작은 모델의 학습 속도를 높일 수 있다.
이러한 가속 효과를 측정하기 위해 우리는 12억 개의 파라미터를 가진 모델을 고정된 batch size 8로 학습시키면서, 모델 병렬화를 사용하여 GPU 수를 늘려가며 실험을 진행했다. 결과는 Table 8에 제시되어 있다.
두 개의 GPU를 사용하면 학습 속도가 64% 빨라진다. 그 이상으로 GPU를 늘리면 GPU당 연산량이 감소하고 메모리 대역폭 및 통신 오버헤드가 지배적이 되면서 점차 효율이 감소하는 것을 볼 수 있다.

Table 7. 8-way 모델 병렬화에서 83억 개의 파라미터 모델의 확장성에 대한 attention head 수의 영향.

Attention headsHidden size per headScaling Efficiency
1619282%82 \%
2412880%80 \%
329677%77 \%

Table 8. batch size를 고정한 상태에서 모델 병렬화를 사용하여 12억 개의 파라미터 모델에 대해 얻은 속도 향상.

# of GPUs1248
Speedup1.01.642.342.98

E. Evaluating Language Models Using WikiText103 and LAMBADA

이 섹션에서는 WikiText103 데이터셋 (Merity et al., 2016)에 대한 평가 방법론과 LAMBADA 데이터셋 (Paperno et al., 2016)의 cloze-style 예측 정확도에 대해 자세히 설명한다.

E.1. Wikitext103 Perplexity

WikiText103 perplexity는 벤치마크 데이터셋이 생성된 이래 지난 몇 년간 잘 연구되어 온 평가 기준이다. Perplexity코퍼스의 평균 cross entropy를 지수화한 값이다 (Mikolov et al., 2011). 이는 전체 문장이나 텍스트에 대한 확률 분포를 나타내는 language model에 대한 자연스러운 평가 지표가 된다.

PPL=exp(1TotTlogP(t0:t1))P P L=\exp \left(-\frac{1}{T_{o}} \sum_{t}^{T} \log P(t \mid 0: t-1)\right)

(4)에서 perplexity를 계산하기 위해 우리는 WikiText103 테스트 코퍼스를 우리의 subword vocabulary에 따라 토큰화하고, 각 토큰 [0,T][0, T]cross entropy loss를 합산한다. 그런 다음, 원래 토큰화 방식의 토큰 수 ToT_o로 cross entropy loss를 정규화한다. WikiText103 테스트 코퍼스는 이미 이전 연구들이 perplexity를 계산하는 데 사용했던 단어 수준 토큰으로 사전 토큰화되어 있다. 이전 연구들과 동일한 조건에서 우리 모델의 perplexity를 평가하기 위해, 우리는 모델 입력으로 실제로 사용된 토큰화된 데이터의 토큰 수 TT가 아닌, 원래 토큰 수 ToT_o로 정규화해야 한다. 이 사전 토큰화는 또한 우리 학습 데이터에는 없는 텍스트 내의 인공물(artifact)을 도입한다. 이러한 분포 불일치(distributional mismatch)를 완화하기 위해, 우리는 먼저 WikiText103 테스트 데이터셋을 가역적인 detokenizer로 전처리하여 구두점 및 공백과 관련된 다양한 인공물을 제거한다. ToT_o 값은 이 전처리 전에 계산된다. WikiText103의 테스트 세트의 경우 To=245566T_o=245566이고 T=270329T=270329이다.

우리는 또한 perplexity 계산에 Transformer 특유의 추가적인 수정을 가해야 한다. RNN 기반 language model과 달리, Transformer는 고정된 window input size로 작동한다. 따라서 P(t0:t1)P(t \mid 0: t-1)를 완전히 계산할 수 없으며, context 크기 ww (1024 토큰)인 P(ttw:t1)P(t \mid t-w: t-1)만 계산할 수 있다. 그러나 우리 데이터셋의 모든 토큰에 대해 이 값을 계산하는 것은 TT번의 ww 크기 context 평가를 수행해야 하므로 엄청나게 비효율적이다. 우리 모델을 효율적으로 평가하기 위해, 우리는 overlapping evaluation이라는 중간 지점 접근 방식을 취한다. 이 방식에서는 슬라이딩 윈도우를 매번 overlap oo만큼 이동시키고, 윈도우의 마지막 oo개 토큰에 해당하는 cross entropy loss만 계산한다. 우리 실험에서는 overlap oo를 32로 설정하고, 이러한 방식으로 모든 슬라이딩 윈도우에 걸쳐 loss를 계산한다.

E.2. LAMBADA Cloze Accuracy

장기적인 context를 처리하는 능력은 state-of-the-art language model에 있어 매우 중요하며, 장문 생성(long-form generation) 및 **문서 기반 질문 응답(document-based question answering)**과 같은 문제 해결을 위한 필수 전제 조건이다. LAMBADA와 같은 cloze-style 데이터셋은 모델이 이러한 장기적인 context 내에서 작동하고 추론하는 능력을 측정하도록 설계되었다.

**Cloze-style 독해(reading comprehension)**는 단어 토큰 x=x1:tx=x_{1:t}로 구성된 context에서 하나의 토큰 xjx_j가 마스킹된 형태를 사용하며, 모델의 목표는 누락된 jj-번째 토큰의 값을 정확하게 예측하는 것이다. 누락된 토큰을 정확하게 예측하기 위해서는 모델이 주변 context에 대한 깊이 있는 이해해당 context에서 언어가 어떻게 사용되어야 하는지에 대한 지식을 필요로 한다.

LAMBADA는 cloze-style 독해를 사용하여 generative left-to-right language model을 테스트한다. 이는 context xtx_t의 마지막 단어가 마스킹된 45개 문장 예시를 구성하는 방식으로 이루어진다. 우리 모델은 subword unit을 사용하므로, LAMBADA 평가를 위해 가공되지 않은(raw) LAMBADA 데이터셋을 활용하며, 모델이 단어 토큰을 구성하는 여러 subword 토큰들을 예측하도록 요구한다. 우리는 teacher forcing을 사용하며, 모든 출력 예측이 정확할 때만 정답으로 간주한다. 이러한 공식화는 원래의 단어 토큰 예측 task와 동일하다.