Claude Code Costs, Act III — The ecosystem of options for spending less
개요
LLM 비용 절감을 위한 오픈소스 생태계는 크게 세 가지 비용 라인(캐싱된 입력, 캐싱되지 않은 입력, 출력) 중 하나를 공격하며, 모델 범위 프롬프트 캐시를 유지하는지 여부가 핵심입니다.
주요 내용
- 입력/캐시 압축:
* Headroom: 콘텐츠 유형별 압축, 가역성, 안정적인 접두어 유지를 위한 CacheAligner 기능 제공. 자체 보고 결과는 높은 토큰 절감률을 보이나, 독립적인 벤치마크는 낮은 절감률을 나타냄. Headroom은 주로 툴 출력 압축을 통해 절감을 달성하며, 프롬프트 전달 경로에서는 바이트 단위로 전달하여 캐시를 유지함.
* 압축과 캐시의 상호작용: 압축 대상이 캐시된 부분이면 캐시 효과를 상쇄하지만, 캐시되지 않은 부분만 압축하면 캐시와 압축의 효과가 모두 적용됨. CacheAligner는 휘발성 콘텐츠를 분리하여 캐시 안정성을 높임.
* 캐시 파괴 체크리스트: 프록시가 요청을 재직렬화할 때 발생하는 구분 기호/이스케이프, 키 순서, 숫자 정밀도, 미처리 기록 재직렬화 등의 차이로 인해 캐시 히트율이 급격히 감소하여 비용이 증가할 수 있음.
* Microsoft LLMLingua, RTK, lean-ctx: Headroom과 유사한 입력/캐시 쓰기 비용 라인을 공격하는 도구들. LLMLingua는 높은 압축률을 제공하지만 캐시를 파괴할 수 있으며, RTK와 lean-ctx는 특정 유형의 출력을 압축하는 데 유용함.
* 호스팅 및 제공업체 네이티브 압축: OpenAI Compaction, Compresr.ai 등은 텍스트가 로컬을 떠나며 되돌릴 수 없는 압축 방식을 사용함.
* 실수: 캐시된 대화 접두사에 대해 공격적인 입력 압축기를 사용하는 것은 재구축 비용이 절감 비용을 초과할 수 있음.
* 수정: 캐시가 없거나 신선한 꼬리 부분에만 입력 압축기를 사용하거나, 캐시 인식 도구를 활용해야 함.
- 출력 압축:
* Caveman: 모델이 간결한 응답을 생성하도록 지시하여 출력 토큰을 약 65% 절감. 자체 보고 및 커뮤니티 보고 결과 모두 유사한 절감률을 보임. 인간 가독성과 절감률 사이의 절충이 필요함.
* Caveman의 동작 방식: Markdown 프롬프트와 Node.js 배포 시스템으로 구성되며, 다양한 에이전트에 동작 규칙을 주입함. 자연어 활성화, 슬롯 명령, 규칙 재강화 등의 메커니즘을 사용함.
* 핵심 설계 원칙: 최소한의 핵심 동작과 복잡한 배포 시스템을 통해 신뢰할 수 있는 주입을 달성하며, 보안을 강화함.
* 실수: 출력 압축은 캐시를 파괴하지 않고 오히려 개선하지만, 모델 응답의 가독성을 저하시킬 수 있음.
* 수정: 내부/에이전트 간 통신 등 간결성이 우선시되는 경우에 사용하거나, 인간 가독성이 중요한 경우에는 신중하게 사용해야 함.
- 모델 라우터:
* RouteLLM, vLLM Semantic Router: 각 턴의 복잡성에 따라 다른 모델로 라우팅하여 비용을 절감.
* 상태 저장 코딩 에이전트에서의 모델 라우팅 문제점:
* 캐시 손실: 모델마다 캐시가 달라, 다른 모델로 라우팅 시 캐시를 다시 구축해야 하는 비용 발생.
* 추론 전달 비용: 이전 모델의 추론을 새 모델로 전달하고 비용을 지불해야 하지만, 새 모델이 이를 사용하는지 확인할 수 없음.
* 캐시 시간 초과: 장기간 다른 모델을 사용하다 돌아올 경우 캐시가 만료되어 콜드 리드 발생.
* 실수: 대화 내에서 요청별로 모델을 라우팅하는 것은 캐시 손실, 추론 전달 비용 증가, 캐시 만료 등의 문제를 야기하여 오히려 비용이 증가할 수 있음.
* 수정: 대화 또는 하위 에이전트별로 고정적으로 라우팅하거나, 캐시가 없는 상태 저장 호출에만 사용해야 함.
- Claude Code에서의 라우팅 동작:
* 매개변수 오류: 모델마다 지원하는 매개변수가 달라, 단순한 모델 필드 재작성은 오류를 발생시킴.
* 수정: output_config.effort, thinking:{type:"adaptive"} 등의 매개변수를 대상 모델에 맞게 조정해야 함.
시사점
LLM 비용 절감을 위한 다양한 오픈소스 도구들이 존재하지만, 캐시 메커니즘과의 상호작용을 이해하고 모델 범위 캐시를 유지하는 것이 핵심입니다. 출력 압축은 안전한 절감 방법이지만, 입력 압축은 신중한 접근이 필요하며, 모델 라우팅은 캐시 손실 및 추론 전달 비용 증가 등의 단점을 고려해야 합니다.
댓글
GitHub Discussions