오픈소스 LLM의 패러다임 전환: Meta AI의 LLAMA2 — (1) overview

daewoo kim
17 min readJul 29, 2023

드디어 2023년 7월 19일 LLAMA2가 연구 및 상업적 용도로 사용할 수 있는 무료 버전으로 일반에게 공개되었다. (LLAMA1이 발표된지 겨우 5개월만에 2번째 버전이 릴리즈되었다.) 그리고 Microsoft와 파트너쉽으로 MS Azure 개발자들은 LLaMA2를 MS Azure를 사용하여 빌드할 수 있다. 이로서 MS는 독점 모델(OpenAI의 GPT)과 오픈소스 모델(Meta AI의 LLaMA)를 동시에 지원하게 되었다. (MS의 유연함은 정말 놀라울 정도이다.)

필자는 LLAMA2 논문에 대해 2차례에 거쳐 연재하도록 하겠다.

오픈소스 LLM의 패러다임 전환: Meta AI의 LLAMA2 — (1) overview

오픈소스 LLM의 패러다임 전환: Meta AI의 LLAMA2 — (2) 평가, 결론, details

What’s new?

Meta AI는 LLAMA 2를 연구용과 상업용으로 사용 가능한 foundation model (LLAMA2)와 fine-tuned chat 모델(LLAMA2-Chat) 두 가지 버전으로 공개하였다.

LLAMA 2 (Foundation Model)

  • LLAMA1의 업데이트 버전
  • pretraining corpus 40% 증가 (1.4T tokens → 2T tokens)
  • Context Length 2배 증가 (2K → 4K)
  • Grouped-query attention 채택
  • Variants: 7B, 13B, 70B (*34B 버전도 개발되었지만, red 팀의 시간 부족으로 인해 릴리즈를 연기 중)

LLAMA 2-CHAT (Fined-tuned chat Model)

  • 대화 use-cases에 최적화된 fine-tuned 버전
  • Variants: 7B, 13B, 70B

LLAMA2와 LLAMA2-Chat의 학습 방법

LLAMA2는 공개 데이터셋으로 self-supervised learning한 후 생성되었다. 이렇게 생성된 LLAMA2를 SFT(Supervised Fine-Tuning)하여 LLAMA2-Chat을 생성한 후, LLAMA2-Chat은 RLHF(Reinforcement Learning from Human Feedback)을 사용하여 반복적으로 튜닝되었다.

Pretraining (LLAMA2)

LLAMA2의 연구자들은 LLAMA2를 pretraining하기 위해 LLAMA1보다 40%가 증가된 토큰을 학습시켰다. 다음 표는 LLAMA1과 LLAMA2를 비교한 표이다.

Pretraining Data

  • 2 Trillion tokens 학습
  • Meta의 제품 또는 서비스의 데이터를 포함하지 않은 공개적으로 사용가능한 소스를 학습 corpus로 사용함
  • 개인적인 정보를 다수 포함하는 특정 사이트의 데이터를 제거하는데 노력을 기울임
  • 가장 사실적인 출처를 upsampling하여 환각을 줄임

Training Details

*LLAMA1를 확인하기 위해서는 먼저 필자의 [리뷰] Meta AI의 Small Gaint Model: LLaMA(Large Language Model Meta AI) 를 참고하길 바란다.

Model architecture

LLAMA2는 LLAMA1과 동일하게 아래와 같은 기법을 적용하여 standard transformer 아키텍처를 부분 수정하여 활용하였다.

  • Pre-normalization using RMSNorm
  • SwiGLU activation function
  • Rotary positional embeddings

LLAMA2가 LLAMA1과 다른 점은 context length가 2배 증가하였다는 점과 GQA(Grouped-Query Attention)을 사용하였다는 점이다.

Hyperparameters

LLAMA2는 LLAMA1과 동일하게 AdamW optimizer를 사용하였으며 해당 hyperparameters는 대부분 동일하다.

  • beta1=0.9, beta2=0.95, eps = 10^-5
  • weight decay = 0.1, gradient clipping = 1.0
  • cosine learning rate schedule (w/ 2000 warmup steps)

Tokenizer

LLAMA1과 같은 BPE를 tokenizer 알고리즘으로 채택하였으며 총 voca 크기는 32K tokens이다.

Training Hardware

LLAMA2는 내부 Production Cluster 뿐만 아니라 RSC(Research Super Cluster)에서 pre-training 되었다. 두 클러스터는 모두 공통적으로 NVIDIA A100를 사용하고 있으나 몇 가지 차이점이 있다.

(1) Interconnect

  • Research Super Cluster: NVIDIA Quantum InfiniBand
  • 내부 Production Cluster: RoCE(RDMA over Converged Ethernet)

(2) per-GPU power consumption cap

  • Research Super Cluster: 400W
  • 내부 Production Cluster: 350W

LLAMA2 Pretrained Model Evaluation

LLAMA2의 연구자들은 LLAMA2를 open-source 모델과 상용화된 closed-source 모델의 성능을 비교하기 위해 표준 academic benchmark를 사용하였다.

Benchmark의 종류

  • Code: average pass@1 scores on HumanEval & MBPP
  • Commonsense Reasoning: PIQA, SIQA, HellaSwag, WinoGrande, ARC easy and challenge, OpenBookQA, CommonsenseQA의 평균. (CommonsenseQA는 7-shot 결과, 나머지는 0-shot 결과)
  • World Knowledge: NaturalQuestions & TriviaQA의 5-shot 결과의 평균
  • Reading Comprehension: SQuAD, QuAC, BoolQ의 0-shot 평균
  • MATH: GSM8K(8-shot)과 MATH(4-shot)의 평균
  • Popular Aggregated Benchmarks: MMLU(5-shot), Big Bench Hard(BBH. 3-shot), AGI Eval(3–5 shot)의 전체 결과. (AGI Eval의 경우, 영문 task만을 평가하여 그 평균을 리포팅함)

LLAMA2 vs open-source 모델

  • vs LLAMA1: LLAMA2는 LLAMA1의 성능을 능가함
  • vs MPT: LLaMA2–7B, LLAMA-34B는 Code 벤치마크를 제외한 전 벤치마크에서 LLAMA2가 MPT보다 더 우수
  • vs Falcon: 전 벤치마크 영역에서 LLAMA2가 Falcon보다 우수함

LLAMA2 vs closed-source 모델

  • vs GPT-3.5: LLAMA2–70B는 MMLU과 GSM8K에서 GPT-3.5에 근접한 성능을 보여줌
  • vs PaLM(540B): LLAMA2–70B는 전 벤치마크에서 PaLM(540B)과 비슷하거나 더 좋은 성능을 보여줌
  • vs GPT-4 or PaLM-2-L: LLAMA2–70B은 GPT-4와 PaLM-2-L에 비해 여전히 큰 열세에 있음

Fine-tuning (LLAMA2-Chat)

Fine-tuning 단계는 self-supervised learning으로 학습된 LLAMA2를 사용자와 chat이 가능한 LLAMA2-Chat 버전을 만들어내는 과정이며 크게 2가지 phase로 나뉜다.

  • phase-1: Supervised Fine-Tuning(SFT)
  • phase-2: Reinforcement Learning from Human Feedback(RLHF)

Fine-tuning (Phase-1) : Supervised Fine-Tuning(SFT)

처음에는 공개된 instruction tuning 데이터를 사용하여 SFT를 시도하였으나 LLAMA2의 연구자들은 3rd party 데이터 소스의 다수가 다양성과 품질이 부족하며, 특히 LLM를 대화-스타일 instruction으로 정렬시키는데 부족한 사실을 발견하였다. 따라서 그들은 수천개의 고품질 SFT 데이터 예제(아래 표)를 수집하였으며 더 적지만 더 나은 품질의 예제를 사용하면 모델 성능이 눈에 띄게 향상된다는 사실을 확인하였다.

  • 총 27,540 개의 샘플을 수집
  • Meta의 사용자 데이터를 포함하지 않음

Meta의 연구자들은 SFT 데이터셋의 품질이 모델 성능에 큰 영향을 미친다는 사실을 관찰하여 데이터셋을 아웃소싱하는 경우 데이터를 확인하는 것이 필수적임을 강조한다.

Meta의 연구자들은 데이터의 품질을 검증하기 위해 180개의 예시 세트를 수동 조사를 통해 SFT 모델에서 생성한 샘플과 사람에 의해 제공된 annotation을 비교하였을 때 놀랍게도 SFT 모델의 결과와 인간 annotator가 쓴 SFT 데이터가 종종 경쟁적이라는 사실을 발견하였다.

이는 우선 순위를 변경하여 RLHF를 위해 선호도 기반 annotation을 더 많이 만드는 노력을 해야함을 시사한다.

Supervised Fine-Tuning(SFT) details

각 SFT용 샘플은 프롬프트와 답변으로 구성되어 있으며, sequence length을 적절히 채우도록 학습 데이터셋의 모든 프롬프트와 답변을 연결한다. 프롬프트와 응답 세그먼트를 구분하기 위해 특수 토큰이 사용된다. Auto-regressive 목적을 활용하여 사용자 프롬프트 토큰에 대한 loss를 0으로 만들어 결과적으로 답변 토큰들에 대해서만 backpropagation을 진행하였다.

  • cosine learning rate schedule (w/ initial learning = 2 * 10^-5)
  • weight decay = 0.1
  • batch size = 64
  • sequence length = 4096 tokens
  • 2 epoches fine-tuning

Fine-tuning (Phase-2) : Reinforcement Learning with Human Feedback(RLHF)

RLHF는 모델 동작을 인간의 선호도 및 지시에 따라 정렬(align)하는 모델 학습 과정이다. ChatGPT 역시 RLHF를 사용하였는데 다음은 LLAMA2가 수행한 RLHF 방법을 설명한다.

인간 선호도 데이터 모으기 (Human Preference Data Collection)

보상 모델링을 위해 인간 선호도 데이터를 수집한다. 수집된 프롬프트의 다양성을 최대화할 수 있기 때문에 이진 비교 프로토콜을 골랐다. 다음은 LLAMA2에 사용된 인간 선호도 데이터를 수집하는 과정이다.

#1: Annotator에게 프롬프트를 작성하고 설정된 기준에 따라 샘플링된 두 가지 모델 응답 중에 선호하는 응답을 선택하도록 요청하였다. (다양성을 최대화하기 위해 temperature 하이퍼파라미터를 변경하여 만든 두 가지 다른 모델 variants에서 두 개의 샘플을 얻었다.) 또한 선택한 응답에 대한 선호도를 평가하기 위해 Annotator는 선호도를 4가지로 구분하였다:

  • 1) significantly better
  • 2) better
  • 3) slightly better
  • 4) negligibly better/unsure

#2: 선호도 annotation은 유용성(helpfulness)과 안전성(safety)에 집중한다. “유용성”은 LLAMA2-Chat 모델의 응답이 사용자의 요청을 얼마나 잘 만족하는지 정의하는 지표이며, “안전성”은 응답이 안전 지시를 준수하는지 여부를 정의한다. 각 annotation은 분리되어 있으며 특정 가이드라인을 적용된다. 이와는 별도로 안전성 단계 중에 안전 레이블을 추가적으로 수집한다: 1) 선호하는 응답은 안전하지만 다른 응답은 안전하지 않음(18%), 2) 두 응답 모두 안전(47%), 3) 두 응답 모두 안전하지 않음(35%)

#3: 인간의 annotation은 매주 배치로 수집되었다. 더 많은 선호도 데이터를 수집함에 따라 보상 모델이 개선되었으며 LLAMA2-Chat에 대해 점진적으로 더 나은 버전을 학습할 수 있었다.

인간 annotation은 매주 배치로 수집되었다. 더 많은 선호도 데이터가 수집됨에 따라 보상 모델이 개선되어 작성자가 LLAMA2-Chat의 더 나은 버전을 점진적으로 학습할 수 있다. 개선 사항으로 인해 모델의 데이터 분포가 변경됨에 따라 작성자는 최신 LLAMA2-Chat 반복을 사용하여 새로운 기본 설정 데이터를 수집하여 보상 모델을 최신 상태로 정확하게 유지했다. Meta AI는 Meta reward modeling data로 언급된 Meta의 특정 가이드를 적용한 인간이 작성한 100만 개 이상의 바이너리 비교를 수집하였다. 프롬프트와 답변의 토큰의 수는 텍스트 도메인에 따라 다르다.

  • 요약 및 온라인 포럼 데이터는 일반적으로 프롬프트가 더 김
  • 대화 스타일 프롬프트는 일반적으로 짧음
  • 기존 오픈소스 데이터셋과 비교하였을 때, Meta가 수집한 선호도 데이터는 평균적으로 더 길고, 더 많은 대화를 주고 받은 특징을 가지고 있음

Reward Modeling

LLAMA2의 저자는 모델 응답과 해당 프롬프트를 입력으로 가져와서 생성된 응답의 품질(e.g. 유용성, 안전성)을 나타내는 점수를 출력하는 보상 모델을 만들었다. 그들은 이 보상 모델을 이용하여 RLHF 동안 인간의 선호도에 LLAMA2-Chat 모델을 최적화할 수 있었으며 유용성과 안전성을 개선할 수 있었다.

유용성과 안정성은 서로 trade-off 관계에 있다는 사실이 알려져 단일 보상 모델을 유용성 보상모델(Helpfulness RM)과 안전성 보상모델(Safety RM)로 분리하여 학습과 최적화를 진행하였다.

이 보상 모델들은 pre-training 시 획득된 지식을 두 보상모델에게 이전될 수 있도록 pre-training된 LLAMA2-Chat 모델의 체크포인트로 초기화되었다. 즉, 보상 모델이 “LLAMA2-Chat 모델이 아는 것을 알기 때문에” chat 모델과 보상 모델의 정보 불일치로 인한 환각을 선호하는 문제를 방지한다.

Reward Model 결과

보상 모델을 위한 인간의 선호도 annotation 데이터를 각 배치마다 모델 평가를 위해 1K개의 예제를 테스트셋으로 유지하였다. 각 테스트셋에 대한 모든 프롬프트의 합집합을 “Meta 유용성” 및 “Meta 안전성”으로 지칭한다.

비교 기준은 StreamSHP-XL(FLAN-T5-xl기반), Open Assistant(DeBERTa V3 Large기반 보상모델), GPT-4(OpenAI’s API)와 비교 평가하였으며 Meta의 보상 모델이 LLAMA2-Chat에 기반한 내부 테스트셋에서 가장 우수한 성능을 보여준다. 전체적으로 Meta의 보상 모델이 GPT-4를 포함한 모든 비교 대상을 능가하며 GPT-4는 Meta의 보상 모델이 아닌 보상 모델보다 성능이 더 우수하다. 이는 GPT-4가 보상 모델링 과제를 목표로 학습되지 않았음에도 불구하고 GPT-4의 성능이 우수한 것으로 보인다.

Meta의 유용성 보상 모델과 안전성 보상 모델이 가장 우수한 성능을 낸 것은 두 가지 목표(유용성 ⇄ 안정성)간 잠재적인 긴장(tension)에 의거한 것이다. 단일 모델이 두 가지 차원에서 잘 수행되기 위해서는 단순히 프롬프트에 대해 더 나은 답을 선택하는 것뿐만이 아니라 안전한 프롬프트와 적대적인 프롬프트를 구별하는 능력도 필요하다. 그 결과, 두 개의 분리된 보상 모델을 최적화하는 것이 보상 모델링 태스크를 단순화시킨다.

Scaling Trends

매주 수집되는 보상 모델 데이터의 양이 증가함에 따라 다양한 모델 크기를 fine-tuning하여, 보상 모델의 데이터 및 모델 크기 관점에서 확장 추세를 연구하였다. 아래 그림은 이러한 추세를 보여 주며, 비슷한 양의 데이터에 대해 더 큰 모델이 더 높은 성능을 얻는다는 예상 결과를 보여준다.

이 결과에서 더 중요한 것은 학습에 사용되는 기존 데이터 annotation의 양을 고려할 때 확장 성능이 아직 정체되지 않았다는 점이며, 이는 더 많은 annotation으로 더 많은 개선의 여지가 있다는 신호이다. 보상 모델 정확도는 LLAMA2-Chat의 최종 성능을 나타내는 가장 중요한 지표이다. 결국 보상 모델을 개선하는 것은 곧 LLAMA2-Chat의 개선으로 직접 연결될 수 있다.

Iterative Fine-Tuning

LLAMA2의 저자들은 더 많은 사용자 선호도 데이터 annotation을 받을 때마다 더 나은 보상 모델을 학습하고 더 많은 프롬프트를 수집할 수 있었다. 따라서 그들은 RLHF 모델을 RLHF-V1, .. , RLHF-V5와 같이 연속적인 버전을 학습시켰다.

RLHF fine-tuning에는 두 가지 주요 알고리즘에 사용되었다.

  • PPO(Proximal Policy Optimization): 온라인 RL에서 가장 많이 사용되는 알고리즘인 RLHF 논문의 표준 PPO를 사용.
  • Rejection Sampling fine-tuning: LM 정책에서 K개의 완료 배치를 샘플링한 다음, 보상 모델이 이를 평가하여 가장 좋은 것을 반환

두 RL 알고리즘은 다음과 같은 두가지 차이점이 있다.

Breadth(폭)

  • Rejection sampling fine-tuning: 모델은 주어진 프롬프트에 대해 K개의 샘플을 탐색
  • PPO: 반면 PPO는 한 번만 생성이 수행됨

Depth(깊이)

  • PPO: t 단계에서 학습하는 동안, 샘플은 이전 단계의 기울기 업데이트 후 t-1부터 업데이트된 모델 정책의 함수임.
  • Rejection Sampling fine-tuning: SFT와 유사한 fine-tuning을 적용하기 전, 새로운 데이터셋을 수집하기 위해 모델의 초기 정책에 주어진 모든 출력을 샘플링함

LLAMA2의 연구자들은 RLHF 과정 시 다음과 같은 방법을 사용하였다.

  • RLHF (V4)까지는 Rejection Sampling fine-tuning만을 사용하고, V5부터는 두가지를 순서대로 조합하였다. (Rejection Sampling 체크포인트 상에 PPO 적용)
  • 가장 큰 LLAMA2-Chat (70B)에만 Rejection Sampling을 수행하였다. 모든 작은 모델(7B, 13B, 34B)은 더 큰 모델(70B)의 Rejection Sampling 데이터를 fine-tuning하여 큰 모델의 능력을 작은 모델로 distillation하였다.

System Message for Multi-Turn Consistency

대화 설정에서 일부 지시들은 모든 대화 턴에 적용되어야 한다.(예: 간결하게 응답하거나 어떠한 공적 인물로 “행동”하기 등). LLAMA 2-Chat에 이러한 지시를 제공했을 때 후속 응답은 항상 제약 조건을 준수해야 한다. 그러나 LLAMA2-Chat의 초기 RLHF 모델은 아래 그림처럼 몇 차례의 대화 후에 초기 지시를 잊어버리는 경향이 있다. 이러한 한계를 해결하기 위해 LLAMA2 연구자들은 Context Distillation에서 영감을 얻은 매우 간단한 방법인 Ghost Attention(GAtt)을 제안한다. 이 방법은 fine-tuning 데이터를 해킹하여 다단계 프로세스에서 어텐션의 집중을 돕는다. GAtt는 아래 그림(오른쪽)과 같이 여러 차례에 걸쳐 대화 제어를 가능하게 한다.

레퍼런스

[1] Llama 2: Open Foundation and Fine-Tuned Chat Models

--

--

daewoo kim

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