문서

캐스케이드와 병렬 질문

두 패턴의 동기는 단순합니다. 대형 모델 호출은 비싸고, 대부분의 요청은 쉽습니다. 판단 호출은 생성보다 한두 자릿수 저렴하므로, “저렴한 쪽에 먼저 묻고, 확신이 없으면 에스컬레이션한다”가 당연한 형태입니다.

캐스케이드: 확신하는 곳에서만 판단합니다

의료 환각 탐지에 대한 정면 비교 평가가 깔끔한 숫자를 하나 줍니다.

판단 모델이 최소 90% 확신하는 37%의 사례를 처리하게 하면, 각 대형 모델의 정확도를 그대로 유지하면서 대형 모델 호출의 37%를 제거합니다.

이것은 인용할 가치가 있습니다. 캐스케이드의 절약이 실제로 무엇인지 말해주기 때문입니다. 고신뢰 영역 안에 들어오는 트래픽의 비율이지, 어떤 고정된 비율이 아닙니다. 확신을 더 좁게 잡으면 더 많이 아낍니다 —— 그 확신이 진짜일 때만 그렇고, 이는 다시 캘리브레이션으로 돌아갑니다.

두 가지 세부는 놓치기 쉽습니다.

① 에스컬레이션 후에도 대형 모델에 무제한의 자유를 주면 안 됩니다. 불확실한 행을 LLM에 넘기는 구현 하나는 그 LLM이 동일한 레이블 집합에서 고르도록 강제합니다. 그렇게 하지 않으면 소형 모델의 “확신 없음”이 파이프라인이 소비할 수 없는 출력으로 바뀝니다.

② 한번 선택하면 유지합니다. 어떤 모델 라우터는 프롬프트 캐시 연속성을 지키기 위해 세션 전체 동안 그 선택을 유지합니다. 매 턴 다시 고르면 접두사가 바뀌어 캐시를 버리게 됩니다 —— 저렴한 호출에서 아낀 돈이 캐시를 통해 다시 나갑니다.

병렬 질문: 아끼는 것은 입력입니다

판단 모델은 여러 질문을 하나의 요청에 넣을 수 있으며, 공식 예제들은 수십 개를 한꺼번에 묻습니다.

2,976회 호출에 대한 벤치마크가 그것이 무엇을 사주는지 측정했습니다.

항목 결과
8개 질문을 병렬로 vs 하나씩 입력 토큰에서 중앙값 76–86% 절약
요청당 고정 오버헤드 약 261 입력 토큰

따라서 절약은 “모델이 더 빨리 계산한다”가 아니라 같은 상태를 한 번만 보낸다는 것입니다. 질문이 많을수록 그 고정 오버헤드가 더 얇게 퍼집니다. 질문이 하나나 둘이면 병렬/순차 차이는 실행 간 노이즈와 같은 수준이고, 아키텍처를 바꿀 가치가 없습니다.

반례: 배칭이 순위를 망가뜨릴 수 있습니다

이 페이지에서 가장 직관에 반하는 발견입니다.

DuckDB 확장 하나는 기본적으로 40개 행을 배칭합니다. 벤치마크 결과 배칭 경로는 순위 품질 게이트를 통과하지 못하고, 요청당 한 행은 통과합니다.

이유는 재구성할 수 있습니다. 40개 행을 하나의 요청에 담으면 모델이 40개의 상대 순서를 한 번에 만들어야 하고, 이는 몇 개 후보를 한 번에 비교하는 것보다 어렵습니다. 여기서 비용과 충실도는 충돌합니다 —— 그리고 비용 쪽은 눈에 보이지만(청구서), 충실도 쪽은 그것을 측정할 게이트를 만들지 않으면 보이지 않습니다.

일반 규칙은 이렇습니다. 병렬 질문은 독립적인 질문(분류, 점수 매기기, 판정)에 맞고, 항목들을 서로 비교해야 하는 질문에는 맞지 않습니다.

또 하나의 전제 조건: 오류가 무작위여야 합니다

캐스케이드가 작동하는 것은 암묵적 가정 때문입니다. 소형 모델의 실수는 무작위 잡음이라서 대형 모델이 바로잡을 수 있다는 가정입니다.

독립적인 분포 외 캘리브레이션 테스트는 이와 모순됩니다. Choice와 Score는 체계적으로 과신하고, Boolean은 체계적으로 과소신합니다. 체계적 편향은 잡음이 아닙니다. 소형 모델이 입력의 특정 부류 전체에 대해 높은 신뢰도를 보고하게 만들어, 그 부류가 결코 에스컬레이션되지 않고 매번 틀리게 답해집니다.

그러면 위험은 “정확도가 조금 낮아지는 것”이 아니라 한 종류의 입력 전체가 일관되게 누락되는 것이며, 집계 수준에서는 보이지 않습니다. 그것을 찾으려면 전체가 아니라 하위 클래스별 정확도를 봐야 합니다.

한 문장으로

캐스케이드는 트래픽 중 고신뢰 영역에 놓인 비율만큼을 아끼고, 병렬 질문은 고정 오버헤드를 상각해서 아낍니다. 둘 다 대가가 있습니다. 전자는 소형 모델의 오류가 무작위라고 거는 것이고, 후자는 교차 비교가 필요한 작업을 해칩니다.