토큰 비용 측정 — 통화 1건이 얼마인가
무엇을
통화 1건당 토큰 수와 비용을 잰다(8주 마일스톤 7주차).
우리 구성에서 「비용」이 무엇인가
생성은 로컬 Ollama(EXAONE-4.0-1.2B) 라 API 과금이 없다 — 돈으로 나가는 것은 GPU 점유 시간이고, 그것을 대신 재는 지표가 토큰 수와 생성 시간이다. API 요금표를 가져다 곱하지 않는다(우리가 내지 않는 돈이다).
실제로 돈이 나가는 것은 Google STT 다(COST-1). 그쪽은 이미 이중 캡이 걸려 있다 —
GCP 쿼터 하드 리밋 + STT_MAX_SECONDS_PER_DAY/_MONTH(w1-stt-billing-quota).
완료 조건
- 통화 1건당 입력·출력 토큰 수(카드 n장 기준)와 생성 시간
- STT 초 수도 함께 — 일·월 캡 대비 몇 % 인지
- GPU 1장을 파드끼리 나눠 쓰는 구성(런북 11장)에서 동시 통화 몇 건까지 버티는지 추정 근거를 적는다
- 추정이면 「추정」이라고 적는다(절대 원칙 2·10)
2026-09-15 — 전부 추정이다. 실제 통화를 재지 않았다
.venv/bin/python scripts/estimate_call_cost.py
재료: 생성 kanana-1.5-2.1b-instruct:q4_k_m · 96문항 · 커밋 38f2fc3-dirty · AI Hub 대화셋 1009개 · STT 캡 일 600s / 월 3600s
통화당 트리거(고객 턴): 평균 10.25 · p90 11
생성 1회: 입력 210 + 출력 24 토큰(최대 391) · p50 0.53s
[추정] 통화 1건 생성 토큰: 평균 2,395 · 나쁜 경우(p90 턴 × 최대 토큰) 4,301
[추정] 통화 1건 GPU 생성 시간(상위 1건, NUM_PARALLEL=1): 5.4s
[추정·하한] 통화 1건 STT 초(발화 길이 합): 146s → 일 캡 4.1건 · 월 캡 24.7건
[추정] GPU 생성 점유율(통화 1건): 3.7% → 평균만 보면 동시 27통화까지 큐가 쌓이지 않는다
무엇으로 추정했나 — 새로 지어낸 수는 없다
| 항목 | 재료 | 한계 |
|---|---|---|
| 생성 1회 토큰·지연 | eval_generation.py 실측(96문항, 로컬 Apple Silicon) |
운영 T4 미측정 |
| 통화당 트리거 | 트리거 v1 이 고객 확정 발화마다 발동 → AI Hub 다산 대화셋 1,009개의 고객 턴 수 | 텍스트 대화셋이다. 실제 통화의 턴 수가 아니다 |
| 발화 길이 | 다산콜DB 역할별 중앙값(민원인 5.86s · 상담사 8.66s, 09-09 통화 온도 측정) | ⚠ 연기된 시나리오 음성 |
| STT 캡 | infra/k8s/base/call-mediator.yaml 일 600s · 월 3,600s |
— |
읽는 법
- 돈으로 나가는 것은 STT 다. 생성은 로컬 Ollama 라 토큰 요금이 없다 — API 요금표를 곱하지 않았다(우리가 내지 않는 돈이다)
- ⚠ 지금 캡으로는 하루 약 4통화, 한 달 약 25통화다. STT 초는 발화 길이 합이라 침묵이 빠진 하한이므로 실제로는 더 적다. 시연 리허설을 여러 번 하면 캡에 걸린다 — 캡은 COST-1 이중 가드라 올리는 것은 정성윤 님과 정할 일이다 → 미결
- 동시 통화 27건은 평균 점유율의 역수일 뿐이다. 트리거가 몰리는 순간(여러 통화의 고객이 동시에 말을 끝낸 때)은 줄을 서고, 4.3절 p95 ≤1,000ms 는 그보다 훨씬 먼저 깨진다. Ollama 와 server 파드가 T4 를 시분할하는 구성(런북 11장)의 실제 값은 측정 불가 — 운영에서 안 쟀다
- 생성은 운영에 안 켜져 있다(
GENERATION_MODEL미설정) — 지금 운영의 생성 비용은 0 이다