LLama:

kaeul·2024년 10월 17일
0
  • 7B~65B parameters
  • 13B outperforms GPT-3(165B)
  • 65B is competititive with Chinchila 70B and Palm 540B
  1. Introduction
  • model size가 커지면 성능이 증가한다는 가정하에 few shot learning이 도입되었다.
  • 그러나 Hoffmann의 scaling law에 따르면 더 많은 데이터로 학습한 상대적으로 크기가 작은 모델들이 두각을 나타내기 시작했다. 하지만, scaling law의 목적은 training budget 내에 best scale을 정하는 것으로 inference budget은 고려하지 않았다.
  • 이에 더 많은 token을 사용해 다양한 inference budget에서 최상의 성능을 내는 실험이 이루어 졌는데 그렇게 나온 모델이 LLaMa이다.
  • LLaMa가 기존 transformer 구조에서의 modification과 training method가 어떤지 살펴보자.
  1. Approach
    2.1 Data
  • tokenizer
    - Sentencepiece를 사용한 byte-pair encoding(BPE)
    - 토큰화한 후 1.4T token 사용
    - 각 token을 한번만 사용했다. (몇개만 두번)
    2.2 Architecture
    1) Pre-normalization (GPT-3)
  • training stability를 높이기 위해 output을 normalize하는 것 대신에 sub layer의 input을 정규화
  • RMSNorm normalization
    2) SwiGLU activation (PaLM)
  • ReLU 대신 SwiGLU 사용
  • 2/3*4d // PaLM=4d
    3) Rotary Embedding (GPT-Neo)
  • absolute positional embedding 대신 각 layer마다 rotary embedding 추가
    2.3 Optimizer
  • AdamW
  • Cosine learning rate Schedule 사용
    - final lr = max(lr)*10%
  • Weight decay : 0.1
  • Gradient clipping : 1.0
  • Warmup : 2000 step
    2.4 Efficient implementation (optimization)
    1) Causal multihead attention
  • attention weight 저장하지 않고, LM의 causal한 성질 때문에 masked 된 k/q score 계산하지 않아 memory 사용과 runtime이 줄어든다.
  • Xformers library에서 사용가능하다
    2) Backward pass 동안 checkpointing과 다시 계산되는 activation 양이 준다
  • linear layer의 output과 같은 계산이 많이 드는 activation을 저장
  • auto grad 대신 transformer layer의 backward function에 수동으로 실행
    3) model & sequence parallelism으로 메모리가 줄어든다.
    4) 가능한 all_reduce operation을 사용해서 GPU간의 연산과 activation의 연산이 overlap 된다.
  1. Results
profile
Deep learning

0개의 댓글