Li, Yucheng, et al. "Compressing Context to Enhance Inference Efficiency of Large Language Models." Proceedings of the 2023 Conference on Empirical Methods in Natural Language Processing (EMNLP). 2023.
https://aclanthology.org/2023.emnlp-main.391.pdf

Abstract
LLM은 메모리와 추론 시간의 제한으로 사용가능한 컨텍스트가 제한된다. 본 논문에서 제시하는 Selective Context는 입력에서 중복을 제거하면서 추론 효율을 높인다. 실험으로는 긴 컨텍스트를 처리하기 위해 arXiv 논문, 뉴스 기사, 긴 대화를 기반으로 요약, QA, 답변 생성 등 작업을 진행했다. 컨텍스트를 50% 줄이고, 메모리를 36% 줄이고, 추론 시간을 32% 줄였으나 성능 감소는 적었다.
Introduction
LLM의 큰 어려움은 긴 컨텍스트를 처리하는 것이다. 트랜스포머 기반 LLM에서 이는 비용이 큰데, 시퀀스가 증가함에 따라 어텐션 행렬은 2-D 구조이므로 제곱이 된다. 따라서 메모리와 비용이 입력의 제곱배 요구된다. 이러한 문제로 LLM은 사전학습 시 고정된 입력 윈도우를 사용하는데, 이는 LLM이 긴 문맥을 처리하는데 제약이 된다. 이에 맞서 어텐션 구조 또는 지식 증류를 통해 비용을 절약하는 방법들이 있다. 이 논문에서는 입력 컨텍스트 자체의 중복을 줄여서 추론 효율을 개선하는 (모델에 의존하지 않는) 방법론을 선보인다.
언어의 두가지 특징을 활용한다.
- 내재적 반복
- 대화에서의 빈번한 중복과 같은 내재적 반복이 존재한다.
- ex) A: Did you get the chance to pick up groceries today? B: Yes, I did get the groceries.
- 학습 중복
- LLM이 사전학습한 정보의 경우 삭제해도 문제없다.
본 논문에서 제시하는 Selective Context는 입력 컨텍스트의 중복을 제거해서 비용을 낮춘다. 언어모델로 self-information을 계산해서 정보 단위(i.e. tokens, phrases, sentences)를 얻는다. self-information 점수가 높은 항목만 남기는 효율적인 압축으로 LLM의 성능이 손상되지 않게 한다.
Self-Information
Self-information(surprisal)은 정보 이론에서 설명되며, 정보의 분포를 수치화한다. 여기서는 언어 모델의 토큰 생성 단계에서 얻어지는 출력 분포를 점수화한다. 따라서 토큰의 self-information은 다음과 같이 표현할 수 있다.
$I(x) = -\log_2 P(x_t|x_0, x_1, \ldots, x_{t-1})$
정보이론에서 self-information은 surprisal 또는 uncertainty를 측정한다. 희귀한 내용은 점수가 높고 뻔한 내용은 점수가 낮다. self-information이 낮으면 컨텍스트로부터 정보를 추론할 수 있으므로 이를 중복된 입력으로 판단한다. self-information score 함수로 entropy 또는 perplexity가 많이 사용된다.
$H(S) = \frac{1}{N} \Sigma_t I(x_t)$
$PP(S) = 2^{H(S)}$
self-information은 additivity의 특성을 가지는데, 더 큰 단위(ex. 문장)의 self-information을 구성 토큰들의 self-information의 합으로 계산할 수 있다.
$\begin{aligned} I(x_0, x_1) &= -\log_2 P(x_0, x_1) \\ &= -\log_2 P(x_0)P(x_1|x_0) \\ &= -\log_2 P(x_0) - \log_2 P(x_1|x_0) \\ &= I(x_0)+I(x_1) \end{aligned}$
Method
먼저 causal 언어모델로 각 토큰별 self-information을 계산한다. 이후 토큰별 점수를 합쳐서 구 또는 문장 점수를 얻는다. 최종적으로 입력에서 불필요하다고 판단된 내용을 제거한다.
Self-Information Computation
언어모델로 각 토큰의 self-information 정보를 entropy를 통해 계산한다.
Lexical Unit Merge
토큰 단위로 필터링하면 문맥이 끊어지므로, phrase(구)나 문장의 더 큰 단위(lexical unit)로 묶어서 처리한다. 앞 단계에서 계산한 토큰별 점수를 활용해서, 동일 lexical unit에 속하는 토큰들의 self-information을 합산하면 된다.
$I(u) = \sum_{i=t}^{\alpha} I(x_i)$
NLTK 문장 토크나이저로 전체 텍스트의 문장을 구분하여 lexical unit을 얻는다. 또한 spacy로 각 토큰이 합쳐진 명사구를 찾는다. 동사구는 너무 긴 구를 형성해서 세밀한 필터링이 안되므로 사용하지 않는다.
Selective Retention of Informative Context
percentile-based filtering 기법을 제안한다. 내림차순으로 정렬한 뒤 p번째보다 크거나 같은 lexical unit만 선택한다.
$I_p = \text{np.percentile}([I(u_0), \dots, I(u_k)], p)$
$C' = \{ U_i \mid I(U_i) \geq I_p, 1 \leq i \leq n \}$
이는 전체 분포에 대해 가장 정보가 많은 항목을 선택할 수 있는 유연한 방법이다.
Experiments
Setup
단순한 QA로 Selective Context를 테스트하기 적절하지 않으므로 직접 데이터셋을 생성한다.
- 데이터셋 : BBC News(full-context), arXiv Articles(first two sections), ShareGPT.com(conversation)
백본 LLM이 출시된 이후 생성된 데이터를 평가에 사용해서, 일반화된 테스트임을 보장한다. 또한 모델의 최대 입력 토큰 길이인 2048 토큰 이하의 자료만 포함시킨다.
- LLM 백본 : GPT-3.5,4 (API), LLaMA-7,3,30B, Vicuna-7,13B
- Task : 원본 컨텍스트 복원, 요약, QA, 대화
- 전체 컨텍스트를 입력으로 사용한 결과를 정답으로 사용한다.
- Compression Ratios : 0.2 ~ 0.8
- Lexical Units : tokens, phrases, sentence
- 평가지표 :
- BLEU : n-gram 정확도
- METEOR : n-gram 정확도 (단어 원형 고려)
- ROUGE : n-gram 재현율
- BERTScore : BERT로 정답과 생성된 문장 유사도 계산
LLM이 후반부 lexical unit에 더 낮은 점수를 부여하는 경향이 있으므로 self-information 계산은 문장별로 진행한다.
Main Results

모든 작업과 백본 LLM에 대한 실험 결과를 평균낸 수치이다. 압축률 0.2 ~ 0.35까지는 원본 컨텍스트와 비교했을 때 성능 저하가 적다.

각 작업에 대한 성능 비교이다. 원본 복원 대비 QA, 요약 작업은 중요한 내용만 찾으면 되므로, 압축률 증가에 따른 성능 하락이 완만하다.

lexical unit에 따른 BERTScore-F1 기반으로 평가를 진행한다. phrase, token, sentence 순으로 성능이 더 높다. 이는 압축 단위가 의미적으로 엮여 있는 것(ex. phrase)이 중요함을 의미한다.
Conclusion
Contribution
- LLM 프롬프트 압축 분야를 개척한 논문이다.
- 따라서 직접 비교 가능한 베이스라인이 없어서 실험 시 원본, 랜덤 샘플링과 비교한다.
Limitation
- phrase(구) 단위는 spacy로 얻는데 이러한 lexical unit 선정은 최적이 아닐 수 있다.
- 최적의 압축률 비율은 실험적으로 얻어야한다.