최근에는 다양한 대규모 언어 모델이 나오면서 입력하는 프롬프트를 고안해 고정밀도 답변을 얻을 방법도 많아지고 있다. 하지만 입력 프롬프트가 너무 길어지면 채팅창 상한을 초과하거나 API 비용이 증가하는 단점도 발생한다. 따라서 마이크로소프트리서치 연구팀은 의미를 유지하면서 입력 프롬프트를 압축하는 새로운 기술인 LLMLingua를 개발했다.
대규모 언어 모델에서 고정밀 답변을 얻으려면 입력 프롬프트를 고안해야 한다는 건 널리 알려져 있다. 이 가운데 CoT(Chain-of-Thought)나 ICL(In-context Learning) 등 기술이 등장하고 고품질 답변을 이끌어내기 위해 긴 프롬프트를 쓰는 경우가 늘고 있다.
경우에 따라 프롬프트가 수만 토큰에 도달할 수 있지만 프롬프트가 너무 길면 채팅창 한도를 초과하거나 입력이나 출력에 필요한 API 사용료가 고액이 되는 문제도 발생한다. 마이크로소프트리서치 연구팀은 대규모 언어 모델에 대한 입력 프롬프트가 너무 길어지는 문제를 해결하기 위해 의미를 유지하면서 프롬프트를 압축하는 기술인 LLMLingua를 개발했다.
연구팀은 LLMLingua 개발을 위해 언어 무결성과 프롬프트 내 모듈 감도 균형을 위해 예산 컨트롤러(budget controller)라는 구조를 취했다. 이는 GPT2-small이나 LLaMA-7B 등 충분히 학습된 작은 언어 모델을 이용해 중요하지 않은 토큰을 식별해 프롬프트로부터 배제하는 것이다. 더구나 남은 토큰을 개별 압축하는 동시에 반복적인 토큰 레벨 압축을 실시해 개별 토큰간 관계를 더 세련되게 한다는 것이다.
이렇게 하면 대규모 언어 모델이 이해할 수 있는 정보량을 유지하면서 인간이 평소 취급하는 자연 언어에 흔한 중복성을 배제하고 입력 프롬프트를 압축할 수 있다. 예를 들어 기존 프롬프트에 2,366토큰을 사용하던 걸 LLMLingua 처리 후 프롬프트는 117토큰까지 압축된다.
처리 이후 프롬프트는 인간은 읽기가 곤란하지만 대규모 언어 모델이 응답을 출력하기에는 충분한 정보량이 유지되고 있다고 한다. 보도에선 이 압축된 프롬프트를 마치 강의 내용을 글머리 기호로 메모하는 사람이 쓴 문장처럼 보인다며 인간이 최적화된 입력과 기계가 최적화한 입력이 이렇게 비슷한 경우는 드물다고 지적하기도 했다.
연구팀은 LLMLingua 성능을 평가하기 위해 4가지(GSM8K, BBH, ShareGPT, Archiv-March23) 다른 데이터세트를 이용해 LLMLingua가 생성한 압축 프롬프트를 테스트했다. 예산 컨트롤러에 사용하는 소형 언어 모델에는 LLaMA-7B를, 대규모 언어 모델에는 GPT-3.5-터보-0301을 사용했다.
그 결과 LLMLingua는 ICL과 추론에서 원래 프롬프트 의미를 유지하면서 최대 20배 압축률을 달성했으며 상호 작용과 요약에서도 프롬프트 의미를 유지할 수 있었다. 입력 뿐 아니라 대규모 언어 모델이 생성하는 응답 토큰수도 입력 프롬프트 압축에 따라 감소한 것으로 보고됐다.
또 LLMLingua로 압축된 입력 프롬프트를 GPT-4로 복원한 결과 9단계에 걸친 CoT 프롬프트 전체에서 모든 중요한 추론 정보를 복원할 수 있었다고 한다. LLMLingua 소스 코드 등은 깃허브에 공개되어 있다. 관련 내용은 이곳에서 확인할 수 있다.