Quail은 SQL 안에서 AI로 문서를 분류하거나 문서 간 관계를 판별하는 엔진으로, 데이터 전체에 걸친 수십만~수백만 번의 모델 호출을 빠르게 처리함
- 호출을 하나씩 추론 서버에 보내는 대신
쿼리 실행 계획과 모델 추론을 함께 최적화해, 같은 문서를 반복해서 읽고 계산하는 낭비를 줄임
- 후속 필터와 조인에 필요한
KV 캐시를 재사용하고, CPU의 작업 준비와 GPU 실행을 겹쳐 GPU가 대기하는 시간을 줄임
- H100 한 대와 Qwen3 4B FP8을 사용한 자체 평가에서
29개 쿼리 중 27개가 vLLM보다 빨랐으며, 속도 향상의 기하평균은 1.84배였음. 긴 의료 보고서를 반복 비교하는 쿼리에서는 14.04배를 기록함
영화 리뷰 10만 건에서 두 조건에 맞는 리뷰를 추리는 작업을 모델 시작까지 약 5분 35초, GPU 비용 약 0.37달러에 수행함
SQL 안에서 수백만 번의 AI 판정 실행하기
AI-SQL은 자연어 프롬프트로 정의한 AI 함수를 SQL에서 호출하는 방식임
-
필터는 행마다, 단순한 조인은 후보 행 쌍마다 모델을 호출하므로
SQL 쿼리 하나가 수십만~수백만 번의 추론 요청을 만들 수 있음
-
기존 시스템은 불필요한 호출을 제거하거나 저렴한 모델을 사용해 비용을 낮추지만, 최적화 이후에도 대량의 호출이 남음
-
관련 요청을 범용 추론 엔진에 개별적으로 보내면
CPU의 요청 관리와 반복 계산이 병목이 됨
-
CPU가 요청을 준비하고 추적하는 동안 GPU가 대기함
-
나중에 다시 사용할 문서의 KV 캐시를 버리면 같은 내용을 재계산해야 함
Quail의 핵심: 쿼리 계획이 추론을 제어하기
Quail은 SQL 실행 계획과 모델 추론을 함께 최적화하는 엔진임
-
어떤 필터와 조인을 먼저 실행할지뿐 아니라, 어떤 문서의 KV 캐시를 언제까지 보존할지도 결정함
-
개별 요청만 보는 추론 서버와 달리
쿼리 전체에서 이어지는 작업과 재사용 관계를 활용함
-
필터의 예상 통과 비율과 계산 비용으로 실행 순서를 정하고, 조인에서는 캐시 재사용에 유리한 문서를 프롬프트 앞에 배치함
-
앞에 놓는 문서를
앵커(anchor) 로 삼아 여러 비교 대상과의 판정에 재사용함
-
필터를 통과한 문서 배치는 전체 단계가 끝나기를 기다리지 않고 다음 연산으로 바로 전달함
-
예를 들어 의료 보고서를 두 종류의 이상 반응 용어와 차례로 비교한다면,
두 조인이 끝날 때까지 보고서의 KV를 GPU 메모리에 유지함
-
GPU가 현재 배치를 처리하는 동안 CPU는 다음 배치를 준비해 대기 시간을 줄임
필요한 캐시만 남기고 판정에 맞춰 계산하기
KV 되감기(rewind) 는 판정 후 질문 부분의 캐시를 버리고, 다음 판정에서도 사용할 문서 부분만 남기는 방식임
-
필터를 통과해 후속 연산에 쓰일 문서는 보존하고, 탈락했거나 더 이상 필요 없는 문서는 해제함
-
메모리가 부족하면 재계산 비용이 작은 짧은 문서부터 제거함
-
같은 앵커와 비교하는 대상들을 묶어
조인 전용 어텐션을 계산함
-
각 문서 쌍이 앵커의 KV를 따로 읽는 대신 공유해 반복적인 메모리 읽기를 줄임
-
AI 필터와 조인은 TRUE/FALSE 판정만 필요하므로
전체 어휘가 아닌 해당 답변의 점수만 계산함
-
작은 GPU 연산도 결합해 커널 실행 횟수와 중간 데이터 전송을 줄임
-
vLLM의 모델 구현을 활용하되 자체 스케줄러와 KV 관리자로 실행함
영화 리뷰 10만 건을 약 0.37달러에 분석하기
- Arrow 테이블이나 데이터셋을 등록하고
SQL 또는 pandas와 유사한 Python 인터페이스로 질의할 수 있음
- 현재 AI 필터와 조인, 열 선택,
LIMIT
을 지원함
와 BigQuery의 AI.IF
표기를 지원함
-
IMDB 실행 예제는 리뷰
10만 건에서 “결말을 다루면서 관람을 추천하는 리뷰”를 찾음
-
첫 번째 조건을 2만 8,296건이 통과하고, 두 번째 조건까지 만족한
1만 6,057건을 반환함
-
H100 한 대와 Qwen3 4B FP8으로 쿼리 실행에 약 4분 37초, 모델 시작까지 포함하면
약 5분 35초가 걸림
-
Modal의 GPU 요금을 적용한 비용은 시작 시간을 포함해
약 0.37달러이며, 데이터셋 다운로드는 제외함
-
전용 GPU 없이도 Modal 실행 예제를 이용할 수 있음
-
현재 H100에서 Qwen3 4B FP8, Qwen3 32B FP8, DiffusionGemma를 지원함
vLLM과의 성능 비교
QUAIL-B는 영화 리뷰, 의료 보고서, 사실 확인, 법률 문서, 에이전트 실행 기록에 걸친 29개 AI-SQL 쿼리로 구성됨
-
동일한 H100 한 대에서 같은 모델, 프롬프트와 논리 실행 계획으로 비교함
-
vLLM에도 Quail이 선택한 연산자 순서와 빠른 토큰화를 적용하고, 자동 접두사 캐시를 활성화함
-
규모 계수 0.1 평가에서 Quail은
29개 중 27개 쿼리에서 더 빨랐으며, 쿼리별 속도 향상의 기하평균은 1.84배였음
-
전체 실행시간은 Quail 약 27분, 기본 vLLM 약 74분이었음
-
긴 의료 보고서를 반복 비교하는
BIO-4에서 차이가 가장 크게 드러남
-
보고서 5,000개와 이상 반응 용어 4,144개로 필터와 두 번의 조인을 수행함
-
전체 규모에서 Quail은
29.26분, 기본 vLLM은 6.84시간으로 Quail이 14.04배 빠름
-
모델 시작을 제외한 GPU 비용도
1.93달러 대 27.03달러로 줄어듦
SoL(Speed of Light) 은 GPU의 최고 성능과 이상적인 캐시 재사용을 가정한 낙관적 실행시간 하한임
- BIO-4의 SoL 추정치는 약 14.91분으로, Quail에도 추가 개선 여지가 있음
서로 다른 문서의 공통 접두사에서는 vLLM이 우세
AGENT-1은 에이전트 실행 기록의 누적 스냅샷 1,772개에서 실패 후 회복했는지 판정함
-
같은 실행의 10번째 턴 기록에 5번째 턴까지의 내용이 포함되는 식으로, 서로 다른 행에 같은 접두사가 반복됨
-
vLLM의 자동 접두사 캐시는 이런 중복을 인식하지만, Quail은 현재
동일 문서가 다시 사용될 때의 캐시만 재사용함
-
AGENT-1에서는 Quail 약 239초, vLLM 약 103초로 Quail이
2.32배 오래 걸림
-
행 사이의 공통 접두사를 재사용하는 기능을 추가할 계획임
Jev식 판정을 데이터셋 전체로 확장하기
Jev가 애플리케이션의 빠르고 제한된 판정을 겨냥한다면, Quail은 이를 대규모 배치 분석으로 확장함
-
긴 답변을 생성하기보다 데이터셋 전체에 수천~수백만 번의 관련 판정을 수행함
-
LLM을 이용한 평가, 라벨링, 에이전트 실행 기록 압축과 대규모 데이터 변환에 활용할 수 있음
-
속도와 판정 능력 사이에서 모델을 선택할 수 있음
-
IMDB-2에서 DiffusionGemma의 Qwen3 32B 답변 일치율은
88.89% 로, Qwen3 4B의 76.41%보다 높았음
-
실행시간은 약 32초 대 21초로, 더 오래 걸리는 대신 큰 모델의 판정에 가까운 결과를 냄
-
향후 지원 모델과 하드웨어를 늘리고,
MacBook용 소형 모델, CPU 메모리·SSD를 활용한 캐시 보관, 행 간 접두사 재사용을 추진함
-
작은 모델로 필터 통과율을 예측하고, 문서를 한 번만 인코딩해 조인에 재사용하는 방식도 연구함
MIT 라이선스로 공개하며, 사용 문서와 실행 예제를 제공함
댓글과 토론