Jiang, Huiqiang, et al. "Longllmlingua: Accelerating and enhancing llms in long context scenarios via prompt compression." Proceedings of the 62nd Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers). 2024.
https://arxiv.org/pdf/2310.06839

Abstract
컨텍스트가 많은 상황에서 LLM을 사용한 작업은 컴퓨팅 자원이 많이 소모되며, 입력에 노이즈가 많고 lost in middle의 위치 편향 문제를 겪는다. 프롬프트 압축은 이런 문제를 일부 개선하는데, 본 논문은 기존 방식의 한계는 질문을 크게 고려하지 않기 때문이라고 한다. 따라서 LongLLMLingua는 다음과 같은 기여를 통해 위 문제들을 개선한다:(1) 질문에 초점을 맞춘 여러 압축법 (2) 문서 재정렬 (3) 문서별 압축률 조절 (4) 압축 단어 복원
Method
Question-aware Coarse-grained Compression (러프한 1차 압축)
SLM에 문서, 질문을 프롬프트로 입력해서 문서와 질문의 관련성을 의미하는 $r_k$ 점수를 얻는다. 구체적으로 [D + Q + Restrict]를 SLM에 입력해서 [Q + Restrict]에 대한 perplexity를 계산한다.
$$ r_k = -\frac{1}{N_c} \sum_{i}^{N_c} \log p(x_i^{\text{que,restrict}} | \mathbf{x}_k^{\text{doc}}), $$
- restrict : perplexity 계산 시 NTP 외에 D-Q의 관련성을 평가하는 목적으로 추가된다.
- 자연어 “We can get the answer to this question in the given documents”
D-Q의 유사도가 높을 때 예측 확률이 높으므로 r_k (k번째 문서의 점수)가 낮다. 일단 $r_k$ 점수로 전체 문서 중 top-n 문서를 선택하고 나머지는 압축(제거)한다.
Question-aware Fine-grained Compression (세밀한 2차 압축)
SLM에 (1) 문서 (2) 문서, 질문 을 프롬프트로 입력해서 얻은 perplexity 점수를 뺀 $s_i$ 점수를 얻는다. 구체적으로 [D]에서 구한 문서 perplexity와 [Q+D]에서 구한 문서 perplexity의 차이를 사용한다. 이를 본 논문에서 제안하는 contrastive perplexity라고 한다.
$$ s_i = \text{perplexity}(x_i | x_{<i}) - \text{perplexity}(x_i | x^{\text{que}}, x_{<i}) $$
이러한 특이한 perplexity를 사용하는 이유는 기존(LLMLingua)처럼 문서에 대한 perplexity만 사용하는 경우, 질문과 관련된 key information을 얻기 어렵기 때문이다. 이 경우 토큰 자체의 예측 가능성에 따라 압축이 된다. 문서, 질문을 같이 사용하는 경우에는 토큰 자체의 예측 가능성과 문서-질문의 연관성이 구분되지 않는다. 따라서 본 논문에서는 이를 뺀 메트릭을 사용하며, 아래 모의 실험에서 이 방식이 question-aware함이 확인된다.

본 모듈에서 얻게된 점수는 문서 내에서 어떤 항목을 압축할지 정하는데 사용된다.
Document Reranking
Coarse-grained 압축에서 얻은 top-n 문서를 $r_k$를 통해 재정렬한다. 이를 통해 lost in the middle 문제를 완화한다.
Dynamic Compression Ratio
$r_k$를 활용하여 문서별 압축률을 조절한다.
$$ \tau_k^{\text{doc}} = \max\left(\min\left(\left(1 - \frac{2I(r_k)}{K'}\right)\delta\tau + \tau^{\text{doc}}, 1\right), 0\right) $$
$\tau^{\text{doc}}$ 압축률을 기준으로 $\delta\tau$ 하이퍼파라미터가 압축률 폭이 되어 조절된다. 아래 그림은 $\tau^{\text{doc}}=0.5, \delta\tau=0.3$에서의 문서별 압축률 예시이다.

Subsequence Recovery

LLM이 생성한 결과에서 문자열 매칭을 통해 압축 시 훼손된 토큰을 복원하는 기법이다. 압축 시 토크나이저에 의해 나눠진 자연어를 LLM이 그대로 생성하여 자연어가 훼손되는 것을 방지한다.
- 생성 결과와 압축 프롬프트에 공통으로 존재하는 가장 긴 문자열을 찾는다.
- 해당 문자열에 대응하는 원본 프롬프트의 가장 짧은 연속 시퀀스를 찾는다. (ex. prefix tree)
- 압축으로 훼손된 단어를 원본 문자열로 치환한다.
Experiments
(1) LongLLMLingua가 얼마나 효과적인가, (2)LongLLMLingua가 얼마나 효율적인가 를 평가한다.
메인 실험
Single-Hop QA / Lost in the middle / Latency

- datasets : NaturalQuestions
- metric : Accuacy
- SLM : LLaMA-2-7B-Chat
- segment size : 200
오리지널 프롬프트와 비교 시 압축했음에도 성능이 오르는데, 이는 질문을 고려한 압축이 노이즈를 제거하기 때문이다. 또한 Lost in the middle도 오리지널 대비 많이 완화된다. 기존 압축 방법론과 비교 시 성능 차이가 큰데, 이는 기존 방법론이 long context에서는 적절하지 않음을 의미한다. $r_k$만 적용한 방법론에서도 비교적 성능이 높으므로 Coarse-grained 방법론의 중요성이 확인된다.
Multiple Task / Latency

- datasets : LongBench
- metric : F1 score, ROUGLE-L, Edit Similarity, Accuracy
- SLM : LLaMA-2-7B-Chat
- segment size : 200
오리지널 프롬프트와 비교 시 압축했음에도 전반적인 테스크에서 모두 성능이 오른다. 그리고 Retrieval-based 방식은 3000 -> 2000 토큰으로 압축을 더 많이했을 때 성능 저하가 크나, LongLLMLingua에서는 성능 저하가 적은 이점이 있다. 다른 방법론과 비교 시 성능이 높으면서도 LongLLMLingua의 속도가 매우 빠르다.
Ablation
Natural Questions에서의 ablation을 진행한다.

w/o Question-awareness에서 가장 성능이 감소한다. 이는 $r_k$를 생성하는 첫 단계의 Coarse-grained 방법론이 본 방법론에서 가장 중요함을 의미한다. 다음으로 성능 감소가 큰 모듈은 w/ $p(\mathbf{x}_k^{\text{doc}} | x_i^{\text{que,restrict}})$이다. 질문을 컨텍스트로 하여 문서를 예측하는 것은, 그 반대와 비교했을 때 더 어렵기 때문이다. 구체적으로는 질문에 없는 내용(노이즈)가 문서에 많기 때문이다.
Conclusion
기여
- Dynamic Compression : 별도 메트릭으로 문서별 압축률을 조절
- Conditional Perplexity : 기존의 문서 perplexity 계산 외에 질문을 반영하기 위해 새로운 perplexity 적용
- Question-aware Perplexity, Contrastive Perplexity
- Subsequence Recovery : 프롬프트 압축 후처리 방법
한계
- Question-aware limit : 질문이 바뀌면 동일한 문서에 대해 다시 방법론을 적용해야함
- Multi-document limit : 하나의 문서에 대한 perplexity를 계산하므로 Musique와 같은 복잡한 데이터셋을 사용하는 MHQA에 약함
- Perplexity dependency : 여전히 Information Entropy 기반 예측 가능성이라는 하나의 메트릭에 의존함