[논문 리뷰] Prompting Is Programming: A Query Language for Large Language Models
이 논문은 언어 모델 프로그래밍(LMP)과 LMQL을 소개한다. LMQL은 스크립팅, 제약 조건, 제어 흐름을 자연어 프롬프팅에 통합하여 효율적이고 정확하며 비용 효율적인 언어 모델 추론을 가능하게 하는 고수준 쿼리 언어이다. LMQL은 실시간 토큰 수준의 검증과 최적화된 디코딩을 통해 모델 호출 수와 계산량을 최대 85% 감소시키며, 하류 작업의 정확도를 유지하거나 향상시킨다.
Large language models have demonstrated outstanding performance on a wide range of tasks such as question answering and code generation. On a high level, given an input, a language model can be used to automatically complete the sequence in a statistically-likely way. Based on this, users prompt these models with language instructions or examples, to implement a variety of downstream tasks. Advanced prompting methods can even imply interaction between the language model, a user, and external tools such as calculators. However, to obtain state-of-the-art performance or adapt language models for specific tasks, complex task- and model-specific programs have to be implemented, which may still require ad-hoc interaction. Based on this, we present the novel idea of Language Model Programming (LMP). LMP generalizes language model prompting from pure text prompts to an intuitive combination of text prompting and scripting. Additionally, LMP allows constraints to be specified over the language model output. This enables easy adaption to many tasks while abstracting language model internals and providing high-level semantics. To enable LMP, we implement LMQL(short for Language Model Query Language), which leverages the constraints and control flow from an LMP prompt to generate an efficient inference procedure that minimizes the number of expensive calls to the underlying language model. We show that LMQL can capture a wide range of state-of-the-art prompting methods in an intuitive way, especially facilitating interactive flows that are challenging to implement with existing high-level APIs. Our evaluation shows that we retain or increase the accuracy on several downstream tasks, while also significantly reducing the required amount of computation or cost in the case of pay-to-use APIs (26-85% cost savings).
연구 동기 및 목표
- 수동적이고 모델에 특화된 구현이 필요하고 높은 계산 비용을 수반하는 기존 프롬프팅 방법의 비효율성과 복잡성을 해결하기 위해.
- 토큰화, 디코딩, 모델 내부 구조에 대한 깊은 지식 없이도 직관적이고 고수준의 언어 모델 프로그래밍을 가능하게 하기 위해.
- 인터랙티브 및 제약 조건이 있는 프롬프팅 워크플로우에서 비용이 많이 드는 언어 모델 호출 횟수를 줄이기 위해.
- 다양한 모델과 API 간에 이식 가능하고 제약 조건을 고려한 효율적인 언어 모델 상호작용 인터페이스를 제공하기 위해.
- 제약 조건이 있는 스크립트 기반 프롬프팅이 상당히 낮은 계산 및 금전적 비용으로 최신 성능을 달성할 수 있음을 입증하기 위해.
제안 방법
- 자연어 프롬프팅과 경량 스크립팅, 출력 제약 조건을 통합하는 언어 모델 프로그래밍(LMP) 패러다임을 제안한다.
- 사용자가 파이썬 유사 제어 흐름, 변수 할당, 리스트 내장 기능을 사용할 수 있는 도메인 특화 언어인 LMQL을 도입한다.
- 디코딩 중에 토큰 수준의 검증과 제약 조건 검사를 수행하여 백트랙킹을 방지하고 모델 호출 횟수를 줄인다.
- LMQL 프로그램 내의 제약 조건과 제어 흐름을 분석하여 효율적인 추론 절차를 생성하는 쿼리 최적화 엔진을 사용한다.
- 확장 가능한 연산자를 통해 외부 검증기(예: 문법 검사기, 코드 실행기)를 통합할 수 있도록 지원하여 의미적 및 문법적 검증을 가능하게 한다.
- LMQL 프로그램을 최적화된 추론 파이프라인으로 번역하여 비용이 많이 드는 모델 호출 횟수를 최소화한다.
실험 결과
연구 질문
- RQ1대규모 언어 모델을 위한 고수준 쿼리 언어를 자연어 프롬프팅과 스크립팅, 제약 조건을 통합하여 설계할 수 있는가?
- RQ2이러한 언어가 정확도를 유지하거나 향상시키면서도 모델 호출 횟수와 계산 비용을 줄일 수 있는가?
- RQ3프롬프팅에 제어 흐름과 제약 조건을 통합할 경우 기존 API와 비교해 효율성과 사용성은 어떻게 향상되는가?
- RQ4LMQL은 체인 오브 토의나 자기 일관성과 같은 복잡한 최신 프롬프팅 기법을 간결하고 효율적인 방식으로 얼마나 잘 표현할 수 있는가?
- RQ5사용량 기반 청구 환경에서 LMQL은 모델 성능을 희생시키지 않고도 상당한 비용 절감을 이룰 수 있는가?
주요 결과
- LMQL은 기준 프롬프팅 방법 대비 최대 85%까지 모델 호출 횟수를 감소시켜 추론 비용을 크게 낮춘다.
- 다양한 하류 작업에서 정확도를 유지하거나 향상시키며, 제약 조건이 출력 품질을 향상시키는 경우가 있다.
- LMQL 프로그램은 동등한 파이썬 기반 구현 대비 최대 10배 짧아져 개발 생산성을 향상시킨다.
- 실시간 토큰 수준의 검증을 사용함으로써 조각 단위 디코딩과 백트랙킹이 필요 없어져 효율성이 향상된다.
- 사용량 기반 API 환경에서는 빌링 대상 토큰 수를 최대 80%까지 줄여 상당한 비용 절감 효과를 얻을 수 있다.
- LMQL은 기존 고수준 API로는 구현하기 어려운 복잡한 인터랙티브 프롬프팅 워크플로우(예: 반복적 추론, 제약 조건이 있는 생성)를 가능하게 한다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.