Effecitve GPT-3(175B): GPT-3 파라미터 요구사항 계산과 분석

daewoo kim
10 min readMay 21, 2023

--

GPT-3와 같은 LLM를 분석하다 보면 LLM 학습에 필요한 시간과 비용, LLM 학습에 필요한 시스템 사양을 평가하기 위한 정량적인 방법이 필요하다.

이를 위해서 가장 중요한 정보는 바로 모델 아키텍처와 모델 파라미터 정보이다. LLM의 모델 아키텍처는 Transformer 아키텍처를 기본으로 채택하기 때문에 모델 파라미터 개수를 비교적 정량적으로 계산하는 것이 가능하다. LLM 모델 아키텍처는 크게 3가지로 구분될 수 있다.

  • Transformer Encoder (e.g. BERT)
  • Transformer Decoder (e.g. GPT)
  • Transformer Encoder & Decoder (e.g. T5)

모델 아키텍처와 모델 파라미터를 이해한다는 것은 다음과 같은 이점을 제공한다.

  • LLM을 밑바닥부터(from scratch) 구현 및 성능 최적화 가능
  • LLM 학습에 필요한 학습 리소스 규모, 학습 시간, 학습 비용 등 평가 가능
  • LLM 추론에 필요한 추론 리소스 규모, 추론 latency 등 평가 가능

이를 위해서 가장 먼저 해야 하는 것은 LLM의 파라미터를 계산하는 것이다. 필자는 이번부터 5회에 걸쳐 GPT-3을 기준으로 아래와 같은 주제로 연재를 할 계획이다.

  1. Effective GPT-3 (175B): GPT-3 파라미터 요구사항 계산과 분석
  2. Effective GPT-3 (175B): GPT-3 FLOPS 요구사항 계산과 분석
  3. Effective GPT-3 (175B): GPT-3 Communication 요구사항 계산과 분석
  4. Effective GPT-3 (175B): GPT-3 학습 성능 분석과 분석
  5. Effective GPT-3 (175B): 효과적인 LLM 학습 방법

GPT-3의 아키텍처

GPT-3는 125M부터 175B까지 총 8개의 모델 사이즈의 버전이 존재한다. GPT-4는 아쉽게도 모델 아키텍처를 공개되지 않은 상태이다.

GPT-3의 사이즈, 아키텍처 (source: GPT-3 논문)

GPT-3의 Terminology

GPT-1, GPT-2, GPT-3 논문을 참고하여 GPT-3의 주요 모델 사이즈 변수를 다음과 같이 정의하였다. (Transformer 논문의 용어와 차이가 있어 괄호 안에 Transformer 논문의 용어와 비교하였다.)

  • n_params: 학습 가능한 파라미터의 총 개수
  • n_layers(=N): GPT-3의 transformer block의 개수
  • d_model: GPT-3의 입출력 차원
  • n_heads(=h): Multi-head attention을 위한 head의 개수
  • d_head(=d_k=d_v): d_head=d_model/n_heads. 각 attention head의 차원
  • n_vocab: 50257 (GPT-2 papar에서 참고. Vocabulary의 크기)
  • n_ctx(=n, sequence length): 컨텍스트 윈도우의 크기
  • d_ff: Transformer FFN의 차원. (d_ff=4*d_model)
GPT-3의 모델 파라미터 설명 (source: GPT-3 paper)

GPT-3의 모델 아키텍처

GPT-3은 GPT-2의 모델 아키텍처를 그대로 채택하였다.

GPT-3의 모델 아키텍처 (source: GPT-3 paper)

GPT-2의 최대 모델 파라미터가 1.5B이었다면 GPT-3은 175B까지 증가하였다. GPT-2는 GPT-1와 달리 layer normalization의 위치가 변경되었다. GPT-1는 transformer decoder와 같이 LayerNorm(sublayer(x) + x) 형태였으나 GPT-2는 x+sub-layer(LayerNorm(x)) 형태로 바뀌었다.

Full-Scale GPT-3 아키텍처 (source: GPT-2 Wiki. modified by author)
GPT-3의 Single Transformer Block 아키텍처 (source: GPT-2 Wiki. modified by author)

GPT-3의 모델 파라미터와 관계된 trainable weight matrix는 다음과 같다.

(1) Word Embedding

  • U: tokens의 컨텍스트 벡터
  • W_e : token embedding matrix

(2) Position Embedding

  • W_p : position embedding matrix

(3) Masked Multi-Head attention

  • W_i^Q: Query Weight Matrix
  • W_i^K: Key Weight Matrix
  • W_i^V: Value Weight Matrix
  • W^o: Out Weight Matrix

(4) Feed-Forward Network

  • W_1: Linear transformation를 위한 Matrix 1
  • b_1: W_1의 bias
  • W_2: Linear transformation를 위한 Matrix 2
  • b_2: W_2의 bias

GPT-3의 파라미터 개수 계산 방법

GPT-3의 총 trainable 파라미터는 ➀ Token Embedding 파라미터, ➁ Position Embedding 파라미터, ➂ Masked Multi-head Attention, ➃ Feed-Forward Network 파라미터의 총합이다. 다음은 각 파라미터별 파라미터를 계산하는 방법이다.

➀ Token Embedding 파라미터

  • W_e: (n_vocab, d_model). 입력 Matrix U를 poistion embedding과 같은 차원인 (n_ctx, d_model)로 변환하기 위한 token embedding matrix
  • ➥ W_e 파라미터 사이즈: n_vocab*d_model

➁ Position Embedding 파라미터

  • W_p: (n_ctx, d_model). Original Transformer에서 Sinusoidal Positional Encoding을 사용하는 것과 달리 GPT-3는 position embedding을 학습한다. (GPT-1 논문의 4.1 Setup — Model specification 참고)
  • W_p 파라미터 사이즈: n_ctx*d_model

➂ Transformer 파라미터: Masked Multi-Head Attention

  • Query/Key/Value weight matrix: 모두 (d_model, d_head) 차원을 가짐
  • Q/K/V weight matrix의 총 파라미터 사이즈(multi-heads의 개수인 n_heads를 곱해야 함): 3*d_model*d_head*n_heads
  • W_o: (n_heads*d_head, d_model)
  • W_o 파라미터 사이즈: d_model*d_head*n_heads
  • Layer당 Multi-Head Attention의 총 파라미터 사이즈: 4*d_model*d_head*n_heads
  • Full Multi-Head Attention의 총 파라미터 사이즈: 4*d_model*d_head*n_heads*n_layers

➃ Transformer 파라미터: Feed-Forward Network

  • W_1: (d_model, d_ff) = (d_model, 4*d_model) ➥ W_1의 파라미터: 4*d_model²
  • W_2: (d_ff, d_model) = (4*d_model, d_model) ➥ W_2의 파라미터: 4*d_model²
  • b_1: d_ff=4*d_model ➥ b_1의 파라미터: 4*d_model
  • b_2: d_model➥ b_2의 파라미터: d_model
  • ➥ FFN(Feed-Forward Netowork)의 총 파라미터 사이즈: 8*d_model²*n_layers + 5*d_model*n_layers

GPT-3의 총 파라미터 계산식

GPT-3의 총 파라미터 개수 (image by author)

Case Study: GPT-3 175B의 파라미터 계산하기

앞에서 유도한 GPT-3 파라미터 계산식을 이용하여 GPT-3 175B의 총 파라미터 개수를 구하면 다음과 같다.

  • Token Embedding: 6.18E+08 (617,558,016)
  • Position Embedding: 2.25E+07 (25,165,824)
  • Masked Multi-head Attention: 5.80E+10 (57,982,058,496)
  • FFN: 1.16E+11 (115,970,015,232)
  • Total Parameters: 1.75E+11 (174,594,797,568) ↔ GPT-3(174,600,000,000)
  • Error ratio: 0.003%

GPT-3의 모든 버전에 대한 파라미터 개수를 계산한 스프레드시트는 이 링크에서 확인할 수 있다. 한 가지 이상한 점은 GPT-3 XL의 계산값과 GPT-3 논문에서 명시한 값과 오류(약 15%)가 크다는 것이다. (GPT-3 XL의 아키텍처만 다른 버전과 다른 것인지, 아니면 논문 상의 단순 오기인지 확인하기 어렵다.)

GPT-3 Parameters (image by author)

GPT-3의 파라미터가 커질수록 다음과 같은 특징을 알 수 있다.

  • 파라미터 크기: Position Emb < Token Emb < Multi-head attns < FFN
  • 파라미터의 크기가 커질수록 전체 파라미터 중 FFN과 Multi-head Attentions의 파라미터가 대부분을 차지하게 되고 2:1 비율로 수렴함
  • 1B 미만의 GPT-3 버전(GPT-3 Small, Medium, Large)에서 Token Embedding의 비중이 상당히 높은 것을 알 수 있음 (10~30%)

--

--

daewoo kim
daewoo kim

Written by daewoo kim

AI developer & Author | Working@semiconductor-industry. I write and share about what I learn.

Responses (1)