A/B 테스트 - 트래픽 미러링
A/B 테스트 - 트래픽 미러링 (Traffic Mirroring)
프로덕션 트래픽을 평가 목적으로 보조(무음) 모델에 "복제"하는 기능이에요. 무음 모델의 응답은 백그라운드에서 수집되며 기본 요청의 지연 시간이나 결과에 영향을 주지 않아요.
출처: 문서
본문
트래픽 미러링을 사용하면 평가 목적으로 보조(무음) 모델에 프로덕션 트래픽을 "복제"할 수 있어요. 무음 모델의 응답은 백그라운드에서 수집되며 기본 요청의 지연 시간이나 결과에 영향을 주지 않아요.
이 기능은 다음에 유용해요:
- 전환하기 전에 프로덕션 프롬프트에서 새 모델의 성능을 테스트.
- 서로 다른 제공자 간 비용과 지연 시간 비교.
- 더 상세한 모델로 트래픽을 미러링해 문제 디버깅.
Quick Start
트래픽 미러링을 활성화하려면 배포의 litellm_params에 silent_model을 추가하세요.
- SDK
- Proxy
from litellm import Router
model_list = [
{
"model_name": "gpt-5.6-luna",
"litellm_params": {
"model": "azure/chatgpt-v-2",
"api_key": "...",
"silent_model": "gpt-5.6-terra" # 👈 Mirror traffic to gpt-5.6-terra
},
},
{
"model_name": "gpt-5.6-terra",
"litellm_params": {
"model": "openai/gpt-5.6-terra",
"api_key": "..."
},
}
]
router = Router(model_list=model_list)
# The request to "gpt-5.6-luna" will trigger a background call to "gpt-5.6-terra"
response = await router.acompletion(
model="gpt-5.6-luna",
messages=[{"role": "user", "content": "How does traffic mirroring work?"}]
)
config.yaml에 silent_model 추가:
model_list:
- model_name: primary-model
litellm_params:
model: azure/gpt-5.6-luna
api_key: os.environ/AZURE_API_KEY
silent_model: evaluation-model # 👈 Mirror traffic here
- model_name: evaluation-model
litellm_params:
model: openai/gpt-5.6-terra
api_key: os.environ/OPENAI_API_KEY
동작 방식
- 요청 수신: 모델 그룹(예:
primary-model)에 요청이 전달돼요. - 배포 선택: LiteLLM이 그룹에서 배포를 선택해요.
- 기본 호출: LiteLLM이 기본 배포에 호출을 해요.
- 미러링:
silent_model이 있으면 LiteLLM이 그 모델에 백그라운드 호출을 트리거해요.- 동기 호출: 공유 스레드 풀을 사용해요.
- 비동기 호출:
asyncio.create_task를 사용해요.
- 격리: 백그라운드 호출은 원본 요청 파라미터의
deepcopy를 사용하고metadata["is_silent_experiment"] = True를 설정해요. 또한 사용 추적에서 충돌을 막기 위해 로깅 ID를 제거해요.
주요 특징
- 지연 시간 격리: 기본 요청은 준비되는 즉시 반환돼요. 백그라운드(무음) 호출은 차단하지 않아요.
- 통합 로깅: 백그라운드 호출은 Router를 통해 처리되므로 구성된 관측 도구(Langfuse, S3 등)에 자동으로 기록돼요.
- 평가: 로그에서
is_silent_experiment: True플래그를 사용해 기본 호출과 미러링된 호출 사이의 결과를 필터링하고 비교해요.