청구서가 나오기 전 LLM 비용 회귀를 포착하는 Span 속성들
요약
LLM 비용 급증을 사전에 탐지하기 위해 OpenTelemetry Span에 추가해야 할 핵심 속성들을 제안합니다. team.id, feature.id, llm.model 속성을 활용하여 팀 및 기능 단위의 정밀한 비용 추적과 모니터링 방법을 설명합니다.
핵심 포인트
- team.id를 통한 조직 내 팀별 비용 할당 가능
- feature.id로 특정 제품 기능의 토큰 비용 급증 확인
- llm.model 속성으로 모델 티어별 비용 구분
- TraceQL과 알림 규칙을 활용한 비용 회귀 자동 탐지
기본적인 OTel (OpenTelemetry) + OpenInference span에는 llm.tokens.input과 llm.tokens.output이 숫자 속성으로 포함되어 있습니다. 이는 트레이스(trace) 수준의 디버깅에는 유용합니다. 하지만 팀별 비용 회귀(cost regressions)를 파악하는 데는 유용하지 않은데, 트레이스를 팀별로 그룹화하는 기능이 없기 때문입니다.
가치를 증명한 3가지 추가 속성:
team.id. 게이트웨이 계층(LLM 제공업체로 호출이 라우팅되기 전)의 모든 span에 태깅됩니다. 이는 비용 합산(cost rollup)을 가능하게 하는 컬럼입니다. 이 속성이 없다면 지출을 조직(org) 단위로 할당할 수는 있지만, 조직 내의 특정 팀 단위로는 할당할 수 없습니다.
feature.id. 호출을 트리거한 제품 기능(chat_assistant, summarizer, rag_search)입니다. 이를 통해 전체적인 추세와 비교하여 특정 기능의 토큰 비용이 급증하는 시점을 확인할 수 있습니다.
llm.model. 이미 OpenInference의 표준이지만 강조할 가치가 있습니다. 이 속성이 없다면, 동일한 기능 내에서 저렴한 미니 티어(mini-tier) 모델의 급증과 프런티어(frontier) 모델의 급증을 구분할 수 없습니다.
일일 Tempo + Grafana 쿼리 (TraceQL):
{ resource.service.name = "llm-gateway" }
| histogram_quantile(0.95, llm.tokens.output_total) by (team.id, feature.id, llm.model)
알림 규칙(alert rule): 팀별/기능별 출력 토큰(output-tokens)의 7일 이동 평균이 전주 대비 2배 이상 급증할 때 페이지(page) 알림을 보냅니다. 우리는 지난 분기에 통제 불능의 재시도 루프(retry loop)를 포착했습니다. 조직 수준의 지출 대시보드는 전체 지출이 예산 범위 내에 머물러 있었기 때문에 이를 놓쳤지만, 한 팀의 청구 금액은 조용히 두 배로 늘어나고 있었습니다.
시도했으나 제외한 것들:
user.id 태깅: 대규모 환경에서의 개인정보 보호 문제가 있으며, 팀별 합산(rollup-by-team)만으로도 유스케이스를 충족했습니다.
request.id 태깅: trace_id와 중복되며, 카디널리티(cardinality)만 높입니다.
AI의 도움을 받아 초안을 작성하였으며, 저자가 편집 및 검증하였습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기