GPT3

0 Abstract


Background

현재 learning mainstream인 learning paradigm은 pre-training & SFT.
SFT를 위한 set을 구하는 게 쉽지 않음. 그러나, 사람은 few-shot으로 금방 학습함.

Question

Main Hypothesis : Scaling up으로 FT 없이도 모델이 새로운 task에 잘 적응하지 않을까?

Experiment Key Points

실험에서는 FT 즉, 파라미터를 수정하지 않고, In-context Learning이라는 방법을 사용함.
prompt 형식으로 모델에게 예시를 주어 학습시키는 방법.

  • 구분은 Zero-shot(0S), One-shot(1S), Few-shot(FW)로 구분.

Results

  1. Strong performance: QA, CommonSensing, Math-inferencing, translation 등 여러 분야에서 SOTA에 필적하거나 넘는 성능을 보임.
  2. 사람과 구분하기 힘들 정도의 text-generation performance
  3. 그러나, NLI 또는 일부 독해 데이터셋에서는 여전히 어려움을 겪음.
  4. 또한, 모델 자체의 bias, fake-news 등 사회적 악용 가능성도 문제가 될 수 있다고 함.

1 Introduction


  • 이때까지는 pre-training & fine-tuning paradigm을 했는데 문제점이
    • fine-tuning마다 데이터셋이 필요했고,
    • task별 SFT시 generalization이 떨어졌음.

Quote

사람은 ‘adaptability’가 있는데, 이러한 것이 AI에게 필요하다,,

In-context Learning

모델의 규모를 키우다보면, (GPT3는 175B인데, GPT2 약 10배 정도) 모델의 추가적인 파라미터 변경 없이도 learning behavior가 보이는 것 같은데, 이를 ‘in-context learning’이라고 한다.

  • form은 prompt 형식으로 task-description이랑 몇 가지의 예시를 제공하는 방법(few-shot)

Meta-Learning vs ICL(In Context Learning)

ICL은 Meta-learning 개념을 실현하는 구체적 매커니즘 중 하나.

논문에서는 이를 Inner-loop / Outer-loop로 구분하는데,

  • Outer loop : Pre-train 단계에서 모델이 방대한 데이터를 접하며, unseen task에 대한 일반적인 능력을 키우는 과정
  • Inner loop : ICL 즉, outer-loop에서 얻은 능력을 통해 inference time에서 prompt 만으로 task를 파악하여 해결하는 과정(Fast adaptation via context)

Scaling Law & N-shot Learaning

  • 모델의 크기가 클 수록,
  • shot이 많을수록
    일반적으로 모델의 inference 성능이 좋아진다.

또한, 0S랑 1S의 차이는 모델 크기가 커질수록 커진다.
파라미터가 많은 모델들은 1S 만으로도 성능향상이 매우 가파르다.


42개 benchmark를 모아서 정리했는데,

  • 마찬가지로 scaling-law 보임.
  • 어떠한 task는 일정 규모가 나와야 pereformance가 나오기 시작해서 지능의 threshold가 있는 과제가 있는 것 같다.

Result Summary

대부분의 문제에서는 좋은 performance.
일부 task에서는 fine-tuning한 모델들이랑도 competative한 performance를 보임.
그러나, NLI(natural language inference) task나 특정 독해 작업에서는 여전히 모자란 부분을 보임.

2 Approach


Summary

GPT3를 다음과 같은 4가지 방법으로 학습 시켰을 때, 성능 비교를 하겟다.

  1. FT(Fine-Tuning)
  2. 0S : Zero-shot : Context 내 학습할 수 있는 소스를 주지 않음. instruction만 줌.
  3. 1S : One-shot : 한 가지의 예시를 줌. 추가로 instruction도 같이.
  4. FS: Few-shot : 2가지 이산의 예시를 제공해 줌.(10~100개)

2.1 Model and Architectures


Summary

  1. GPT2 구조 계승.
  • modified-initialization, pre-norm, reversible tokenization 포함.
    • modified-initialization : layer 개수 고려해서 모델 초기화 시 layer 개수의 루트 크기만큼 나누어준다.
    • pre-norm : 원래는 residual connection 이후 즉, shortcut-path랑 기존 path 합쳐진 후 Norm했는데, Norm을 먼저한다.
    • reversible tokenization : Unknown token을 사용할 필요 없는 Byte-level BPE
  1. Sparse Attention 도입.
  • Transformer 각 layer에 Desne Attention이랑 Locally Banded Sparse Attention을 번갈아 가며 사용.
  • 긴 text seq 처리 시 연산 효율성 목적으로 도입.
  1. Context-Window = 2048
  2. 파라미터가 너무 많아서, GPU 내 행렬 곱셈을 나누는 방식 및 layer를 gpu 별로 나누는 방법을 사용.
  3. Scaling-Law 검증 : “충분한 데이터가 있다면 모델의 크기가 커질수록 loss는 멱법칙 따라 감소할 거다.”

2.2 Training Dataset



Summary

  • Data Source
    • 방대한 인터넷에서 긁어온 Common Craw(1T Words)l과
      • 데이터 셋 품질을 올리기 위해 잘 다듬어진
      • WebText2: Reddit에서 추천을 많이 받은 링크의 텍스트.
      • Books1 & Books2: 두 개의 서로 다른 인터넷 기반 도서 말뭉치.
      • Wikipedia: 영어 위키백과 데이터.
      • 를 사용함.
  • Data Quality Filtering
    • 유사성 기반 filtering : 고품질셋을 reference로 하여 Common Crawl 중 유사성이 낮은 일부를 drop.
    • Fuzzy Deduplicattion: Docs 수준에서 중복된 것들 drop.
    • Data Contamination: test-benchmark 데이터 들이 train에 사용되지 않게 한 번 filtering
  • Weighted Sampling
    • corpus 크기별 sampling 비율을 고려한 것이 아니라, 고품질의 데이터셋에서 더 많이 추출되도록 비율 설정함.

2.3 Training Process


Summary

전형적으로 모델의 크기가 커지면,

  • lr은 작게 쓰고,
  • batch는 더 크게 잡는다고 한다.

Batch Size 무작정 정하는 게 아니라, gradient noise scale을 사용해서 정함.

  • train-code 단에서 보면, gradient는 batch 단위에서 계산해서 사용하는데, 이 경우 full data에 대한 gradient 즉, true-gradient랑 각 배치간의 gradient는 다를 수 밖에 없는데, 이 다른 정도를 사용해서 batch size를 잡음. from McCandlish et al. (2018)

Parallelism

  • Intra-layer parallelism : Matmmul 연산을 쪼개서 gpu에 분배하고 합치는 방식으로 수행.
  • Intre-layer parallelism : 레이어를 특정 gpu들에 배당해서 사용하는 방식으로 함.

Infra

  • MS cluster에서 V100 사용했고, 3,640 PFlops/day 정도 소요

2.4 Evaluation


Summary

ICL test를 위해서 다음과 같이 데이터 준비.

  • Few-Shot 조건.
    • benchmark set에서 data를 train / dev / test로 분리.
    • 처음으로 하는 건, -shot에서 값 정하기
      • train set에서 무작위 추출한 sample 개를 붙여서 context 생성.
      • context-window : 2048 token 내에 들어가도록 는 10~100 정도로.
      • dev(eval) set에서 1개 추출해서 모델에게 train으로 만든 context를 hint로 그 문제를 맞추게 해서 acc 평가
      • 이걸 기준으로 값 결정.
    • 결정된 개 만큼의 set을 다시 train에서 뽑고, 이를 hint로 삼아, 실전에서 풀 문제를 test에서 뽑아서 acc를 평가.
  • Multiple Choice eval

3 Results


3.1 Language Modeling, Cloze, and Completion Tasks

3.2 Closed Book Question Answering

3.3 Translation

3.4 Winograd-Style Tasks

3.5 Common Sense Reasoning

3.6 Reading Comprehension

3.7 SuperGLUE

3.8 NLI

3.9 Synthetic and Qualitative Tasks

4 Measuring and Preventing Memorization Of Benchmarks


5 Limitations


Todo

  1. Task performance
  • 특정 task에 대해서는 아직 저조한 performance
    • NLI : 주로 문장 간 entailment 관계 묻는.
    • Reading Comprehension
    • WiC(Words in Context)
  • FT model 모델 대비 performance
    • Few-shot 성능이 잘 나오긴 하지만, SFT를 이길 정도는 아님.
  1. Auto-regressive Decoder
  • Decoder-only 구조에서 오는 auto-regressive한 특성으로, fill-in-the-blank 같은 특정 NLP task에서는 BERT 같은 구조를 이기기 힘들다.
  • 특정 목표에 대한 학습이 아닌, NTP(LM) task만으로 학습하니, 복잡한 논리 구조를 이해하는 데 한계가 있다.
  1. Learning Efficiency & Data problem
  • 필요한 데이터 양이 사람 대비 너무 많다.
  • Lack of Grounding :다양한 modality 정보가 필요하다.
    • 물리 법칙을 요하는 문제들에 취약. World Model?
  1. Cost & Social Effects
  • Expensive하고,
  • 데이터 cleaning이 쉽지 않아, social-bias가 있을 가능성이 높다.

6 Broader Impacts


6.1 Misuse of Language Models

6.2 Fairness, Bias, and Representation

6.3 Energy Usage

7 Related Work

8 Conclusion