본문 바로가기
C.W.K.
Stream
Lesson 07 of 07 · published

판정 모델 호출 비용 관리

~18 min · judges, cost, ops

Level 0추측자
0 XP0/55 lessons0/10 achievements
0/150 XP to next level150 XP to go0% complete

판정 모델 호출 비용은 빠르게 불어나

성능이 뛰어난 판정 모델로 사례 500개를 평가하면 실행할 때마다 $20~100이 들어. 모든 PR에서 실행하면 평가 비용으로 매달 $1,000~5,000을 지불하게 돼. 관리할 수 있는 수준이지만 최적화할 가치는 충분해.

비용을 줄이는 여섯 가지 기법

  1. 해시로 캐시해 — 입력, 프롬프트, 판정 모델이 모두 같다면 결과도 같아. 결과를 캐시하면 변경되지 않은 사례를 다시 실행하는 비용은 0이 돼.
  2. 저렴한 판정 모델을 먼저 쓰고 비싼 판정 모델은 나중에 써 — 첫 판정에는 저렴한 모델을 사용하고, 이 모델이 실패하거나 불확실하다고 판단한 사례만 비싼 판정 모델로 넘겨.
  3. 전체를 평가하기 전에 표본부터 확인해 — 운영 요청을 온라인으로 평가할 때는 전체 호출의 1~5%만 판정하고, 모든 호출을 평가하지는 마.
  4. 가능하면 묶어서 처리해 — API가 지원한다면 여러 사례를 한 요청에 묶어 판정해. Anthropic Batch API나 OpenAI Batch 엔드포인트를 활용할 수 있어.
  5. 구조화된 출력 방식을 우선해 — 잘못된 JSON 때문에 발생하는 재시도를 없애면 실패한 호출에 드는 비용을 5~15% 줄일 수 있어.
  6. 단순한 축에는 작은 모델을 써 — 형식 준수 여부와 길이 확인에는 최상위 모델이 필요하지 않아. 이런 작업에는 Haiku, GPT-mini, 작은 공개 모델을 사용해.
원칙: 질문의 난이도에 맞춰 판정 모델의 성능을 선택해. 미묘한 품질 판단에는 최상위 모델을 쓰고, 단순한 정상 작동 여부 확인에는 작은 모델을 써. 정규식으로 답할 수 있는 질문에 Opus를 쓰는 건 돈을 낭비하는 일이야.

평가 실행당 비용 추적하기

대부분의 LLM 프레임워크는 토큰 사용량을 제공해. 반드시 기록해. 평가 대시보드에는 '평가 실행당 비용' 지표가 보여야 해. 구조를 개선한 뒤 평가 비용이 두 배가 됐다면 다음 청구서가 나오기 전에 바로 알아차릴 수 있어야 하지.

Code

해시 키를 쓰는 판정 모델 캐시·python
import hashlib, json, sqlite3
from pathlib import Path

DB = Path(".eval_cache.sqlite")
conn = sqlite3.connect(DB)
conn.execute("CREATE TABLE IF NOT EXISTS cache (k TEXT PRIMARY KEY, v TEXT, model TEXT, created_at INTEGER)")

def cache_key(prompt, model):
    h = hashlib.sha256()
    h.update(prompt.encode())
    h.update(model.encode())
    return h.hexdigest()

def cached_judge(prompt, model_id, judge_fn):
    k = cache_key(prompt, model_id)
    row = conn.execute("SELECT v FROM cache WHERE k=?", (k,)).fetchone()
    if row:
        return json.loads(row[0])
    out = judge_fn(prompt, model_id)
    conn.execute("INSERT OR REPLACE INTO cache VALUES (?,?,?,strftime('%s','now'))",
                 (k, json.dumps(out), model_id))
    conn.commit()
    return out
2단계 판정 모델 — 저렴한 모델에서 비싼 모델로 이관·python
def two_tier_judge(case, output, cheap, expensive):
    cheap_v = cheap(case, output)
    if cheap_v["verdict"] == "PASS" and cheap_v["confidence"] >= 0.9:
        return cheap_v  # cheap was confident; stop
    return expensive(case, output)

# In practice: 70-80% of cases settle at the cheap tier.
# Total cost for the suite drops 60-70%, with negligible quality loss
# because the expensive judge sees the hard cases.

External links

Exercise

판정 모델 호출에 해시 키 기반 캐시를 추가해. 같은 평가 모음을 두 번 연속 실행하고, 두 번째 실행이 거의 무료로 끝나는지 확인해. 그런 다음 2단계 판정 방식을 적용해 실제 PR 단계 실행에서 비용이 얼마나 줄었는지 측정해.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.