Cheap Model First, Strong Model on Failure: Building an Auditable Two-Tier LLM Pipeline
개요
LLM 파이프라인은 저렴한 기본 모델을 먼저 사용하고, 실패 시 더 강력한 모델로 전환하는 2단계 구조를 채택하여 비용 효율성과 견고성을 동시에 확보하는 새로운 접근 방식을 제시합니다.
주요 내용
- 2단계 LLM 파이프라인 구조:
* Lane A (기본): 비용 효율적이거나 무료인 현재 모델을 먼저 사용합니다.
* Lane B (대체): Lane A의 출력이 객관적인 검사를 통과하지 못할 경우에만 더 비싸고 성능이 뛰어난 모델을 사용합니다.
- 핵심 설계 원칙: 모델 자체 판단 배제: LLM의 출력이 충분히 좋은지 여부를 모델 스스로 결정하게 해서는 안 됩니다. 대신, 외부의 결정론적인 검사(예: 테스트 스위트, 파서, 스키마 검증기)가 실패할 때만 상위 단계로 전환해야 합니다.
- 객관적인 검사 (Objective Check):
* pytest 모드: 코드를 파일에 쓰고, 지정된 명령어로 pytest를 실행하여 결과 코드가 0인지 확인합니다.
* valid_json 모드: 출력이 유효한 JSON인지, 그리고 필수 키를 포함하는지 검증합니다.
* regex 모드: 정규 표현식 패턴과 일치하는지 확인합니다.
- 라우팅 로직:
* 입력 프롬프트의 SHA-256 해시를 생성하여 작업 ID를 생성합니다.
* Lane A부터 시작하여 모델 API를 호출하고, 결과를 objective_check 함수로 검증합니다.
* 검사가 통과되거나 마지막 레인(Lane B)에 도달하면 라우팅을 중지하고 결과를 반환합니다.
* Lane A가 실패하고 Lane B로 전환되면 fell_back 플래그를 true로 설정합니다.
* 모든 라우팅 결정은 routes.jsonl 파일에 JSONL 형식으로 기록되어 감사 로그로 활용됩니다.
- 감사 로그(routes.jsonl)의 가치:
* 작업 유형별 전환율 분석: 특정 작업군에서 Lane A가 얼마나 자주 성공하는지 측정하여 합리적인 기본 모델을 설정할 수 있습니다.
* 성공 작업당 실제 비용 계산: Lane A 호출 성공 시 비용과 Lane A 실패 후 Lane B 호출 비용을 비교하여 카테고리별로 최적의 비용 효율성을 분석합니다.
* 신규 릴리즈 회귀 테스트: 새로운 모델 체크포인트로 Lane A를 설정하고 과거 작업 로그를 재처리하여 기존 모델과의 성능을 비교합니다.
- 운영 규칙:
* 결정론적인 검사: LLM을 사용한 평가는 지연 시간을 늘리고 동일한 신뢰도 문제를 야기하므로 피해야 합니다.
* 최대 2단계: 3단계 이상의 계단식 구조는 복잡성을 증가시키고 디버깅을 어렵게 만듭니다. Lane B 실패 시에는 인간의 개입이 필요합니다.
* 프롬프트 지문(Fingerprint) 사용: 민감한 프롬프트 내용을 로그에 저장하는 대신, SHA-256 해시를 사용하여 중복을 제거하고 상관관계를 파악합니다.
- 한계점:
* 검사가 없는 작업: 개방형 텍스트 생성, 아키텍처 판단 등 객관적인 검사가 불가능한 작업에는 이 접근 방식이 적합하지 않습니다.
* 지연 시간 민감 경로: Lane A 실패 후 Lane B 재시도는 전체 응답 시간을 두 배로 늘릴 수 있으므로, 백그라운드 작업이나 배치 처리 환경에 적합합니다.
* 무료 모델의 지속성 불확실성: 무료 모델이나 서버 옵션은 일시적일 수 있으므로, 엔드포인트를 설정값으로 관리해야 합니다.
* 데이터 부족: 15개의 작업으로는 유의미한 결론을 내릴 수 없으며, 최소 50개 이상의 데이터로 분포를 살펴보는 것이 좋습니다.
- 구체적인 시작점:
* 최근 50개의 실제 프롬프트를 수집하여 결정론적 검사가 가능한 부분과 불가능한 부분을 분류합니다.
* 검증 가능한 프롬프트 서브셋을 2단계 설정으로 1주일간 테스트합니다.
* MonkeyCode와 같은 플랫폼의 무료 옵션을 활용하여 데이터 수집 비용을 절감할 수 있습니다.
시사점
새로운 LLM 모델 출시 주기에 맞춰 모델 선택을 일회성 결정이 아닌 런타임 정책으로 전환함으로써, 비용 효율성을 높이고 특정 워크로드에 대한 모델의 적합성을 객관적으로 평가할 수 있는 감사 가능한 시스템을 구축할 수 있습니다.
댓글
GitHub Discussions