[리뷰] Meta 논문: Effective Long-Context Scaling of Foundation Models

daewoo kim
11 min readOct 21, 2023

--

지난 Context Window Size에 대한 글에서 긴 Context Window 의 중요성을 설명하였다. 지난 포스트에서 설명하였듯이 Context Window Size는 LLM을 확장하기 위한 가장 중요한 축이다. 본 포스트는 최근 Meta가 발표한 Effective Long-Context Scaling of Foundation Models 논문에서 제시한 LLaMA2와 같은 foundation model에서 Context Window를 효율적으로 확장하는 방법을 정리하였다.

Introduciton

LLM이 지금보다 더 복잡한 usecase를 처리하기 위해선 긴 컨텍스트 입력을 효율적으로 처리할 수 있는 능력이 필요하다. 긴 컨텍스트 입력을 처리하는 능력은 독점적 LLM들(e.g. OpenAI, Anthropic 등)이 오픈소스 LLM에 비해 더 긴 컨텍스트를 처리할 수 있는 능력을 제공한다.

예를 들어 오픈소스 LLM인 Meta의 LLaMA1는 2K, LLaMA2는 4K의 context window size를 지원하는 반면, OpenAI의 GPT-4는 32K, Anthropic의 claude2는 100K의 context window size를 지원한다.

독점 LLM과 오픈소스 LLM의 context window size 비교 (by author)

따라서 오픈소스 LLM들이 긴 컨텍스트 입력을 지원하기 위해선 아래와 같은 문제를 해결해야 한다.

(1) Long-context 성능을 높이기 위한 recipe

  • 오픈소스 LLM이 독점적 LLM과 같은 long-context 성능을 발휘하기 위한 공개된 레시피가 없음

(2) Long-context 능력

  • 오픈소스 long-context 모델은 성능 평가 시 성능이 떨어짐
  • LLM의 loss와 합성 task로 긴 컨텍스트 능력을 평가하므로 다양한 실제 시나리오에서 그 효과를 종합적으로 입증하지 못함
  • 또한 표준 short-context task에서 강력한 성능을 유지하지 못함

이를 위해 Meta는 기존 open-source 모델보다 뛰어난 성능을 갖는 long-context LLM을 구축하는 방법을 소개한다.

Method

본 Meta 논문은 기존 오픈소스 모델을 뛰어넘는 long-context LLM을 구축하는 방법으로 continual pretraining과 instruction tuning을 제안한다.

Continual Pretraining

Continual pretraining이란 LLM의 능력을 향상시키는 방법으로 LLM을 처음부터 학습하는 것이 아니라 이미 학습된 모델을 기반으로 지속적으로 개선하는 방법이다.

1.Architecture

Meta가 continual pretraining을 long-context 지원을 위해 사용하는 이유는 attention 연산은 O(L²)의 complexity를 갖기 때문에 context window size가 커질수록 attention 연산의 비중이 커져 학습 시간이 증가하기 때문이다. Meta는 이를 고려하여 long-context를 지원하기 위해 LLAMA2의 아키텍처를 그대로 유지한 상태에서 아래 2 가지를 수정하였다.

(1) Long-context를 지원하기 위해 positional encoding 수정

  • Long-context 모델링을 위해 RoPE positional encoding을 수정함 (“base frequency b”에 의해 조절되는 rotational angle을 감소시킴)
  • 이 간단한 방법이 LLAMA2의 context window size 확장 방법보다 더 좋은 성능을 보임

(2) Sparse attention의 미적용

  • Long-context LLAMA2는 32K 토큰까지만 지원함
  • LLAMA2(70B) 모델의 모델 dimension(=h)이 8K일 때, attention 연산 비용은 Context Window Size가 48K(=6h) 토큰 이상 때 계산 병목이 발생하기 때문에 sparse attention을 사용하지 않음.
  • Sparse attention은 추론 시 KV cache 사이즈를 줄이는데 유용하지만, 추론 파이프라인을 복잡하게 함. Sparse attention을 적용하는 대신 quantization으로 개선할 수 있음

2.Data Mix

  • LLAMA2의 pretraining data의 비율을 조절하거나 새로운 긴 텍스트 데이터를 추가를 통해 long-context 능력을 개선함
  • Long-context continual pretraining을 위해 텍스트의 길이보다 데이터의 품질이 더 중요함을 발견함

3.Optimization Details

  • LLAMA2와 동일한 tokens/batch을 유지하면서 LLAMA2 체크포인트를 증가한 시퀀스 길이로 지속적으로 pre-training함
  • 모든 LLAMA2 모델(7B/13B/34B/70B)들에 대해 100K steps에 걸쳐 총 400B 토큰을 학습함
  • LLAMA2 7B/13B 모델은 32K 토큰 시퀀스로 학습된 반면 34B/70B는16K 토큰 시퀀스로 학습됨
  • Flashattention 적용 시, sequence length가 증가함에 따라 무시할만한 GPU 메모리 오버헤드가 있었음. 70B 모델의 sequence length를 4K → 16K로 확장하였을 때 학습 speed loss는 17%로 관찰됨
  • 7B/13B 모델의 경우, lr=2e^-5을 사용하였으며 34B/70B 모델의 경우 validation loss를 단조 감소시키기 위해 더 작은 lr=1e^-5를 사용함

Instruction Tuning

LLM alignment를 위해 인간의 설명과 선호도 label을 모으는 것은 어렵고 값비싼 과정이다. 특히 long-context 시나리오 상에서 이와 같은 어려움과 비용 문제가 더 가중된다.

Meta는 long-context LLM을 지원하기 위해 다음과 같이 간단하고 값싼 방법을 제안한다. 그 방법은 LLAMA2 CHAT 모델에 사용했던 RLHF 데이터셋을 사용하여 LLAMA2 CHAT 모델이 synthetic self-instruct long data를 생성시켜 RLHF 데이터셋을 증강시키는 것이다. 이는 long-context 모델이 대량의 RLHF 데이터를 통해 다양한 기술 집합들을 배울 수 있으며 self-instruct 데이터를 통해 그 지식들을 long-context 시나리오로 전이하려는 의도이다.

Meta의 self-instruct long data 생성 과정은 다음과 같다. (#1~#4)

Self-instruct long data 생성 (by author)
  • #1: Pre-training 코퍼스에 있는 문서에서 random chunk를 선택하고 LLAMA2 CHAT 모델이 텍스트 chunk에 있는 정보에 기반한 Q&A 쌍을 작성하도록 prompting
  • #2: 다양한 프롬프트를 통해 LLAMA2 CHAT 모델이 생성한 long & short 형식의 답변을 수집함
  • #3: LLAMA2 CHAT 모델이 생성한 답변을 검증하기 위해 self-critique step을 채택함
  • #4: 이렇게 생성된 Q&A 쌍은 long-context 학습을 위한 long document로 사용하며, 모델의 최대 컨텍스트 길이에 맞도록 자름

표준 instruction tuning은 출력 토큰의 loss만을 계산하지만, Meta는 추가적으로 긴 입력 프롬프트의 언어 모델링 loss를 계산하면 downstream에서 일관적인 개선을 이룰 수 있음을 발견하였다.

Main Results

Pretrained Model Evaluation

Long-context LLM을 보편적으로 유용하게 만들기 위해선 long-context task 뿐만 아니라 표준 short-context task에 대해서도 견고한 성능을 보장해야 한다. 다음은 long-context LLAMA2의 성능을 short task와 long task에서 실험한 결과이다.

Short Task: LLAMA2 vs Long-Context LLAMA2

  • 모든 벤치마크에 대해서 Long-Context LLAMA2가 LLAMA2를 압도함
  • 특히 coding, math, MMLU의 성능 개선이 두드러짐

Short Tasks: Closed Models vs Long-Context LLAMA2

  • MMLU와 GSM8K에서 GPT-3.5를 능가함

Long Tasks: Open-source Long-Context LLMs vs Long-Context LLAMA2

  • 여타 open-source long-context LLMs에 비해 월등한 성능을 보임
  • 7B 모델 중에서 Together-7B-32k만이 Long-Context LLAMA2-7B와 동등한 성능을 보임. (Together-7B-32k는 few-shot 결과를 개선하기 위해 큰 supervised dataset을 사용하여 finetuning한 모델임)

Effective Context Utilization:

  • Context Window Size가 증가함에 따라 long task 벤치마크(Narrative QA, Qasper, AuALITY, QMSum) 결과가 대체적으로 단조 증가함

Instruction Tuning Results

Meta는 Long-Context LLAMA2의 명령어 조정 성능을 테스트하기 위해 요약, Q&A, multi-document aggregation task에 이르는 10개 긴 컨텍스트 데이터셋을 묶은 ZeroSCROLLS을 사용하여 GPT, Claude와 결과를 비교하였다.

  • Long-Context LLAMA2 70B 모델은 GPT-3.5-turbo-16k 대비 10개 task 중 7개 task에 더 뛰어난 성능을 보여줌
  • 특히 self-instruct tuning과 관련된 Q&A task에서 특히 뛰어난 성능을 내는 것을 관찰할 수 있음

Human Evaluation

Meta는 ZeroSCROLLS와 같은 자동 평가 벤치마크를 보완하기 위해 인간 평가자가 Long-Context LLAMA2가 생성하는 답변과 다른 LLM가 생성한 답변 중 유용성, 정직성, 무해성 측면에서 어떠한 답변을 선호하는지 테스트하였다.

평가 방법

2352개의 예제를 사용하여 Long-Context LLAMA2의 답변과 다른 모델(MPT-30b-chat, GPT-4, GPT-3.5-turbo-16k, Claude-2–100k)의 답변 중 3명의 인간 평가자가 3점 척도(Win, Tie, Loss)로 평가한 결과를 평균하였다.

평가 결과

Long-Context LLAMA2는 매우 적은 instruction tuning에도 불구하고 GPT-4 대비 열위에 있을 뿐, GPT-3.5-turbo-16k, Claude-2-100k 대비 약간 더 우세한 성능을 보여준다.

Limitations

제한된 기능

  • 긴 형식의 출력을 요구하는 창조적 글쓰기와 같은 광범위한 긴 컨텍스트 애플리케이션에 맞게 finetuning 되지 않았음
  • 다양한 시나리오에 대해 기존 정렬 방법(e.g. RLHF)을 적용하는 것은 비용이 많이 들은 작업이므로 긴 LLMs을 효율적으로 정렬하는 방법을 개발하는 것이 중요함

토크나이저 효율성

  • 모델이 실제 사용할 수 있는 단어의 개수는 토크나이저 동작에 큰 영향을 받음
  • LLAMA 시리즈의 토크나이저는 상대적으로 작은 vocabulary(32k 심볼)을 가지며 GPT-3.5 토크나이저에 비해 평균적으로 더 긴 시퀀스를 생성하는 경우가 많음 (평균 10% 더 많은 토큰을 생성함)
  • LLAMA의 토크나이저는 공백을 효율적으로 처리할 수 없어 긴 코드 데이터를 처리하는데 비효율적임

환각

  • 다른 LLM과 같이 환각 문제를 관찰함

레퍼런스

[1] Effective Long-Context Scaling of Foundation Models

[2] Continual Pre-Training of Languate Models

--

--

daewoo kim
daewoo kim

Written by daewoo kim

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

No responses yet