Paper

LLaMa paper Summary, 메타의 언어모델 라마(LLaMa) 논문 요약 빠르게 살펴보기

BrianaAI 2023. 7. 25. 10:28

안녕하세요.

오늘은 메타(구. 페이스북)에서 공개한 LLaMa 논문에 대해서 설명해보도록 하겠습니다.

논문에 대한 Summary를 찾기 쉽지 않아 직접 리뷰해본 논문이네요 :)

아주아주 간략하게 리뷰해보겠습니다.


 

Paper link https://research.facebook.com/publications/llama-open-and-efficient-foundation-language-models/
Code link https://github.com/facebookresearch/llama

 

 

Pre-trained Data

 

  • 공공데이터만을 사용
  • 각 데이터별로 다양한 전처리 기법을 적용함.
  • 예) 글 내부에 영어가 아닌 다른 언어는 제외시키는 linear 모델
  • Github (코드), Wikipedia (지식), Books (책), ArXiv (과학적지식), StackExchange(수준높은 Q&A), 등의 데이터 수집을 진행
  • Tokenizer: BPE(Byte pair encoding) -> Sentence piece (BERT는 word piece)
  • Training: 1.4T 토큰, 학습동안 모든 토큰은 only 1번만 사용됨. (위키피디아, books 도메인은 2번)

 

BPE 토큰화란?

1994년에 제안된 "정보 압축 알고리즘", 데이터에서 가장 많이 등장한 문자열을 병합해서 데이터를 압축하는 기법

  • Tockenizer 전: aaabdaaabac (aa->Z)
  • Tockenizer 후: ZabdZabac (ab->Y)
  • Tockenizer 한 번 더: ZYdZYac

 

Architecture
  • Transformer architecture 사용 (Attention is all you need) + 3개 추가 바꾼 것
    • Pre-normalization[GPT3]:
      • output normalization 안하고
      • 훈련 안정성 높이려고, 각 트랜스포머 sub-layer의 input을 normalize
      • RMSNorm (2019) 
    • SwiGLU [PaLM]
      • ReLU 대신 SwiGLU로 대신 (성능 향상 목적으로)
      • PaLM의 4d 대신에 2/3*4d 차원 사용
    • Rotary Embeddings [GPTNeo]
      • absolute positional embedding 제거
      • rotary positional embedding 추가 (매 layer 마다)

 

 

Training
  • 2048 A100에서 21일간 훈련 진행.
  • 근데 시간 단축하기 위한 수많은 노력들이 들어있음.
    • AdamW, 코사인 훈련 스케쥴러
    • 캐쥬얼 멀티헤드 어텐션
    • 활성함수 수 줄이기

 

Result

1) Common Sense Reasoning

  • BoolQ, PIQA, SIQA, HellaSwag, WinoGrande, ARC, OpenBookQA => 의미 모호한 대명사 찾기, 객관식 등
  • LLaMa-65B > Chinchilla-70B (BoolQ 빼고 다 높음.)
  • LLaMa-65B > PaLM-540B (BoolQ, WinoGrande 빼고 다 높음.)
  • LLaMa-13B > GPT-3: 대부분 높다. 10배나 크기가 작은데

2) Closed-book Question Answering

  • Zero-shot, few-shot 모두 LLaMa-65B 좋고, LLaMa-13B gpt-3나 chinchilla보다 5-10배나 작은데 견줄만하다.

=> 쭉 정리하다보니 다 LLaMa 좋거나 견줄만한 성능 나왔다. 그래서 모델의 크기 대비 성능 유사 혹은 그 이상

 

다시 정리하면,

1) Tocken 전처리

2) Transformer + 3개 바꾼거

3) Training 속도 향상시킨거

4) public data 쓴거

 

4가지로 정리할 수 있을 것 같습니다 :)

 

 

* Reference

[1] BPE: https://ratsgo.github.io/nlpbook/docs/preprocess/bpe/