LiteLLM

LiteLLM 7강

[최적화] 캐싱 — 응답·시맨틱 캐시

같은 질문을 매번 LLM에 보내면 돈과 시간이 낭비된다. 캐싱은 동일(또는 의미가 비슷한) 요청의 응답을 저장해 두었다가 즉시 반환한다. 캐시 HIT는 지연이 거의 0이고 추가 비용도 0이다.

LiteLLM 7강 구성도

이 강의 목표는 인메모리·Redis·시맨틱 캐시를 켜고, 캐시 동작을 제어하는 것이다.

1. 캐시 백엔드

타입 특징
local 프로세스 메모리(단일 인스턴스)
redis 분산·공용(여러 인스턴스 공유)
s3 / gcs 영속 저장
redis-semantic 의미 유사도 기반 캐시

2. 정확 일치 캐시(Redis)

import litellm
from litellm import completion
from litellm.caching import Cache

litellm.cache = Cache(type="redis", host="localhost", port=6379)

# (model + messages)가 같으면 두 번째 호출은 캐시에서 즉시 반환
for _ in range(2):
    r = completion(model="openai/gpt-4o",
                   messages=[{"role":"user","content":"파이썬이란?"}],
                   caching=True)

3. 시맨틱 캐시

프롬프트가 글자까지 같지 않아도 의미가 유사하면 HIT시킨다. 임베딩 유사도 임계값(similarity_threshold)으로 민감도를 조절한다.

litellm.cache = Cache(
    type="redis-semantic",
    host="localhost", port=6379,
    similarity_threshold=0.8,
    redis_semantic_cache_embedding_model="text-embedding-3-small",
)

핵심 명령·용어

이름
litellm.cache = Cache(...) 캐시 활성화
caching=True 해당 호출에 캐시 적용
type="redis-semantic" 시맨틱 캐시
similarity_threshold 유사도 임계값

예제

# 특정 호출만 캐시 무시하고 새로 생성
r = completion(model="openai/gpt-4o", messages=msgs,
               caching=True, cache={"no-cache": True})  # 강제 미스

해설) no-cache는 최신 답이 필요할 때 캐시를 우회한다. Redis 백엔드는 여러 게이트웨이 인스턴스가 캐시를 공유하므로 운영 환경에서 특히 효과가 크다.

댓글 0