반응형

Prefix-Tuning 배경 설명

  • Prefix-Tuning은 NLP 모델의 fine-tuning 과정의 비효율을 해결하기 위해 발표된 방법론으로 2021년 ACL에서 발표되었다.
  • Pretrained model 전체를 fine-tuning하지 말고, prompting에 착안한 소규모의 parameter 학습만으로 fine-tuning과 비견하는 좋은 성능을 보인다.

 

Abstract

  • Fine-tuning은 대규모 데이터에서 학습한 pre-trained model을 down-stream task에서 활용할 수 있게 하여 좋은 성능을 낸다.
  • 하지만, model의 모든 parameter를 바꾸기 때문에, 각 task마다 전체 parameter를 저장해놔야 한다.
  • 이 논문에서는 prefix-tuning이라는 자연어 생성 task에서 fine-tuning 없이, model의 parameter를 고정하고도 적은 양의 prefix (continuous task-specific vector)만을 optimize 하여 사용할 수 있는 방법을 제시한다.
  • Prefix-tuning에서는 prefix를 virtual token으로 대하여 prompting처럼 활용한다.
  • 성능 실험을 위해, GPT-2에서 자연어 생성, BART에서 요약 작업을 테스트해 보았는데, 전체 parameter의 0.1% 만을 학습해도 fine-tuning과 비슷하거나, 일부 상황에서는 더 좋은 성능을 보인다. 

 

Introduction

[Fine-Tuning 방법]

  • 대규모 pretrained model을 활용하여 원하는 각 task에 맞게 fine-tuning 하는 방법이 주류로 자리 잡았다.
  • 하지만, fine-tuning 방법은 각 task마다, 전체 model의 parameter를 한 copy씩 저장하고 업데이트해야 한다는 문제가 있다. 특히, 언어모델의 parameter 수가 점점 커지면서, 더 큰 비용을 야기한다.

 

[Fine-Tuning 문제 해결]

  • 이는 자연스럽게 fine-tuning 과정을 경량화하는 방법이 제기되었다. 
  • 전체 parameter를 update 하는 것이 아닌, pretrained model을 고정해 놓고, 적은 양의 paramter만을 추가하여 model을 학습하는 방법이 등장하였다. (adapter-tuning)
  • 이런 경향이 계속되어, GPT-3에서는 task-specific tuning 없이, user가 요청에 대한 몇 가지 sample을 같이 제공하는 in-context learning & prompting 같은 방법이 제시되었다.

 

[Prefix-Tuning]

  • 이 논문에서는 prefix-tuning이라는 prompting에서 영감을 받은 방법을 제시한다.
  • Prefix-tuning에서는 prefix라는 continuous task-specific vector를 input으로 같이 활용하여 "virtual token"의 기능을 할 수 있도록 한다.
  • 이 virtual token은 실제 token과는 다른 개념으로 학습 가능한 parameter 만으로 구성되어 있다. 
  • Prefix tuning에서는 각 task에 따라, 각기 다른 prefix만을 학습하면 되기 때문에, 적은 양의 parameter만 학습하면 되고, 이에 따른 overhead도 매우 적다.
  • 또한, Fine-tuning과 달리 prefix tuning은 user에 따라 각기 다른 prefix를 관리하면 되기 때문에, 다른 user 간의 data가 섞여서 오염되는 현상이 발생하지 않는다. 따라서, 한 batch에서 여러 user와 task를 학습할 수 있어 효율적이다.

 

[실험]

  • Prefix-tuning의 실험을 위해, GPT-2에서 table-to-text 생성과 BART에서 text 요약을 실험했다.
  • 용량 관점에서 prefix-tuining은 fine-tuning에 비해 1000배 적은 parameter만을 사용했다.
  • 성능 측면에서는 table-to-text에서는 fine-tuning과 거의 비슷한 성능을 보여주었고, text 요약에서는 약간의 성능 하락만 존재하였다. 
  • 학습 때 보지 못한 주제들을 다루는 경우들에 대해서는 오히려 좋은 성능을 보이기도 했다. 

 

 

Prefix-Tuning

  • Prefix Tuning은 prompting에서 영감을 받았기 때문에, prompting에 대한 이해가 필요하다.

 

[Intuition]

  • Prompting은 언어모델에서 model parameter 수정 없이 적절한 context를 제공해 주면, 언어모델이 원하는 결과를 제공하도록 조종할 수 있는 방법이다.
  • 예를 들어, "오바마"라는 단어를 생성하고 싶을 때, 언어모델에 "버락"이라는 단어를 input으로 주면, 그 단어 뒤에 나올 가장 확률 높은 단어 "오바마"를 출력하는 것과 같다.
  • 이 개념을 확장하면, 자연어 생성 task에서 언어모델에 우리가 원하는 결과를 얻도록 조종할 수 있다. 
  • 하지만, prompting에 문제가 있는데, 원하는 결과를 위한 context가 존재하는지에 대해 명확하지 않다. 
  • 어떤 context가 결과를 낼 수도 있고, 결과를 못 낼 수 도 있다.
  • Data를 활용한 optimization이 도움이 될 수 있지만, discrete optimization(token은 discrete 하기 때문)은 학습이 매우 어렵다.
  • Discrete token을 이용한 optimize보다, 논문에서는 continuous word embedding 단에서 instruction을 optimize 하는 방법을 선택하였다.
  • 이런 방법이 실제 단어와의 matching을 요하는 token 단에서 생성한 prompt보다 더 명확한 표현이 가능하다. 
  • 이렇게 word embedding 단에서 instruction을 주는 방법보다, activation 단의 각 layer에서 guide를 제공하는 방법이 긴 범위의 dependency를 고려할 수 있기 때문에 효과적이다.
  • 따라서, prefix-tuning에서는 모든 layer에서 prefix를 optimize 한다.

 

[Method]

  • Prefix-tuning은 1) autoregresive LM에서 input으로 같이 제공, 2) encoder와 결과에 각각 같이 포함할 수 있다.

  • Autoregressive model에서 model의 parameter는 아래와 같이 정해진다. 여기서, Pθ는 (prefix 길이) X (hi의 dimension)의 matrix로 초기화된다. 

  • 학습의 목표는 fine-tuning과 동일하지만, 학습해야 할 parameter가 달라진다. LM의 ϕ는 고정 후, θ만 학습한다. 
  • i가 prefix에 존재하면(prefix index 위치이면), hi는 Pθ의 값을 그대로 copy 하면 된다. 
  • 만약, i가 prefix index에 포함되지 않는 경우에도, hi는 Pθ에 의존하게 된다. (prefix는 항상 입력값의 왼쪽에 붙기 때문에 오른쪽에 영향을 미치기 때문이다.→ 왼쪽에서 오른쪽으로 token이 처리되기 때문) 즉, i가 prefix index에 없더라도, prefix가 영향을 미치게 된다. 

 

[Parameterization of Pθ ]

  • 경험적으로 Pθ parameter를 바로 update 하는 것은 불안정한 optimization을 이끌어 성능하락으로 이어진다.
  • 따라서, Pθ matrix를 MLP layer들을 거쳐, reparametrize 한다. 이때, reparametrization의 결과로 나온 P'θ는 row 수는 유지하면서 (prefix length) 다른 column dimension을 가지도록 한다. (table-to-text는 512, summarization은 800)

 

실험 결과

[Table-to-text Generation]

  • GPT-2 model 환경에서 E2E, WebNLG, DART dataset에서 실험했다.
  • Pretrained model의 0.1%의 task-specific parameter를 사용하였다. 
  • Prefix-tuning은 다른 lightweight tuning 방법보다 좋은 performance를 달성했고, fine-tuning에 버금가는 좋은 성능을 보였다.
  • 공평한 비교를 위해, 동일 parameter 양(0.1%)을 사용한 adapter tuning과 비교해 봤을 때, dataset 당 평균 4.1 BLEU 성능 향상이 있는 것을 보였다.
  • 더 많은 parameter 양(3%)을 사용한 adapter tuning이나 fine-tuning(100%)과 비교해도, prefix tuning은 거의 비슷하거나 좋은 성능을 보였다.
  • 이것은 prefix tuning에서 학습한 parameter가 더 효과적으로 정보를 가지고 있음을 의미하는 것이다. 
  • 추가적으로, DART에서 prefix-tuning의 좋은 성능ㅇ느 다양한 domain들과 넓은 범위의 관계들에서 prefix tuning의 효과성을 보여준다. 

 

 

[Summrization]

  • Prefix-tuning은 0.1% parameter 추가만으로 fine tuning에 비해 약간만 낮은 ROUGE-L을 보인다.

 

 

Reference

LI, Xiang Lisa; LIANG, Percy. Prefix-tuning: Optimizing continuous prompts for generation. arXiv preprint arXiv:2101.00190, 2021.

반응형

GQA 배경 설명

  • GQA는 2023년에 발표된 논문이다. 
  • GQA는 llama 2에서 도입된 기술로 유명하다. 
  • language model에서 transformer의 multi-head attention 구조 때문에,  inference 시간이 너무 오래 걸린다는 문제가 있었고, 이를 해결하기 위한 방법을 제시하였다. (사실, 전에 등장한 multi-query attention과 multi-head attention 방식의 절충안을 제시한 논문이다.)
  • 최근에는 당연하게 받아들여져, 대규모 AI 모델에는 당연하게 사용된다고 한다. 

 

Abstract

  • Multi-query attention(MQA)는 하나의 key-value head를 사용하여 decoder의 inference 시간을 줄인다.
  • 하지만, MQA는 model 성능 하락이 일어날 수 있다.
  • 이 논문에서는 기존의 multi-head 언어 모델의 checkpoint들을 MQA 기능을 갖춘 모델로 변경하는 방법을 제안하여, pre-training 과정의 5% 정도의 계산량만 사용하도록 한다. 
  • 또한, grouped-query attention(GQA)라는 multi-query attention을 일반화하여 몇 개의 key-value head로 사용할 수 있는 개념을 소개한다.
  • GQA는 multi-head attention의 성능에 필적하면서도, MQA에 비견될 수 있는 빠른 속도를 가진다.

 

Introduction

[문제]

  • Autoregressive decoder의 inference에는 각 decoding step마다, attention key, value와 decoder weights를 memory에 load 해야 하기 때문에 memory bandwidth에 의한 overhead를 겪는다. 

→ Decoder의 문장을 생성할 때는 token 하나 하나를 생성하기 때문에, 그때마다 decoder의 weight와 attention 사이의 연산을 위해, memory 상에 올리는 과정을 겪는데, 이것이 문장 생성등에 속도 저하 요인이라는 것이다.

 

  • 이런 memory bandwidth에 의한 속도 저하는 multi-query attention(MQA)이라는 query를 여러 개 사용하지만, 단일 key와 value head를 사용하는 방법에 의해 개선될 수 있다.
  • 하지만, MQA를 사용하게 되면, 성능 저하와 학습 불안정성이 생기게 된다. 또한, 공개된(그 당시) 언어 모델들은 거의 모두 multi-head attention을 사용하여 학습했기 때문에, MQA를 사용하지 못한다.

[Contribution]

  • 이 논문에서는 2가지 contribution을 주장한다.
    1. multi head attention(MHA)를 통해 학습된 언어 모델의 checkpoins를 최초 학습에 비해 적은 양의 연산만으로 MQA를 사용할 수 있도록 한다. 이로 인해, MHA의 좋은 성능을 유지하면서, 빠르게 inference 할 수 있도록 한다.
    2. grouped-query attention(GQA)라는 multi-head와 multi-query attention을 아우를 수 있도록 query head 당 key value 여러 개를 할당하는 방식을 소개한다. GQS는 multi head attention과 비슷한 성능을 내면서, multi-query attention처럼 빠른 속도를 가진다. 

 

Method

[Uptraining]

  • multi-head model로 부터 multi-query를 생성하는 것은 2가지 과정을 거친다.
    1. checkpoint를 변경한다.
    2. 새로운 구조에 맞게 추가적인 pre-training을 진행한다.
  • 우선, 아래 그림처럼, key, value head들을 mean pooling을 통해, 하나의 vector로 만든다. (단순 여러 개중 하나를 뽑는 당식이나, 처음부터 하나의 key, value를 하는 방식보다 좋은 성능을 가진다고 한다.)

  • mean pooling을 진행하는 구조를 추가한 뒤, 전체 모델 중, α 비율만큼을 기존 pre-training과 동일한 방법으로 update 한다.

 

[Grouped-query attention]

  • Grouped-query attention은 query head들을 G개의 group으로 나눈다. 
  • 각 group들을 하나의 key head와 value head를 공유한다. 
  • 일반화를 위해서 G개의 group으로 나눈 GQA를 GQA-G로 명명하는데, G=1일 때는 MQA와 동일하고, G=Head 수 일 때는 MHA와 동일하다.
  •  multi-head attention 구조의 checkpoint를 GQA 방식으로 바꾸자 할 때는 group 내의 head들에 mean pooling 방식을 이용하여 Group 화하여 사용한다.
  • 1~Head 개수 사이의 중간 값의 Group을 가지는 GQA는 MQA보다는 좋은 성능을 보이면서, MHA보다 빠르다.
  • 이때, Group의 수를 적절히 설정하면, memory bandwidth를 넘지 않는 값을 선택할 수 있어, 속도도 MQA와 거의 비슷할 정도의 좋은 값을 가진다.

Experiments

[메인 실험]

  • multi-head 구조인 T5 Large, T5 XXL로 실험하였다. uptraining을 위한 checkpoint는 공개된 T5의 checkpoint들을 사용했다.
  • α 는 0.05를 사용했다. (parameter의 5%만 재 학습)
  • 아래 그래프에서 볼 수 있듯, GQA를 사용한 모델은 MHA 방식에 비해 성능의 약간 하락이 있었지만, 속도가 매우 빠르고, 좋은 성능을 유지한다.  

 

[Sub 실험]

  • multi-head 구조에서 group화 방식에 따른 성능 비교 : Mean pooling 방식이 group 내에서 첫 번째 head를 사용하거나, 초기화하여 재학습하는 방식보다 더 좋은 성능을 보인다.

 

  • α에 따른 성능 비교 : 전체의 5% 정도만 재학습해도 좋은 성능을 유지한다.

 

  • Group 개수에 따른 속도 비교 : group 수를 적게 하면 MQA 정도의 속도가 나온다(다만, 성능은 떨어질 것이다.)

 

Reference

 

Ainslie, Joshua, et al. "Gqa: Training generalized multi-query transformer models from multi-head checkpoints." arXiv preprint arXiv:2305.13245 (2023).

반응형

LoRA 배경 설명

  • LoRA는 2021년 ICLR에 발표된 논문이다. 
  • 당시에는 GPT2, GPT3 등 LLM을 혁신하는 모델들이 등장하고 있던 시기이지만, 새로운 downstream task 학습을 위해서는 pretrained model에 대한 fine-tuning이 필요하다는 고정관념(?)이 자리 잡고 있던 시기이다.
  • 이 논문에서는 fine-tuning 과정에서 전체 parameter를 학습하는 것이 연산 cost가 매우 크다는 점을 지적하면서, 적은 양의 parameter 학습만으로 fine-tuning을 진행할 수 있는 방법을 제시한다.
  • LLM들의 parameter가 비대해지면서 소규모 computing 자원에서는 거의 학습이 불가능했는데, 이 부분을 가능하게 만든 논문이기도 하다.
  • 또한, 단순 LLM 뿐아니라, 모든 neural network에 적용되기 때문에, 다양한 분야에서 많이 사용되고 있는 논문이기도 하다. 

Abstract

  • NLP 분야의 패러다임은 많은 양의 데이터에서 pretraining 한 후, 특정 task나 domain 처리를 위해 fine-tuning 하는 것이다.
  • 하지만, Fine Tuning 과정에서 전체 모델을 다시 학습하는 것은 매우 비효율적이다. 
  • 이 논문에서는 LoRA(Low-Rank Adaptaion)라는 pretrained model의 weight를 고정해 놓고, Transformer의 각 층에 학습 가능한 rank decomposition matrices를 추가하는 방법을 제시한다. 
  • LoRA의 도입으로 인해, downstream task 학습 시, 학습 parameter 수를 매우 크게 줄일 수 있다. (GPT-3 기준 10000배) 
  • LoRA는 매우 적은 학습 parameter와 추가적인 inference latency 없이도, 최신 LLM 모델과 비슷하거나 그 이상의 performance를 낸다. 

 

Introduction

[Fine-Tuning 방법의 문제]

  • NLP 분야에서 많은 양의 데이터로 학습한 pre-trained model을 활용해, 다양한 task에서 fine-tuning하여 사용하는 방법이 많이 주로 사용된다.
  • 하지만, Fine-tuning에는 단점이 존재하는데, task 별 학습을 위해, 매우 많은 양의 parameter를 학습해야한다는 것이다. (일반적으로 pre-trained model 전체를 활용하여 학습하기 때문에)
  • 이 같은 문제는 LLM의 model parameter 수가 점점 많아지면서 더 크게 부각된다.

[parameter 일부를 학습하는 모델]

  • 많은 연구들이 이를 완화하기 위해, downstream task 학습을 위해, 일부 parameter만 학습하거나, 추가적인 module을 달아서 학습하는 방법을 사용하기도 한다.
  • 이런 방법들은 학습해야하는 parameter의 수를 크게 줄여, 학습의 속도 측면에서는 유리하지만, inference latency가 생기거나, model이 처리 가능한 sequence length를 줄이기도 한다.
  • 특히, 이런 방법들은 model의 성능을 악화하는 단점이 존재한다.

[소개]

  • 앞선 연구들에 영향을 받아, 논문에서는 model adaptation 과정에서 weight의 변화가 낮은 intrinsic rank를 가진다고 가정한다.(즉, fine-tuning  과정에서 weight 변화가 크게 복잡하지 않은 저 차원에서 변화이다.)
  • LoRA는 pre-trained weight를 고정해놓고, weight 변화의 rank decomposition matrics를 최적화하여, 모델을 간접적으로 습한다. (즉, fine-tuning 과정에서 pretrained model의 weight를 직접적으로 건드리지 않고, rank decomposition matrics를 최적화하기 위한 학습을 진행하여, 간접 학습 효과를 내는 것)
  • GPT-3의 경우 1~2 정도의 매우 낮은 rank를 통해서도 충분히 효과적이다. 

 

  • LoRA는 몇가지 강점을 가진다.
    1. pre-traned model을 공유하면서 각기 다른 task를 위한 LoRA module을 만들 수 있다. 이로 인해, storage를 크게 절감할 수 있고, task 변경에 따른 overhead를 줄일 수 있다.
    2. LoRA는 효율적이고, 낮은 Hardware 환경에서도 동작한다. 전체 parameter의 gradient를 구할 필요 없이, 추가된 매우 적은 양의 low-rank matrices만 학습하면 되기 때문이다. 
    3. LoRA의 단순한 선형 디자인이 추가적인 inference latency 없이 동작가능하게 한다.
    4. LoRA는 기존 연구들과 연관성이 없어, prefix-tuning과 같은 기존 연구들과 쉽게 결합 가능하다.

 

기존 연구들

  • Fine-tuning 과정에서 parameter 수를 절감하거나, 연산을 효율화하는 등, 학습 효율성을 향상하기 위한 연구는 기존에도 존재했었다. 
  • 기존 연구들은 2가지 방향성으로 나눌수 있다. 1) adapter layer를 추가하거나,  2) input layer activations를 최적화하는 것이다. 
  • 하지만, 두 방법 모두 한계가 존재한다. 

Adapter Layers Inference Latency

  • Adapte를 구성하기 위한 다양한 방법이 존재했다.
  • Transformer block 마다, 2개의 adapter layer들을 추가하는 방법, LayerNorm을 추가한 하나의 layer만 추가하는 방법들이 존재했다.(이러한 방법들은 추가 layer들이 들어, inference latency가 생긴다.)
  • 한편, Layer를 pruning하여 연산을 줄여, adapter layer의 추가 연산을 우회하는 방법들이 존재했다. 이 방법들은 adaptation 과정에서 학습해야 하는 parameter의 수를 크게 줄였지만, 순차적으로 진행되어야 하기 때문에, 병렬을 활용하지 못해, 오히려 전체 처리 시간은 증가하게 된다.

 

Directly Optimizing the Prompt is Hard

  • 다른 방향으로는 prefix tuning과 같은 방법이 있다. 
  • prefixtuning은 optimize가 쉽지 않고, 학습에 따라 성능이 단조롭게 증가하지 않는다. (즉, 예측 or 컨트롤 불가능하다.)
  • 보다 근본적으로, adaptation을 위한 sequence length로 인해, downstream task에서 사용 가능한 sequence length가 줄게된다. 이는 오히려 성능 하락으로 이어지기도 한다.

 

LoRA

Low-Rank Parametrized Update Matrices

  • Neural Network는 matrix multiplication을 진행하는 많은 dense layer들을 포함한다.
  • 이 layer들의 weight matrices는 일반적으로 full-rank를 가진다. 
  • 특정 task에 adapting 할때, pre-trained language model들은 매우 낮은 "instrinsic dimension"을 가지고, 이로 인해, 작은 subsapce로 random projection을 하는 경우에도 효과적으로 학습 가능하다. (기존 논문 내용)
  • 이에 영감을 받아, 논문에서는 adaptation 과정에서 weights를 학습하는 것도 낮은 "intrinsic rank"를 가진다고 가정한다.
  • pre-trained weight matrix (W0, size : d X k)에 대해, low-rank decomposition을 통해 update를 제한한다. (rank는 min(d,k))
  • 학습 과정에서 pretrained weight W0는 고정해 놓고, 학습 가능한 A(r X k), B(d X r) matrix의 곱을 더해준다. (weight의 변화를 저 차원의 B, A matric으로 표현하겠다.) 

  • A와 B를 random Gaussian initialization, Zero initialization으로 초기화하여, 학습 초반에는 weight의 변화 값을 0으로 출발한다.  
  • △Wx를 채 constant 값을 이용하여 scale 한다.
  • optimizing에는 Adam을 이용한다. 

[A Generalization of Full Fine-tuning]

  • Fine-tuning의 일반화된 버전은 pre-trained parameters의 일부를 학습하는 것을 포함한다. 
  • LoRA는 adaptation 과정에서 weight matrices의 full-rank를 필요로 하지 않는다. LoRA를 모든 weight 행렬에 적용하고 biases를 훈련하면, LoRA의 rank를 미리 훈련된 가중치 rank와 맞춰 설정함으로써, 전체 fine-tuning의 표현력을 회복할 수 있다.
  • 즉, LoRA의 학습 parameter의 수를 늘리면, fine-tuning 성능과 거의 수렴한다.

 

[No Additional Inference Latency]

  • LoRA를 사용하면 연산 및 저장을 W= W0+BA를 통해 진행하고, inference는 평소처럼 진행할 수 있다. 
  • 다른 task에 적용할 때는 weight에 BA를 빼서, pretrained model의. weight를 복구할 수 있다. 
  • 매우 적은 memory overhead로 매우 빠른 연산을 통해 진행 가능하여, inference 과정에서 추가 latency가 거의 없다고 봐도 된다.

 

Applying LoRA to Transformers

  • 이론적으로 LoRA는 neural network의 어느 weight subset에든 적용 가능하다.
  • Transformer에는 self-attention module에 4개의 weight matrices(query, key, vector, output), MLP 단에 2개가 있다. 
  • 간단하게 query, key, vector를 d X d의 single matrix로 처리한다.(실제로는 attention head로 나뉘어 있지만), 또한 단순화를 위해, downstream 작업에서 attention weight만 조정하고, MLP attention은 고정한다.

 

[Practical Benefits and Limitatiosn]

  • 가장 큰 장점은 memory와 storage 사용을 절감한 것이다.
  • large Transformer를 Adam으로 학습할 때, VRAM의 사용을 2/3까지 줄일 수 있었다. (GPT 3 기준 1.2TB → 350GB)
  • 또한, r=4로 정하고, query와 value projection matrices만 adapt 했을 때, checkpoint size가 350GB에서 35MB로 10000배가량 줄었다. 
  • 이는 학습 과정에서 적은 GPU를 사용하게 하고, I/O bottleneck을 줄이게 한다. 
  • 또한, 다른 downstream task로 바꿀 때도, 단순 적은 양의 LoRA weights만 교체하면 되기 때문에 매우 효과적이다. 
  • LoRA도 한계가 있는데, 다른 A와 B를 사용하는 입력을 단일 forward pass에서 처리하는 것이 간단하지 않다는 것이다. 하지만, 이것은 동적으로 LoRA 모듈을 선택해서 해결할 수 있다. 

 

 

실험 결과

[Model 성능]

  • GLUE에서 RoBERTa와 DeBERT에 LoRA를 적용해 보았을 때, 적은 학습 parameter만으로 기존 adaptation 방법을 넘어 finetuning에 필적하거나 더 좋은 성능을 내는 것을 확인할 수 있다. (AdptH: transformer layer당 2개 layer 추가, AdptL : 1 MLP + Layernorm, AdptP: AdptL과 비슷, AdptD: AdapterDrop 방법, BitFit : Bias만 학습, LoRA는 query와 value weight에만 적용)

  • GPT 기반 모델에서 Prefix-layer tuning(PreLayer)보다도 좋은 성능을 보인다. 

 

 

[학습 parameter ]

  • accuracy와 학습해야 하는 parameter 수 관계를 보면, LoRA가 가장 효과적으로 적은 parameter 학습만으로 좋은 성능을 보임을 알 수 있다.

 

 

추가 실험

transformers에 어떤 weights에 LoRA를 적용해야 하는가?

  • query와 key 중 하나만 LoRA를 적용했을 때는 낮은 성능을 보인다. query와 value 둘다에 적용했을 때가 좋은 성능을 보인다. 
  • 아래 실험을 통해, query와 vector를 4 rank 정도만 사용해도 충분한 정보를 담고 있음을 보여준다. 

 

이상적인 r은 몇인가?

  • r이 매우 작더라도 좋은 성능을 보인다. 이것은 adaptation 과정에서 weight matrix의 변화가 매우 저 차원에서도 표현 가능한 정도라는 것을 의미한다. 

 

 

Reference 

Hu, Edward J., et al. "Lora: Low-rank adaptation of large language models." arXiv preprint arXiv:2106.09685 (2021).

반응형

BitNet 배경 설명

  • BitNet은 Microsoft와 칭화대학교에서 23년 10월에 제출한 논문이다. 
  • 커뮤니티에서 해당 논문에 대해 우연히 접하게 되어 리뷰를 하게 되었다. 
  • LLM은 성능 향상을 위해 model의 parameter를 키우는 방향으로 성장하고 있다.
  • Parameter가 늘어나면서, model의 성능은 점점 좋아지지만, 1) model 자체의 용량이 커지면서 필요한 storage 용량의 증가 2) 연산을 위해 필요한 memory의 증가 3) 프로세서의 연산 속도 한계 등의 H/W의 제약이 대두되었다. 
  • 특히, mobile phone과 같은 제한된 resource 내에서 on-device LLM 동작을 위해서는 단순히 H/W의 spec을 늘리는 방향으로 model parameter의 증가세를 따라갈 수 없게 되었다. 
  • 예를 들어, 136B의 parameter 크기를 가지는 GPT-3의 경우 용량을 줄이기 위해, 16bit 연산을 진행함에도 불구하고, 약 272GB의 어마어마한 parameter 용량을 가지게 된다.(심지어, GPT-3는 최신 LLM에 비해 parameter가 많은 것도 아니다.) 이러한 parameter를 on-device 내에서 올리기는 매우 어렵다.
  • AI 분야에서의 weight 연산은 그 자체의 정밀도에 크게 민감하지 않기 때문에, 연산의 정밀도를 내주면서도, parameter의 bit를 줄여가는 방식으로 발전하고 있다. (4bit uint 연산으로 대체 등)
  • 이 논문도 이러한 LLM의 방향성 속에서 극단적으로 Transformer의 연산을 1bit로 진행하고자 하는 시도이다. 

Abstract

  • LLM의 parameter 크기가 커지면서, 에너지 낭비로 인한 환경 문제가 대두되고 있다.
  • 이 논문은 BitNet이라는 확장가능하고, 안정적인 1-bit Transformer 구조를 소개한다. 
  • 특히, 기존 Fully-Connected Layer를 대체할 수 있는 1-bit weight의 BitLeanear를 소개한다.
  • 실험에서 BitNet은 8-bit 방식이나, 16-bit 방식의 Transformer에 필적할만한 성능을 보이면서, 매우 큰 메모리&에너지 절감을 이뤘다. 
  • 또한, BitNet은 일반적 32-bit Transformer와 유사한 성능 Scaling 법칙을 따라서, Language model의 parameter 크기를 늘리는 트렌드에 더 효과적인 방안으로 사용될 가능성이 있다.

 

Introduction

[배경]

  • 최근 LLM은 빠른 성장을 이뤘지만, LLM의 높은 inference cost와 에너지 사용은 감당하기 어렵다. 
  • model의 크기가 커질수록, model parameter를 처리하기 위한 memory bandwidth가 bottleneck이 되어, inference 성능이 제한되기도 한다.
  • 특히, 이런 모델을 분산 시스템이나, 멀티 디바이스 환경에 배포할 때, 디바이스 간 communication overhead(주로 N/W IO)의 영향이 커져, inference latency와 에너지 소비를 유발한다.
  • Model quantization은 이런 문제를 해결하기 위해, 등장했고, 성능을 유지하면서 memory와 연산량을 줄이는 데 성공하였다.

[quantization 연구들 - post training]

  • 현재 존재하는 대부분의 quantization 방법은 post-training 방식이다. (기존 모델로 학습 후, quantization 방식으로 이를 reference로 retraining)
  • 하지만, 정밀도가 더 낮아지면, model은 quantization을 위해 최적화되지 않았기 때문에, 정확도의 큰 손실이 생긴다.

[ quantization 연구들 - quantization aware training ]

  • 또 다른 방법으로는 quantization-aware training 방법이 있는데, post-training과 비교하여 일반적으로 더 높은 성능을 보인다. 
  • 이 방법은 모델을 계속해서 훈련과 fine-tuning이 가능하다. 
  • quantization-aware training의 주요 문제는 최적화에 있다. 즉, 정밀도가 낮아질수록, 최적화가 어렵다는 것이다. 
  • 또한, 이 방법이 LLM의 scaling 법칙(parameter가 커질수록 성능이 좋아진다.)을 따르는지 미지수이다. 

[논문 소개]

  • 이 논문에서는 LLM에 binarization(극단의 quantization) 적용에 초점을 맞춘다. 
  • 앞선 연구들은 주로 CNN에 초점을 맞췄고, 최근 들어 몇 개의 binarized Transformer가 등장하기 시작했다.
  • 하지만, 이런 연구들은 LLM과 꽤 다른 기계번역이나, BERT pretraining에 초점을 맞췄다. (예를 들어, 기계번역은 encoder-decoder 구조를 사용, BERT pretraining은 bidrectional encoder를 사용)
  • 이 논문은 최초의 1-bit large language model에 quantization-aware training을 도입한 최초의 연구이다.
  • 이 논문에서는 BitNet이라는 LLM의 memory와 연산을 효율화하여, LLM에 사용할 수 있는 1-bit Transformer 구조를 제시한다.
  • BitNet은 low-precision binary weights와 quantized activations를 사용하였다.
  • BitNet의 구현은 단순히 Transformer의 linear projection을 대체하면 되기 때문에 매우 간단하다. 

[실험 결과]

  • SOTA quantization 방법들이나, 16-bit Transformer들과 비교해 보았을 때, BitNet은 memory와 에너지 사용을 매우 절감하면서도 preplexity와 downstream task 정확도에서 그들과 비견할만한 좋은 성능을 보였다. 

 

 

BitNet

 

  • 아래 그림과 같이 BiTNet은 Transformer의 self-attention, feed-forward를 쌓는 구조와 비슷한 형태를 가진다.
  • BitNet은 BitLinear라는 연산을 기존 matrix multiplication 대신 사용한다. 이 연산은 1-bit의 model weights를 가진다.
  • BitNet에서는 BitLinear를 제외한 다른 연산들은 8-biit의 값을 사용하는데, 그 이유는 다음과 같다.
    • residual connections과 layer normalization은 LLM 연산에 비해 매우 미미한 cost만 사용한다.
    • 모델의 커질수록 QKV 변환의 연산이 parametic projection보다 훨씬 작다. 
    • samling 수행을 위해, high-precision probability를 사용해야하기 때문에, 입, 출력 임베딩 정밀도 보존한다. 

 

BitLinear

  • 먼저 weight를 +1, -1 양값이 나오는 signum function을 통해, binarize한다. 
  • 표현 가능한 capacity를 늘리기 위해, binarization 전에 weights를 mean 0 값으로 centralize 해준다.
  • scaling factor를 이용하여, binarization 이후에 실제 값과, binarized weight의 l2 error를 줄인다. 
  • weight의 binarization은 아래 식과 같이 표현된다. 

  • 이후, activation을 b-bit precision으로 quantize 한다. 이때, 아래와 같이 absmax quantization 방법을 사용하였다. 

  • non-linear function(activation function) 전에 모든 값에 minimum을 빼줘서, 모두 양수 값으로 만든다. 

  • 위의 quantization function을 이용하여, matrix multiplication은 다음과 같이 구해진다. 

  • W와 x의 mutually independent와 같은 분포를 공유한다는 것을 가정하면, y의 variance는 아래와 같이 구할 수 있다. 

  • quantization 후, 분산 보존을 위해, activation quantization 전에 LayerNorm을 사용한다. 이렇게 하면, output y는 Var(y) ≈ E [LN(x)^2] = 1과 같이 구해진다. 
  • Transformer에서 이것은 SubLN과 정확히 같은 구현을 가진다. 
  • SubLN과 앞선 quantization 방법을 이용하여, BitLinear를 다음과 같이 정의한다. 

 

[Model parallelism with Group Quantization and Normalization]

  • LLM의 핵심요소 중 하나는 여러 device에서 matrix multiplication을 분산처리하는 model parallelism이다. 
  • 이 model parallelism의 전제 조건은 tensor들이 partition dimension으로는 각기 independent 하다는 것이다. 
  • 하지만, 모든 parameter들은 전체 tensor들로부터 계산되기 때문에, 그 전제 자체가 깨진다. 
  • 이를 해결하기 위한 방법으로 각 parameter에 all-reduce operation을 제안한다. 
  • 각 parameter들 간의 communication은 적더라도,  model이 깊어질수록, 전체 synchronization 크기는 커지고, 이로 인해 forward-pass는 느려진다. 
  • SubLN에서도 이 문제는 발생하는데, mean과 variance가 partition 방향으로 구해져야 하기 때문이다. 
  • 이를 해결하기 위해, 이 논문에서는 model parallelism을 효율적으로 구현하는 매우 간단한 방법을 소개한다. 우선, weights와 activations들을 그룹으로 나누고, 각 그룹의 parameter를 독립적으로 추정한다. 이런 방법을 이용하면, 각 parameter들은 별도의 communication 없이 locally 하게 연산이 된다. 
  • 이 방법을 "Group Quantization"이라고 명명하고 다음과 같이 정의한다.
  • weight matrix W(n X m)에 대해, partition 방향으로 G개의 group으로 나눈다. 각 group은 n/G X m의 size를 가진다. 그리고, 각 group은 독립적으로 parameter를 추정한다. 

  • 비슷하게, 각 group에 대한 activation을 구한다. 

  • LN을 위해, group normalization을 적용하는데, 이때 mean과 variance는 각 group에 독립적으로 구하여 사용한다. 

 

 

  • 이 방법으로, 효율적인 Group Qunatization과 Normalization을 이용한 model parallelism이 가능해졌다.

 

 

 

Model Training

 

[Straight-through estimator]

  • 1-bit model 학습을 위해, straight-through estimator(STE)를 이용하여 backpropagation 간 gradient approximatin에 사용했다.
  • 이 방법은 backward pass에서 미분 불가능한 연산(Sign, Clip 등)을 bypass 하는 것이다. 
  • STE는 gradient가 미분 불가능한 연산에 대한 영향 없이 model의 학습을 돕는다. 

 

[Mixed precision training]

  • weights와 activations가 quantized 되어 precision이 떨어졌지만, gradient와 optimizer는 high precision을 유지하고 있어 안정적인 학습과 정확도를 유지한다.
  • 기존 연구를 따라, parameter update를 위한 latent weight를 high precision으로 유지한다. 
  • latent weights는 forward pass 단에서 binarized 될 것이고, inference process에서는 사용되지 않는다. 

 

[Large learning rate]

  • optimization 단에서 1-bit weight 상에서 거의 차이가 나지 않는 small update가 종종 일어난다. 
  • 이 현상이 training 초기 단에서 일어나면, 그 문제는 더 심각해진다. (초기단에서는 빠른 converge가 필요하기 때문에)
  • 이 문제를 해결하기 위해, 여러 방법들을 사용하였는데, 그중 하나가 빠른 optimization을 위해 learning rate를 키우는 것이다. 
  • 저자들은 BitNet이 초반 큰 learning rate를 사용했을 때 convergence 측면에서 큰 이득을 보는 것을 확인했다.

 

Computational Efficiency

  • 가장 중요한, BitNet의 computational 효율성을 energy 측면과 memory 측면에서 확인해 봤다.
  •  특히, LLM의 꽃인 matrix multiplication을 중점적으로 확인했다.  

[Arithmetic operation energy]

  • 기존 연구에 따르면, 기존 산술 연산에서 bit 수에 따른 에너지 소모는 다음과 같이 알려져 있다.

  • 기존 Transformer에서 m X n과 n X p의 matrix multiplication 연산의 energy 소비는 아래와 같이 계산된다. 

  • BitNet에서는 matrix multiplication의 주요 연산이 addition operation이다. (weight가 1bit이므로) BitNet에서 energy 소모는 다음과 같이 계산된다. 

  • 이것은 energy 소비 측면에서 기존 Transformer에 비해 매우 적고, 특히 W1 A8(weight는 1bit, add는 8bit) 구조는 32-32, 16,16 Transformer에 비해 매우 적게 에너지가 소모된다. 

→ multiplication 연산은 add 연산에 비해 cost가 매우 크기 때문에, 많은 compiler들이 multiplication을 add로 바꾸는 방법으로 연산을 optimize 하곤 한다. weight에 1bit를 할당해 줘서, multiplication 연산을 add 연산으로 바꾸는 효과를 볼 수 있는 것이다. 

 

 

FP16 Transformer와의 비교

Setup

  • BitNet 모델을 다양한 size의 language model에서 비교하기 위해, parameter의 size를 125M에서 30B까지 영역에서 비교해 보았다. 
  • model은 English-language corpus(Pile, Common Crawl, RealNews, CC-Stories)를 통해 학습되었고, Sentencpiece tokenizeer로 전처리하였고, vocabulary size는 16K이다. 비교를 위한 Transformer도 동일하게 처리하였다. 

Inference-Optimal Scaling Law

  • 기존 연구에 따르면, Transformer는 연산 cost에 따른 loss는 power law를 따른다. (연산량에 제곱에 비례하게 low가 줄어든다.)
  • 1-Bit BitNet도 이를 따르는지 확인해 보았는데, 결과적으로 BitNet도 어느 정도 power law를 따름을 보인다. 
  • 하지만, 실제 연산 cost와 loss의 관계를 적절히 modeling 하지 못하는데, 기존 연구들은 FLOP을 계산하여 계산량을 추정하였지만, BitNet은 정수 계산이 우세하기 때문에 적용되지 않고, 기존 연구들의 추정은 추론보다는 학습 계산량 추정에 불과하였기 때문이다. 
  • 이 연구에서는 LLM의 효율성을 더 잘 이해하기 위해, inference 단에서 energy 소비와 loss 간의 관계를 모델링하는 Inference-Optimal Scaling Law(아래 왼쪽 그래프)를 소개한다. 
  • Inference-Optimal Scaling Law를 통해, BitNet이 기존 FP16 Transformer에 비해 훨씬 더 높은 scaling 효율성을 가지고 있음을 확인할 수 있다. 또한, FP16 model과 동일한 성능을 얻기 위해 사용되는 energy의 소모량은 매우 적다. 

 

 

 

 

Downstream Task들에서의 비교

  • loss 뿐 아니라, BitNet의 효과성을 확인하기 위해, loss에 비해 더 어려운 capacity를 측정해 본다. 
  • 0-shot과 4-Shot의 downstream task들에서 test를 진행한다. 
  • loss scaling curve와 비슷하게 downstream task는 computation cost가 증가하면 performance가 증가한다. 

 

Stability Test

  • low-bit Transformer의 가장 큰 어려움은 optimization 단에서의 안정성이다. 
  • 따라서, 저자들은 BitNet과 FP16 baseline의 peak learning rate를 바꿔가면서 실험하여, stability test를 진행하였다. 
  • 아래 그래프에서 보듯, BitNet은 FP16에서 불가한 큰 learning rate에서 converge가 가능하였고, 이것은 학습 단에서의 BitNet의 안정성을 증명한다.
  • 이것은 optimization을 큰 learning rate로 진행하여, 빠른 학습이 가능함을 보인다. 

 

 

 

Post-training Quantization과 비교

Setup

  • BitNet과 SOTA quantization 방법들을 비교했다. 
  • 이러한 방법들은 FP16 Transformer model에 대한 post-training을 진행하는 방법들이다. 이러한 방식들은 weight와 activation의 precision을 모두 줄인 경우(Absmax, SmoothQuant)와 weight만 줄인 경우(GPTQ, QuIP) 들로 나뉘는데, 이들과 비교하기 위해 weight-only quantization에는 W4 A16, W2A16을, weight-and-activation quantization에는 W8 A8, W4 A4, W1A8을 이용하였다. 

Result

  • 아래 그래프와 표를 통해, 다른 quantization 방법들과의 성능 비교 결과를 확인할 수 있다. 
  • 공정한 비교를 위해, 모든 model의 parameter size는 6.7B로 통일했다. 
  • 결과를 통해, BitNet이 lower bit를 가지고 있음에도 불구하고, 다른 quantization model에 필적할만한 좋은 성능을 보임을 확인할 수 있다. 
  • zero-shot score에서 BitNet은 inference cost가 훨씬 낮지만, 8bit 연산과 비교될만한  높은 성능을 냄을 확인할 수 있다. 
  • BitNet은 1bit model이지만, weight-and-activation quantization과 weight-only quantization에서 다른 model에 비해 좋은 성능을 보임을 확인할 수 있다. 

 

 

Reference

WANG, Hongyu, et al. Bitnet: Scaling 1-bit transformers for large language models. arXiv preprint arXiv:2310.11453, 2023.

총평

  • 최근, 회사에서 좋은 기회로 computer architecture 교육을 듣고 있어서, 산술 연산의 cost에 대해 관심이 많았는데, 이런 논문을 읽게 되어, 더 재밌게 읽은 것 같다.
  • 실제로 강의를 진행해주시는 교수님께서 matrix multiplication 연산의 비효율성에 대해서 열심히 설명해 줘서 그런지 이 논문의 필요성에 대해 더 공감하게 되었다. 
  • LLM의 용량이 더 줄어서, on-device AI가 더 활발해지는 세상이 왔으면 좋겠다. 
반응형

LLaVa배경 설명

  • LLaVa는 2023년 NeurIPS 발표된 논문으로, multimodal LLM에 대해 다룬 논문이다.
  • multimodal LLM에 대한 부분도 놀랍지만, 코드와 weight를 open source로 발표하여, 많은 관심을 받고 있다.
  •  https://llava-vl.github.io/ 
 

LLaVA

Based on the COCO dataset, we interact with language-only GPT-4, and collect 158K unique language-image instruction-following samples in total, including 58K in conversations, 23K in detailed description, and 77k in complex reasoning, respectively. Please

llava-vl.github.io

 

Abstract

  • 최근 LLM을 이용해 instruction-following data를 생성하여 instruction 능력을 향상하는 연구들이 많이 이뤄지고 있다. 하지만, multimodal 분야에서는 아직 많이 연구되지 않았다.
  • 이 논문에서는 언어만을 사용하는 GPT-4를 이용하여 multimodal language-image instruction-following 데이터를 만든다. 
  • 이를 이용한 instruction tuning을 통해, 이 논문에서는 LLaVa(Large Language and Vision Assistant)라는 vision encoder와 LLM을 연결한 end-to-end model을 소개한다.
  • 초기 실험에서 LLaVa는 multimodal chat 능력에서 multimodal GPT-4에 대한 85.1%의 상대적 score를 보였다. 
  • Science-QA로 finetuning 하였을 때, LLaVA와 GPT-4의 시너지는 새로운 SOTA인 92.53%의 정확도를 보였다. 

 

Introduction

  • 인간은 vision과 language 등 다양한 채널을 통해 세상을 인지한다. 
  • LLM은 최근 다양한 분야에서 좋은 성능을 내고 있지만, text만을 다룬다.
  • 이 논문에서는 "visual instruction-tuning"을 소개한다. 먼저, instruction-tuning을 multimodal space로 확장하여, vision 분야의 general-purpose를 위한 초석을 쌓는다. 
  • 논문의 Contribution은 다음과 같다.
    • Multimodal instruction-following data : 가장 큰 제약은 vision-language instruction-following data가 적다는 것이다. 논문에서는 data 생성 방법을 소개하고, ChatGPT나 GPT-4를 통해  image-text pair들을 적절한 instruction-following format으로 변환하는 파이프라인을 소개한다.
    • Large multimodal models : open-set visual encoder인 CLIP과 LLaMA를 연결하고, 앞서 만든 데이터를 통해, 이 둘을 end-to-end로 학습한다. 특히, GPT-4로 진행했을 때, Science QA multimodal reasoning dataset에 대해 SOTA 성능을 보였다. 
    • Open_Source : Code와 model checkpoint 등을 모두 공개하였다. 

 

GPT를 이용한 Visual Instruction Data 생성

multimodal instruction following 데이터는 부족한데, 최근 GPT model의 text-annotation task에서 성공에서 영감을 받아, ChatGPT/GPT-4를 이용한 multimodal instruction-following 데이터를 생성하는 방법을 제시한다.

 

  • Image와 그에 대한 Caption이 있는 데이터가 있을 때, 가장 간단한 방법은 GPT-4를 통해 Caption을 해석하고, 그에 대한 Question들을 가지고 질문하는 것이다.

→ 쉽게 생각하면, 아래와 같이 이미지 묘사를 넣고 퀴즈를 내는 것이다.

 

  •  하지만, 이렇게 하면 만들어지는 데이터의 다양성이 떨어지고, 깊이 있는 추론을 포함하는 instruction과 response를 만들지 못한다. 이 현상을 완화하기 위해, GPT에 이미지를 묘사할 수 있는 2개 type의 데이터를 제공한 뒤 질문을 진행한다.

1. Image를 묘사하는 Caption 데이터

2. 이미지 내, 물체들에 대한 Bounding Box 데이터(각 box에는 해당 물체의 종류와 위치 정보를 담고 있다. 즉, GPT가 이미지를 input으로 사용하지는 못하지만, text 형태로 이미지 내 물체들의 위치 정보와 종류를 인식할 수 있는 것이다.)

 

  • COCO image를 이용하여 3개 타입의 instruction-following dataㄹ르 생성하였다. 데이터 생성 시에는 인간이 만든 prompt를 이용하여, 데이터를 얻었다. (총 158K)
    • Coversation : 인간과 GPT간 이미지에 대한 Q&A 대화를 생성했다. GPT가 이미지를 보고 있는 것처럼 질문을 했다. 질문에는 물체  종류, 물체 개수, 물체의 행동, 물체의 위치, 물체 사이의 상대적 위치 등이 포함된다. (58K)
    • Detailed Description : Image에 대한 자세한 설명을 요청하는 질문들을 만들어 요청하였다.(23K)
    • Complex Reasoning : 앞선 2개의 데이터들은 이미지 자체에 집중하지만, GPT에 깊은 추론을 요하는 질문들을 진행했다. (77K)

  • 초기에는 ChatGPT와 GPT-4를 모두 활용했으나, GPT-4의 quality가 더 좋아서 GPT-4만 사용했다. 

 

Visual Instruction Tuning

[구조]

  • Model의 주된 구조적 목표는 visual model과 pre-trained LLM을 효과적으로 결합하는 것이다.
  • LLM으로는 LLaMA를 사용하였다. 
  • 우선 이미지(Xv)를 CLIP visual encoder에 넣어서, Feature(Zv)를 뽑고, training 가능한 Linear Layer를 거쳐, Language model의 embedding space와 동일한 dimension의 language embedding token(Hv)를 만든다.  
  • 논문에서는 가볍고 간단한 구조를 생각해서 Linear layer를 사용했다고 하는데, 다른 여러 방식을 사용한 embedding은 future work로 남기겠다고 한다.

[학습]

  • 각 이미지마다 T개의 turn이 있는 conversation data를 생성하였고(첫 번째 Question, 첫 번째 Answer, 두 번째 Question,... 이런 형식으로), 이들을 sequence형태로 연결하였다. 
  • 이때, 첫번째 turn의 경우에는 이미지 Feature를 (1) 질문 앞에 두는 경우, (2) 질문 뒤에 두는 경우를 random 하게 결정한다. 

  • 학습을 위해서는 기존 LLM의 방식처럼 이전 token들을 통해, 현재 token을 추정하는 방식의 학습을 진행한다. 따라서, 학습을 위한 Loss도 기존 LLM과 비슷하다. 수식에 보면, 현재 token 추정 시, 단순 과거 Q&A 데이터뿐만 아니라 이미지 Feature도 함께 사용한다는 것이 기존 LLLM과의 차이이다.

  • LLaVa model 학습에는 2가지 stage가 존재한다.

1. Pre-training for Feature Alignment

  • LLaVa의 구조에서 이미지를 word embedding으로 변환할 때, Linear Layer를 사용하는데, 해당 논문의 관심사가 multi-modal Language Model인 만큼, 이미지를 얼마나 잘 word embedding으로 변환하냐가 매우 중요하다.
  • 이를 위해, CC3M 이미지-텍스트 데이터를 single turn conversation 형식으로 만들어, LLM과 visual encoder의 파라미터를 freeze 한 뒤, Linear layer만 학습을 진행했다.
  • 아마, visual encoder와 LLM은 pre-trained model을 사용했지만, Linear layer는 별도의 학습된 weight를 사용한 게 아니어서 해당 stage가 있는 것으로 생각된다. 

2. Fine-tuning End-to-End

  • visual encoder는 계속 freeze 시켜놓고, LLM과 Linear layer를 같이 학습한다. 
  • 학습에는 앞서 위에서 언급했던 3개 type의 데이터 (Conversation, Detailed Description, Complex Reasoning)와 저자들이 추가적으로 고안한 ScienceQA 데이터를 이용하였다. ScienceQA 데이터는 과학적 질문에 대한 multimodal 데이터 셋이다. ScienceQA는 single turn conversation 형식으로 사용했다.

 

Experiments

[multi modal chatbot]

  • LLaVa의 이미지 이해력과 conversation 능력을 보기 위해, Chatbot 데모를 고안했다. 우선, GPT-4 논문에 있는 Example들을 사용했다.
  • 비교를 위해, prompt와 response는 multimodal GPT-4 논문에 존재하는 것을 사용하였고, 다른 모델과 결과도 해당 논문에서 인용했다. (multimodal GPT-4, BLIP-2, OpenFlamingo) 
  • 놀랍게도, LLaVA는 매우 적은 양의 multimodal 데이터로 학습했음에도 불구하고, 2개의 example에서 multimodal GPT-4와 거의 비슷한 수준의 reasoning 결과를 보임을 확인했다. 이때, 2개의 example들은 LLaVA의 학습에 사용된 이미지의 범위가 아님에도 (학습 시, 데이터를 외운 것이 아니다.) 장면을 이해하고, question에 대한 적절한 대답을 했다.

  • 단순 example 비교 뿐 아니라, LLaVA의 성능을 측정하기 위해, GPT-4를 이용하여, ouput의 quality를 측정했다.
  • 구체적으로 COCO validation에서 30개의 이미지를 무작위로 추출하여, 앞서 언급한 3개 종류의 question을 만들고, LLaVA가 이미지와 해당 question을 기반으로 answer를 내도록 했다. 그리고, question, ground-truth bounding box, captions을 이용하여 GPT-4에게 answer을 내도록 하여, reference를 생성했다. (즉, GPT-4 대비, LLaVA의 성능을 측정하겠다는 뜻)
  • 그러고 나서, GPT-4를 이용하여 helpfulness, relevance, accuracy, detail 정도의 quality를 1~10까지 점수로 나타내게 했다. (점수가 높을수록 좋은 것)
  • 가장 좋은 모델은 GPT-4의 85.1% 수준의 매우 좋은 성능을 보였다. 

 

Reference

Liu, H., Li, C., Wu, Q., & Lee, Y. J. (2023). Visual instruction tuning. arXiv preprint arXiv:2304.08485.

 

총평

  • Open source로 모든 것을 공개했다는 점이 우선 제일 놀라웠다.
  • GPT-4를 이용해서 데이터를 만드는 방식에서 bounding box를 텍스트 형식으로 제공하는 부분에서 어떻게 이런 생각을 할 수 있지라는 생각이 들었다.
  • multimodal LLM을 Q&A에 적용하였는데, Open source로 소스가 제공된 만큼 objective function이라던지, 데이터의 방식에서 금방 새로운 아이디어가 적용되어, 더 다양한 부분에 사용될 수 있지 않을까 싶다.
  • 이미 있는지는 모르겠지만, 소리 등등의 다른 modal에도 적용할 수 있을 것 같다. 
반응형

 

 

InstructGPT 배경 설명

  • InstructGPT는 2022년 OpenAI에서 발표한 논문으로, ChatGPT의 근간이 되는 모델이다.
  • 사실, GPT가 ChatGPT라는 제품 형태로 출시될 수 있던 이유는 해당 논문의 접근 방법(법적인 문제나, 거짓말등을 완화할 수 있는 방법)을 선택한 것이 크지 않나 싶다.

 

Abstract

  • Language Model(LM)의 크기가 커진다고 해서, 사용자의 의도를 더 잘 따르게 되는 것은 아니다. (LM이 거짓말이나, toxic한 말들을 생성할 수 있다.)
  • 이 논문에서는 인간의 feedback을 학습하여, LM이 인간의 의도에 align 될 수 있는 방법을 제시한다.
  • 레이블러가 작성한 prompts와 OpenAI API를 통해 수집된 prompts를 데이터셋으로 사용하여, GPT-3을 supervised learning 방식으로 fine-tuning 한다. 
  • 그 후에 model이 생성한 ouput들을 인간의 feedback으로 순위를 매겨서, 추가 fine-tuning 과정에 사용한다.
  • 최종 모델을 InstructGPT라고 한다. 
  • InstructGPT는 GPT-3보다  NLP 성능은 아주 조금 떨어지지만, 신뢰도와 toxic reduction 관점에서 더 우수하다. 

 

Introduction

[배경]

  • LM에 prompt를 제공하는 방식은 많이 사용되고 있다. 하지만, 이런 모델들은 거짓말이나, 편향적 혹은 toxic 한 말 등 의도하지 않은 대로 표현한다. (Chat-GPT를 사용해 본 사람들은 무슨 말인지 알 것이다.)
  • 이것은 LM의 objective 때문인데, 단순히 webpage 등에서 가져온 문장들로 next token을 예측하는 방식으로 학습되기 때문에, user의 의도는 고려되지 않는다.
  • 저자들은 이러한 user 의도를 고려하지 않는 것을, LM objective가 "misaligned"되어 있다고 말하고, 실제 application에서 활용되기 위해서는 해당 부분에 대한 고려가 필요하다고 한다.

[논문 소개]

  • 논문에서는 LM과 user들의 의도의 align을 위해, 명확한 지시를 제공하는 explicit intention과, 신뢰성있는 문장을 사용할 것 등과 같은 implicit intention을 모두 고려해야 한다고 한다.
  • 이를 위해, fine-tuning 방법을 사용했고, 특히, human feedback에 대한 강화학습을 통해, GPT-3을 fine-tuning하여 다양한 class의 instruction을 따르도록 했다.
  •  이 과정에서 인간이 선호도에 따라 reward를 주었다. 
  • 과정을 소개하면,
    1. screening test를 통해, 40명의 labeler를 고용했다. 
    2. OpenAI API를 통해 수집된 prompts와 labeler가 작성한 prompts를 통해 desired ouput에 대한 데이터셋을 생성하고, supervised learning baseline을 학습하는 데 사용한다.
    3. 그다음, 인간이 model의 ouput들을 평가한 데이터셋을 생성한다.
    4. 데이터셋을 이용하여 인간의 선호도에 따른 reward model(RM)을 학습한다.
    5. 마지막으로, RM을 reward function으로 PPO 알고리즘을 사용하여, supervised learning baseline을 fine-tuning한다. 
  • 이렇게 만들어진 최종 모델을 InstructGPT로 명명한다.

[Evaluation]

  • 주로, 모델은 labeler들이 testset에 대한 model의 ouput을 평가한다.이때, 평가자는 학습과정에 참가하지 않았던 사람이다. 
  • 다양한 NLP task에 대한 evaluation도 진행한다.

 

[결과]

  • Labeler들은 InstructGPT의 ouput을 GPT-3의 것보다 선호한다.
  • InstructGPT의 output은 GPT-3의 것보다 신뢰도가 높다.
  • InstructGPT는 toxicity 면에서 GPT-3보다 조금 개선되었지만, bias 측면에서는 차이가 없다.
  • 인간의 feedback에 대한 강화학습 부분을 수정하여, NLP dataset에서의 성능하락을 최소화했다.
  • Evaluation에서 training set 생성에 참여하지 않은 사람들에게서도 InstructGPT가 좋은 평가를 받은 것은 선호도의 일반화를 의미한다.
  • Public NLP dataset은 InstructGPT가 사용되는 방식을 정확히 반영하지 못한다.
  • InstructGPT가 인간의 feedback에 의한 강화학습에 포함되지 않는 지시에도 일반적으로 잘 따른다. 즉, 훈련에 사용된 분포에만 국한하는 게 아니라, 그 밖에 존재하는 분포에서도 지시에 잘 따른다.
  • 하지만, InstructGPT는 아직 완벽하지 않다.

 

Methods and Experimental details

[Method]

  •  크게 3개의 step을 통해 학습했다. (2, 3번은 계속 반복된다.)
    1. demonstration에 대한 데이터를 모으고, supervised 방식으로 학습한다. (기존 LM 방식)
    2. comparision 데이터를 모으고, reward model을 학습한다.
    3. PPO 알고리즘을 사용하여, LM을 fine-tuning 한다. 

[Dataset]

  • Dataset을 수집한 내용이 나온다. 기본적으로 OpenAI API를 통해 text prompts를 구성했고, user ID당 200개까지만 prompts를 제한하였다. userID 기준으로 testset을 분리했다. (혹시 몰라서, 개인정보로 filtering을 한번 더 했다. 1인이 다계정을 사용하는 것을 막으려고 한 것 같다.)
  • 데이터셋은 다음과 같이 구성되어 있다.
    • Plain : labeler들에게 무작위 task에 대한 질문을 한 결과
    • Few-Shot : labeler들이 만든 지시문과 지시문에 대한 여러 개의 질문과 대답 쌍
    • User-based : User들이 사용 사례를 정하고, 그에 대한 prompts를 생성

[Task]

  • 데이터셋에 포함된 prompt들은 generation, question answering, dialog, summarization, extractions 등 다양하다. 

 

[Model]

 

  • 기본 모델은 GPT-3 pretrained model을 사용한다. GPT-3을 기반으로 아래의 3가지 다른 technique을 사용하여 model을 학습한다.

2023.06.12 - [NLP 논문] - GPT-3 (Language Models are Few-Shot Learners) 논문 리뷰

 

GPT-3 (Language Models are Few-Shot Learners) 논문 리뷰

GPT-3 배경 설명 GPT-3은 요즘 많이 사용하는 ChatGPT의 근간이 된 논문으로, 2020년 OpenAI에서 NIPS에 발표한 논문이다. Language Model의 parameter가 꾸준히 늘어가는 추세였는데, GPT-3에서는 기존의 가장 큰

devhwi.tistory.com

 

1. Supervised fine-tuning (SFT)

  • labeler의 demonstrations를 supervised-learning으로 학습한다. (16 epochs, cosine learning rate decay, dropout : 0.2)

 

2. Reward Modeling (RM)

  • SFT model의 마지막 layer를 없애서 사용한다.
  • 동일 input에 대한 2개의 model ouput들 사이의 comparision을 학습한다. (rewards는 다른 응답에 비해 선호될 log odds로 정함) 
  • 몇 개의 ouput에 대해서 비교할 것인지를 K라고 하면, 비교는 k*(k-1)/2번만큼 이뤄져야 한다.
  • 이때, 단순히 전체 prompt 간의 비교 값을 shuffle 하여 학습하면, overfitting이 발생한다. 이를 해결하기 위해, 한 batch에 하나의 prompt에 대한 모든 comparison이 담기도록 학습했다. 
  • 학습을 위한 loss function은 다음과 같다.

r(x, y) :  scalar output of the reward model from x,y

y_w: 더 선호되는 ouput

y_l : 덜 선호되는 output

 

 

3. Reinforcement Learning (RL)

  • SFT model을 PPO(Proximal Policy Optimization) 알고리즘을 통해 학습한다. 
  • 아래의 objective가 최대화되는 방향으로 RL 학습을 진행한다.

π^RL : RL policy로 학습된 모델

π^SFT : SFT로 학습된 모델

  • 해당 논문에서는 γ=0으로 한다.

 

[Evaluation]

  • 모델이 얼마나 "align" 되었는지 확인하기 위해, align의 의미를 먼저 정의한다.
  • InstructGPT의 목적이 user의 의도를 반영과 일치하는 언어 모델을 만드는 것이기 때문에, model의 align을 helpful, honest, harmless로 정의한다. 
  • 모델이 helpful을 평가하기 위해서는 labeler의 선호도 평가에 의존한다.
  • 모델의 honest를 평가하기 위해서, 모델이 진실을 답하는지 거짓을 답하는지 평가한다. 이를 위해, closed doamin task에 대해 모델이 거짓말하는 정도를 평가하고, TruthfulQA 데이터셋을 이용하여 평가한다. 
  • 모델의 harm을 평가하기 위해, labeler가 ouput이 context에 적절한지 여부, 특정 집단에도 ㅐ한 비하를 포함하였는지, 성적이거나 차별적인 콘텐츠를 포함하였는지의 여부를 평가한다. 또한, RealToxicityPrompts와 CrowS-Pairs 데이터셋을 이용하여 평가한다.
  • InstructGPT의 의도에 맞게 fine-tuning 하는 것은 GPT-3 모델의 성능을 떨어뜨릴 수 있다. 이를 평가하기 위해, GPT-3에 제출된 prompt를 이용하여 성능을 평가한다. 또한, public NLP dataset으로도 평가한다.

 

Results

  • Labeler들이 InstructGPT의 output을 GPT-3의 것보다 선호한다. 

  • InstructGPT 모델은 신뢰도 측면에서 GPT-3에 비해 향상이 있었다.

  • InstructGPT 모델은 GPT-3보다 toxicity를 줄일 수 있었지만, bias는 줄이지 못했다.

  • InstructGPT는 GPT-3에 비해, align-tax(align을 위해 NLP의 성능감소가 생기는 것)가 있지만, 그렇게 크지 않다.

그 외 

  • 논의해 볼 사항과 미래 영향, 해결해야 할 과제들이 적혀있다. (철학적인 내용인 것 같아 별도로 적지는 않는다.)

 

Reference

Ouyang, Long, et al. "Training language models to follow instructions with human feedback." Advances in Neural Information Processing Systems 35 (2022): 27730-27744.

 

 

총평

Chat-GPT의 가장 큰 단점으로 지적받는 '거짓말'에 대한 해결 방법을 제안한 논문이다. 이 논문을 읽기 전에는 단순히 학습 데이터를 filtering 하는 것이 방법 아닐까 하는 생각이 있었는데, 데이터를 filtering 하면 cost가 매우 크고, 데이터가 편향될 수 있어서 이 문제를 어떻게 풀까 고민했었다. 근데 이 논문은 매우 간단한 방법으로 (물론 prompt 등 데이터 생성은 간단하지 않지만) 이 문제를 완화하였다. 물론, 아직 갈 길이 멀지만, GPT-1부터 논문의 마지막 부분에 항상 존재하던, 발생할 수 있는 문제들에 대해 해결을 방법을 제안한 의미 있는 논문이라고 생각한다. 

반응형

 

 

PaLM 배경 설명

  • PaLM은 google에서 2022년에 발표한 LLM 관련 논문이다.
  • GPT 이후의 NLP 분야의 거의 모든 논문이 그랬듯, Model Paramter를 더 크게 늘렸고, GPT-3의 흐름을 따라, task-specific 한 model이 아닌, 다양한 NLP 분야를 cover 하는 모델로 학습된다.
  • 사실 GPT 등장 이후로 LLM 모델에서의 구조 변화는 크게 없다. Model parameter를 계속 늘리고, 이에따라 성능은 계속 좋아진다.  따라서, 기존 LLM과 달라진 부분에 집중하여 논문 리뷰를 시작한다.

 

Abstract

  • Language Model은 few-shot 방식을 사용하여, task-specific 학습에 필요한 데이터의 양을 줄이면서, 좋은 성능을 보여줬다.
  • few-shot에서 scaling의 효과를 확인하기 위해, 540 billions parameter로 구성된 Transformer 기반의 Pathways Language Model(PaLM)을 소개한다.
  • 이 논문에서는 PaLM을 multiple TPU Pods 들을 효율적으로 학습할 수 있는 "Pathway" 방법을 이용하여 학습한다.
  • 여러 language understanding과 generation 분야에서 SOTA를 달성하여, scaling의 장점을 보여준다. 
  • 특히, 몇가지 task들에서는 finetuned 방식의 SOTA를 능가하는 좋은 성능을 보여주고, BIC-bench에서 인간의 능력을 뛰어넘는다.
  • BIC-bench에서 model의 scale에 따라 performance가 discontinuous 한 향상을 보여준다. 
  • 또한, PaLM은 multilingual task와 code 생성에서 좋은 성능을 보인다. 

Introduction

  • 최근(이 당시) 몇년동안, 언어 이해와 생성 분야에서 large language model을 pre-training과 fine-tuning 방식으로 학습하는 방식으로 큰 성능 향상을 이뤘다.
  • 하지만, 이러한 모델들은 finetuning 과정에서 상당한 양의 task-specific 데이터를 필요로 하고, task에 맞는 학습을 위한 cost가 든다. 
  • GPT-3은 large autoregressive language model들로 few-shot을 진행하는 방식으로 학습하여, 많은 양의 task-specific 데이터와 model parameter updating 과정이 필요 없도록 하였다. (GPT-3 관련 내용은 아래 링크 참조)

2023.06.12 - [NLP 논문] - GPT-3 (Language Models are Few-Shot Learners) 논문 리뷰

 

GPT-3 (Language Models are Few-Shot Learners) 논문 리뷰

GPT-3 배경 설명 GPT-3은 요즘 많이 사용하는 ChatGPT의 근간이 된 논문으로, 2020년 OpenAI에서 NIPS에 발표한 논문이다. Language Model의 parameter가 꾸준히 늘어가는 추세였는데, GPT-3에서는 기존의 가장 큰

devhwi.tistory.com

  • 그 후로, GPT-3 기반의 후속 모델(GLam, Gopher, Chinchilla, LaMDA 등)들이 등장해 좋은 성능을 보였다.
  • 이러한 모델들의 성능 향상을 위한 주요 접근 방법은 다음과 같다.
    1. model의 depth와 width를 늘린다. (model size를 늘림)
    2. model의 학습을 위한 token의 양을 증가
    3. 다양한 dataset을 사용하거나, dataset을 정제
    4. sparsely activated module등으로 학습 cost는 유지하면서 model capacity를 증가
  • 이 논문에서도 위의 방식들을 따라, 780 billion token을 이용하여 540 billion parameter를 가진 Transformer 기반 model을 학습한다.
  • 이를 위해, "Pathways"라는 수천개의 acclerator chip들 사이에 large network 학습을 효율적으로 해주는 방식을 도입한다. 
  • 이 논문에서 소개한 모델 PaLM은 natural language , code, mathematical reasoning 등의 task들에서 few-shot 방식의 SOTA를 달성했다. 

 

Model Architecture

  • PaLM은 몇가지 변경을 제외하고. Transformer의 decoder-only 모델을 그대로 따른다. 
  • 기존 Transformer 모델들과 달라진 점은 다음과 같다.
    • SwiGLU Activation : SwiGLU는 Relu를 대체하기 위해, 구글이 개발한 Swish Activation 함수에 GLU(Gated Linea Unit)을 적용한 함수이다. 사용한 이유는 기존 연구들에서 성능이 좋아서라고 한다.
    • Parallel Layers : 병렬 처리를 해, 기존의 Transformer block의 식을 바꿨다. Large Scale에서 15% 정도 학습 속도가 빠르지만, 성능 하락은 모델이 커질수록 거의 없다고 한다. 
      • 기존  $$ y = x+ MLP(LayerNorm(x+Attention(LayerNorm(x)))) $$
      • 변경  $$ y = x+ MLP(LayerNorm(x))+Attention(LayerNorm(x)) $$
    • Multi-Query Attention : query, key, value의 feature size가 [k, h]인 기존 transformer 구조와 달리, key와 value를 [1, h] 크기로 사용한다. (query는 [k, h]) 이것이 model 성능에 영향을 미치지 않으면서, 학습 시간 cost 절감에 큰 역할을 한다. 
    • RoPE Embedding : position embedding에 long-sequence 처리에 유리한 RoPE Embedding을 사용하였다. 
    • Shared Input-Output Embeddings
    • No Biases : Bias를 사용하지 않았다. 이것이 large model 안정성을 높여준다고 한다.
    • Vocabulary : SentencePiece(256k token)을 사용했다. 

 

Model Scale Hyperparameters

  • 3개의 모델(8B, 62B, 540B)을 사용했다. 

 

Training Dataset 

  • PaLM의 pretraining dataset으로는 high-quality의 780 billion의 token이 사용되었다. 
  • dataset은 webpage, books, Wikipedia, news articles, source code, social media conversation등 다양한 소스에서 가져왔다. 
  • 특히, Github에서 Source code를 가져왔는데, Java, HTML, JavaScript, Python, PHP, C# 등등의 196GB의 소스 코드를 포함한다. 또한, Source code 수집 시, 중복을 제거하여 다양한 코드 등을 수집했다.

 

Training Infrastructure

사실 PaLM이 주목받는 이유가 Pathways를 사용하는 해당 Chapter 때문인것 같다. 아마도, Pathways를 논문으로 굳이 읽는 이유는 점점 늘어나는 LLM의 학습을 위해 엔지니어링의 최강자인 Google은 어떤 방법을 사용했을까? 때문일 것이다. 

 

  • 우선, PaLM의 codebase는 JAX와 T5X이고 TPU v4 Pods를 통해 학습되었다. PaLM 540B는 data center network(DCN)로 연결된 2개의 TPU v4 Pods를 통해 model parallelism과 data parallelism을 사용해서 학습되었다. 
  • 각 TPU Pods들은 3072개의 TPU v4 chip들로 구성되어 있고, 768 hosts에 연결되어 있다. (즉, 총 6148개의 chip과 1536개의 host가 존재한다.)
  •  이 논문에서는 pipeline parallelism(layer 등의 단위의 parallelism을 사용)을 사용하지 않은 것을 큰 장점으로 여기는데, pipeline parallelism에는 몇 가지 문제가 있기 때문이다.
    • pipeline 구조에서는 pipeline이 비어서 쉬게되는 devices들이 생긴다.
    • 각 micro-batch의 weight를 불러오기 위해, 높은 memory bandwidth를 요구한다. 
    • 일부 케이스에서는 software complexity가 늘기도 한다. 
  • 이 논문에서는 pipeline 없이 PaLM 540B를 6144개의 TPU chip을 사용하여 학습했다는 것을 강조한다. 
  • 각 TPU v4 Pod은 model parameter들을 full copy 한다. (3072개 chip에 12개 방법의 model parallelism과 256개의 data parallism을 사용한다. 2가지 parallelism을 동시에 사용하는 것을 2D parallelism이라고 한다.)

[학습 방법]

  • forward pass에서는 data parallel axis로 weight를 모으고, 각 layer로부터 하나의 fully sharded activation이 저장된다. 
  • backward pass 때,  forward pass에 사용되었던, activation을 재사용하는 것이 아니라, activation을 다시 계산해서, 재생성하여 사용한다. 이것은 더 큰 배치에서 학습 처리량을 높이도록 해준다. 

[Pathways]

  • PaLM은 이름대로, TPU v4 Pod들에 Pathways system을 사용한다.  PaLM은 Pathways의 client-server 구조를 사용하여 pod level에서의 2가지 방법의 data parallelism을 구현한다. 
  • Python client가 training batch의 절반씩을 각 pod으로 보내고, 각 pod은 forward와 backward computation을 data, model parallelism을 이용해 계산한다.
  • Pod들은 gadient를 다른 pod에 보내고, 각 pod은 local(자신이 만든 것)과 remtoe(다른 pod으로부터 받은 것) gradient를 모아서, parameter update에 사용한다. 
  • 이런 구조는 single Pod을 이용한 학습보다 정확히 2배의 throughput 증가는 일어나지 않고, 약 1.95배 정도의 throughput 증가를 이끄는데, 이것은 network적 이슈와 관련있다. 따라서, network 설계를 열심히 했다고 한다. 

 

 

Training Efficiency

  • 이전의 많은 language model에서는 accelerator efficiency를 hadware FLOPs utilization(HFU)를 통해 진행하였다. 이것은 이론적 peak FLOP 개수로 관찰되는 FLOP 개수를 나눈 것이다.
  • 하지만, 이 지표는 약간의 문제가 있다.
    • hardware FLOP의 갯수는 system-depedent와 implementation-dependent, compiler의 design chice에 따라 달라진다. 
    • 관찰되는 FLOP 갯수는 count와 track에 사용되는 방법론에 따라 달라진다. 이것은 hardware performance를 통해 측정되는 것이 아닌, analytical accounting을 사용하기 때문이다. 
  • 이러한 문제가 있어서, LLM training efficiency를 측정하기에 HFU는 충분치 않다.
  • 이 논문에서는 implementation indepenet 하고 system efficiency에 따라 정확한 비교를 가능하게 해주는 model FLOPs Utilization(MFU)를 제시한다. 
  • MFU는 observed throughput(tokens-per-seconds)를 이론상 최대 system operating peak FLOP으로 나눈 값이다. 
  • 특히, 이론상 최대 throughput은 forward와 backward pass를 계산하면 된다. 
  • 여하튼, 본인들이 만든 지표로 비교해보았을때, PaLM이 가장 효율적인 연산을 하고 있다고 한다. 

 

Evaluation

  • 역시, parameter를 많이 사용해서, 기존 few-shot 기반의 SOTA들을 모두 갱신하였다.

  • 심지어 SuperGLUE등에서는 fine-tuning 기법들과 맞먹을 정도로 좋은 성능을 보여준다. 

  • Reasoning : GSM8K에서 8-shot evaluation을 진행했을 때, 기존 SOTA인 GPT-3을 이긴다.

  • Few-shot의 장점인 다양한 분야에 적용성에서, 놀랄만한 부분은 Code를 고치는 것이나 Translation에서도 좋은 성능을 보인다는 것이다. 

 

Conclusion

  • 이 논문에서는 few-shot LM 방향으로의 연장선인 540B parameter로 구성된 PaLM을 소개한다. 
  • PaLM은 NLP 29개 분야 중 28개에서 few-shot SOTA를 기록했다. 또한, BIG-bench에서 5-shot LaLM은 인간의 평균 performance보다 높은 성능을 보였다. source code 이해나 생성에서도 좋은 성능을 보였다. 
  • reasoning에서 chain-of-though prompting을 사용했을 때, 좋은 모습을 보였다. 
  • 이에 따른 결론은 다음과 같다. 
    • few-shot NLP에서 scale에 따른 성능 향상은 아직 끝나지 않았다. (log-linear하게 증가했다.) 이 성능 향상은 사실은 discontinuous 하다. 
    • reasoning task들에서 보인 성과들은 중요한 의미를 갖는다. 이것은 model의 결정 과정에서 어떤 과정을 이용하여 최종 결과가 나왔는지를 end user에게 설명할 수 있게 할 것이다. 아직 멀었지만, 잘 만든 prompt가 이것을 가속화할 것이라고 한다. 
    •  network architecture와 training schema에 많은 여지를 남겼다. Pathways를 시작으로 많은 구조들이 생겨날 수 있을 것이다. 

 

Reference

Chowdhery, Aakanksha, et al. "Palm: Scaling language modeling with pathways." arXiv preprint arXiv:2204.02311 (2022).

 

 

총평

  • 읽은 논문 중, 비교적 최근 논문인데, 이쯤때부터, 모델 크기가 커질수록 성능은 무조건 커진다는 가정하에, 어떻게 빠르고 효율적으로 학습할 것인가 하는 문제에 봉착한 것 같다.
  • 적어도 NLP 분야에서는 앞으로 엔지니어와 H/W의 비중이 점점 더 커질 것 같다. 
반응형

OpenAI

 

GPT-3 배경 설명

  • GPT-3은 요즘 많이 사용하는 ChatGPT의 근간이 된 논문으로, 2020년 OpenAI에서 NIPS에 발표한 논문이다. 
  • Language Model의 parameter가 꾸준히 늘어가는 추세였는데, GPT-3에서는 기존의 가장 큰 모델보다 거의 10배 정도의 많은 parameter를 넣을 정도로 큰 모델을 사용하였다.
  • Model scaling-up을 통해 few-shot에서도 Task-Specific 한 기존의 finetuning 모델들의 성능에 필적하는 성능을 보여주었다. (이 시도가 현재 ChatGPT를 만든 것 같다.)

 

Abstract

  • 최근 NLP task에서 large corpus의 pre-training을 기반으로한 언어모델들이 큰 효과를 내고 있다. 
  • 하지만, 대부분의 모델은 task-agnostic의 재학습이 필요하고, 이 과정에서 task에 맞는 수많은 학습 데이터들이 필요하다.
  • 이 논문에서는 언어모델의 사이즈를 키워서, 현재 task-agnostic SOTA 모델들의 성능에 필적할수 있을 정도로 few-shot 모델 성능을 향상했다.
  • 특히, 175 billion parameter로 구성된 GPT-3을 few-shot으로 학습하였는데, 다양한 NLP 분야에서 좋은 성능을 보였다.
  • 추가적으로 GPT-3은 인간이 작성한 기사와 구분하기 어려운 뉴스 샘플등을 생성할 수 있다는 사실을 발견하였고, 이 발견과 사회적 영향에 대해 논의한다.

Introduction

[문제]

  • 최근 NLP 분야에서의 pre-trained language model의 트렌드는 다양하고 많은 분야에서 큰 향상을 일으켰지만, 이러한 모델들은 task-agnostic 한 방식을 채택하고 있어, 원하는 task에 대한 수많은 데이터셋과 fine-tuning 과정을 필요로 한다.
  • 이러한 방식은 아래의 문제가 있다.
    1. 실용적 관점에서 모든 새로운 task에 대해서 labeling 된 데이터가 필요하여, 언어모델의 확장성을 제한한다. 각 task 학습을 위한 dataset이 필요한데, 그것을 모으는 것은 매우 어렵고, task를 확장할 때마다 반복해야 한다. 
    2. 큰 모델에서 좁은 분포의 데이터를 학습시키면, 잘못된 상관관계를 학습할 수 있다. pre-training 단계와 fine-tuning 단계를 사용한 모델들에서 이런 문제가 있는데, 이러한 모델들은 일반화가 잘 안 되는 문제가 있다.
    3. 인간은 새로운 lagnuage task를 배우기 위해, 많은 데이터를 필요로 하지 않는다는 점이다. 인간의 언어능력에는 일반화와 적용을 자주 활용하는데, NLP 모델도 이러한 인간의 언어 능력과 동일한 수준이 되어야 한다. (task-agnostic은 그렇지 않다는 뜻인 듯하다.)
  • 이러한 문제를 풀기 위해, meta-learning을 활용한 방법들이 있다. 몇 가지 방법들이 등장했지만(특히, GPT-2), fine-tuning 방법에 비해 성능이 매우 떨어진다. 
  • 한편, Language modeling의 최근 트렌드는 model의 capacity를 키우는 것이다. 이러한 트렌드에서 model의 parameter를 키울수록 언어모델의 성능이 향상되는 경향이 있음을 볼 수 있다. (이전까지 17 billion paramter까지 등장)

[모델 소개]

  • 이 논문에서는, 175 billion의 parameter를 사용하는 "GPT-3"이라는 language model을 실험하여, model의 parameter가 커질수록 성능이 향상됨을 확인한다. 
  • 또한, GPT-3을 각각 few-shot learning, one-shot learning, zero-shot learning을 통해 학습하고, 비교해 본다.

[실험 결과]

  • Few-shot에서 단어에서 관계없는 symbol을 지우는 간단한 task를 수행해 보았을 때, task에 대한 설명이 많을수록(zero에서 few shot으로 갈수록), 성능이 향상되었고, model의 parameter가 많을수록 성능이 급격하게 향상되는 것을 보인다.

  • GPT-3이 약한 분야도 있는데, inference task나 reading comprehension과 같은 분야이다.

 

GPT-3 Approach

  • model, data, training을 포함한 pre-training 과정은 model의 크기, dataset의 다양성, 길이, 크기가 커졌다는 것을 빼고는 GPT-2의 방법과 비슷하다.

2023.05.27 - [NLP 논문] - GPT-2 (Language Models are Unsupervised Multitask Learners) 논문 리뷰

 

GPT-2 (Language Models are Unsupervised Multitask Learners) 논문 리뷰

GPT-2 배경 설명 GPT-2는 OpenAI에서 2019년 발표한 논문이다. GPT-2는 기존의 대규모 LM 구조인 GPT-1의 구조를 따르지만, 학습을 Unsupervised Multitask Learning을 사용하여, 범용성 있는 자연어처리를 할 수 있

devhwi.tistory.com

  • in-context learning도 GPT-2 논문의 방법과 비슷하지만, context 내에서 구조적으로 조금 다른 몇 가지 setting을 시도해 볼 수 있다.  task-specific 데이터를 얼마나 활용하냐에 따라, 4가지 setting으로 분류한다.
    • Fine-Tuning (FT) : 최근에 가장 일반적인 방법이다. 원하는 task에 맞는 데이터셋을 통해 학습한다. 이 과정에서 수많은 데이터가 필요하다. FT의 장점은 성능이 매우 좋다는 점이다. 가장 큰 단점은 각 task를 학습할 때마다, 수많은 데이터가 필요하다는 점이다. GPT-3도 FT로 학습할 수 있지만, 논문의 목적은 성능이 아니기 때문에, 별도로 학습하지는 않았다.
    • Few-Shot (FS) : inference 과정에서 conditioning으로 이용할 수 있는 약간의 task에 대한 설명이 주어지지만, 직접 학습에 활용하지는 않는다.  FS는 task에 대한 설명과 함께 task에 대한 K개의 example들이 제공된다. (K를 model의 context window라고 하고, 대략 10~100의 값을 갖는다.) FS의 장점은 task-specific 한 데이터를 많이 줄일 수 있다는 것이고, narrow distribution에서 학습할 수 있는 잘못된 상관관계에 대한 가능성이 줄어든다는 것이다. 단점은 FT 방식의 SOTA에 비해 성능이 떨어진다는 점이다. 또한, task specific한 데이터가 여전히 필요하다는 점이 문제이다. 
    • One-Shot (1S) : task에 대한 example이 하나만 주어진다는 것이 Few-shot과 다른 점이다. 굳이 one-shot을 few-shot과 나누는 이유는 one-shot이 인간의 커뮤니케이션과 비슷하기 때문이다. 
    • Zero-Shot (0S) : 어떤 task인지에 대한  설명만 있고, 아무 example이 주어지지 않는다. 이 방법은 편의성과 확장성, 잘못된 상관관계를 피할 수 있는 점등에서 매우 좋지만, 학습이 매우 어렵다. 

[Model]

  • Sparse Transformer 논문의 sparse attention을 사용한 것 외에는 GPT-2와 같은 모델과 아키텍처를 사용하였다. 
  • model size와 성능 간의 상관관계 확인은 ㄹ위해, 8가지 다른 size의 모델을 사용했다. (125 millions ~ 175 billions)
  • 이 중, 제일 큰 모델을 GPT-3이라고 한다. 

GPT-3 8개의 다른 parameter size 모델

[Training Dataset]

  • 데이터가 풍부한 Common Crawl Dataset을 사용하였지만, 필터링되지 않은 데이터가 많이 섞여있어서, 데이터셋의 품질을 향상하기 위한 3가지 방법을 추가하였다.
    • Common Crawl Dataset에서 high-quality reference corpora와 비슷한 데이터들을 다운로드하였다.
    • 문서 수준에서 퍼지 일치 기반 중복 제거를 활용하여, overfitting 등을 방지하였다.
    • 이미 알려진(앞선 NLP 논문등에서 활용), high-quality reference corpora 데이터들을 데이터셋에 포함하였다.
    • 단순히 양에 따라서 가중치를 둔 것이 아닌, 데이터셋에 품질이 높을수록 높은 가중치를 두었다. (아래 weight in training mix에 해당) 

GPT-3에서 활용한 데이터셋

[Training Process]

  • large model일수록 큰 batch size를 사용하지만, 적은 learning rate를 필요로 한다. 
  • 학습과정에서 gradient noise scale을 측정하여, batch size 선택에 사용하였다.
  • Out of memory를 막기 위해, model parallelism을 사용했다.  

 

Results

  • size가 각기 다른 8개의 GPT-3 모델의 learning curve를 비교하였는데, size가 큰 모델일수록 언어모델의 성능이 향상됨을 보인다.
  • 이 과정에서, traigning compute와 performance는 power-law를 따른다고 알려졌는데, 모델 size가 일정 수준 이상에서는 power-law의 기댓값보다 더 좋은 성능을 보였다. 
  • 이것이 training dataset을 cross-entropy를 통해 학습해서(외워버려서) 그런 것 아닐까 하는 의심이 들 수도 있지, cross-entropy가 다양한 NLP 분야의 task에서 일관적으로 성능 향상을 보임을 보인다. 


1. Language Modeling

  • Penn Tree Bank(PTB) dataset에서 zero-shot perplexity를 계산하였다. 
  • training dataset에 포함된 Wikipedia와 관련된 4가지 task들은 제외했다. 
  • 새로운 SOTA가 되었다.

[LAMBADA]

  • LAMBADA dataset은 text 내에서 long-range dependency를 테스트한다. (context를 읽고, sentence의 마지막 word를 추정하는 문제)
  • Zero-Shot 환경에서 기존 SOTA보다 8%가량 좋은 성능을 보였다.

[HellaSwag]

  • HellaSwag dataset은 story와 몇 가지 instruction이 주어지면, 가장 best의 ending을 뽑는 문제이다. 
  • StoryCloze dataset은 story에 따른 가장 그럴듯한 ending sentence를 뽑는 문제이다.
  • 둘 다, SOTA보다는 떨어지지만, 좋은 성능을 얻었다.


2. Closed Book Question Answering

  • Closed Book Question Answering은 다양한 지식에 대한 context가 없는 답변을 생성하는 Task이다.
  • Model Size가 커졌을 때(GPT-3)에서 SOTA를 넘어서는 결과를 보여주었다. (아마도, task 자체가 광범위함을 포함하고 있어서, task-specific 학습이 크게 힘을 발휘 못하는 것 같다.)


3. Translation

  • Translation의 학습에서는 93% 텍스트가 영어였고, 7% 만 다른 언어들을 포함하였고, 별도의 목적함수를 사용하지 않았다. (그냥 언어 구분 없이 똑같이 학습하였다.)
  • Zero-Shot 환경에서는 기존 Zero-Shot들보다 오히려 성능이 낮지만, Few-Shot 환경에서는 특정 task에 한해서는 Supervised SOTA를 넘기도 하였다. 


4. Winograd-Style Task

  • 해당 Task는 대명사가 지칭하는 것을 맞추는 문제로, 추론 능력을 확인할 수 있다. 
  • SOTA에 비해서는 낮지만, RoBERTa에 근접할 정도로 좋은 성능을 보인다. 


5. Common Sense Reasoning

  • 특정 데이터셋에서는 SOTA를 보였지만, 다른 데이터셋에서는 낮은 성능을 보여주었다. 
  • 전체적으로 OpenBookQA를 제외한 데이터셋에서는 Task 설명이 큰 효과를 보지 못했다.


6. Reading Comprehesion

  • GPT-3이 약한 분야이다. CoQA를 제외하고는 SOTA와 매우 큰 성능 차이가 난다. 


7. Super GLUE

  • BERT와의 비교를 위해 SuperGLUE를 Test 한다. 
  • SOTA에는 못 미치지만, 대부분의 task에서 BERT와 필적하거나, 오히려 더 높은 성능을 보여주기도 한다.


이외, 많은 Task들이 있지만, 대체적으로 비슷한 경향을 보여줘서, Result는 여기까지만 넣도록 하겠다.(힘들다.)

다만, 숫자 연산이나 뉴스 기사 생성, 문법 교정 등 다양한 분야에서 좋은 성능을 보여준다. 

 

Memorization에 대한 검증

  • GPT-3의 학습 데이터가 매우 방대하고, Web Crawling을 통해 만들어졌기 때문에, Training dataset에 원하는 Benchmark의 데이터가 포함되어 있을 가능성이 있다. (Data Contamination이라고 표현한다.) 즉, memorization으로 위의 좋은 performance를 낼 수 있다는 것이다. 
  • Training Curve를 보았을 때, 학습에 따라 Validation Loss와 Train Loss가 비슷한 추세로 줄어드는 것을 볼 수 있는데, 이것은 memorization이 없다는 증거가 된다. (특정 task를 외웠으면, train loss만 급격히 줄어드는 구간이 있을 것이기 때문에)

  • 이것 말고도, memorization을 증명하기 위해, 데이터셋을 clean 하는 실험이 있는데,  실험 내용이 사실 이해가 잘 안 간다. 여하튼 Data를 Clean해도 성능에 딱히 영향이 없기 때문에, memorization은 아니라는 뜻이다.

Limitations

  • GPT-3는 좋은 성능을 보여주었지만, 몇 가지 한계가 있다.
    • 성능적 한계 : 몇가지 NLP task에 대해서는 좋지 않은 성능을 보여준다.
    • 구조 & 알고리즘의 한계 : GPT-3은 bidirectional 구조나 denoising 같은 NLP 분야의 성능을 향상하는 방법들은 고려하지 않았다.  
    • 본질적 한계 : 본 논문은 LM을 scaling up 하는 것에 집중하였는데, pretraing objective에 근본적 한계가 있다. 현재 obejective는 모든 token을 동일한 가중치를 준다. 즉, 중요한 token을 예측하는 것이 NLP 성능 향상에 더 중요하지만, 모두 동일하게 학습한다.  단순 Scaling을 떠나서(한계가 있기 때문에), NLP의 목적을 위한 objective 등을 학습해야 할 것이다.
    • pre-training 과정에서 비효율성 : GPT-3은 인간에 비해 너무 많은 텍스트를 학습한다. 학습과정에서 효율성을 향상해야 한다.
    • Few-Shot learning의 불확실성 : 실제로 GPT-3이 Few-Shot Learning을 통해 학습한 것인지 모호하다. 
    • Expensive Cost :  GPT-3의 parameter가 매우 많기 때문에 training & inference cost가 매우 크다. 
    • 설명 불가능 : 모든 Deep Learning이 겪는 문제처럼 GPT-3도 결과에 대한 해석이 불가능하다. Training data에 대한 bias가 발생할 수 있다.

Reference 

Brown, Tom, et al. "Language models are few-shot learners." Advances in neural information processing systems 33 (2020): 1877-1901.

총평

  • 논문이 매우 길고, 저자도 실험도 매우 많다. 그래서 그런지 읽기 매우 힘들었다. (내 착각인지 모르겠지만, GPT-2와 다르게 논문이 약간 문과틱 감성이 난다.)
  • 실험이 매우 많고, 한계와 사회적 파급력 등에 대해서 매우 자세하고 광범위하게 다뤄서, 정말 좋은 논문이다.
  • 다만, Parameter가 매우 크고, Task example이 정교하게 만들어진 것 같아, 재현을 하기는 어려울 것 같다. 

 

+ Recent posts