W&B Inference는 지원되는 호스팅 모델에 접두사 캐싱을 적용하여, 프롬프트 접두사가 동일한 반복 요청을 더 빠르게 처리합니다.
요청의 프롬프트 접두사가 같은 백엔드에서 처리된 이전 요청과 동일하면, 모델은 접두사 전체를 다시 계산하지 않고 이전에 계산된 키-값(KV) 캐시를 재사용합니다. 따라서 반복되는 프롬프트, 긴 system 프롬프트, 공유 접두사가 일정한 워크로드에서 지연 시간이 줄어듭니다.
접두사 캐싱은 지원되는 모델에서 자동으로 적용되므로 요청에서 따로 활성화할 필요가 없습니다. 이 페이지에서는 접두사 캐싱이 가장 효과적인 경우와 cache_salt로 캐시 격리를 제어하는 방법을 설명합니다.
접두사 캐싱이 유용한 경우
접두사 캐싱은 긴 공통 접두사를 공유하는 요청을 반복해서 보낼 때 가장 효과적입니다. 예를 들면 다음과 같습니다.
- 여러 요청에서 재사용되는 긴 system 프롬프트
- 긴 공유 문서 뒤에 서로 다른 사용자 질문이 이어지는 경우
- 요청마다 조금씩만 달라지는 반복적인 평가 프롬프트
- 대화 이력의 상당 부분이 그대로 유지되는 멀티턴 워크로드
캐시 격리
일부 환경에서는 서로 다른 사용자나 애플리케이션 간에 캐시가 재사용되지 않도록 해야 할 수 있습니다. cache_salt 매개변수로 이를 제어할 수 있습니다.
기본적으로 프롬프트 접두사가 동일한 요청은 백엔드에서 허용하는 경우 공유 인프라의 캐시를 재사용할 수 있습니다.
캐시 재사용을 특정 신뢰 경계 내로 제한하려면 cache_salt 요청 매개변수를 설정하세요. 프롬프트 접두사와 cache_salt가 모두 일치하는 경우에만 요청이 접두사 캐시를 재사용합니다.
단일 사용자, 테넌트, 세션 또는 애플리케이션 경계 내에서는 캐시를 재사용하되 다른 호출자와는 재사용하지 않으려면 cache_salt를 사용하세요.
작동 방식
cache_salt의 지정 여부와 값에 따라 캐시 재사용 방식이 다음과 같이 달라집니다.
- 프롬프트 접두사가 같고
cache_salt가 없는 경우: 일치하는 요청 간에 캐시가 재사용될 수 있습니다.
- 프롬프트 접두사가 같고
cache_salt도 같은 경우: 캐시를 재사용할 수 있습니다.
- 프롬프트 접두사가 같지만
cache_salt가 다른 경우: 캐시가 격리되어 salt가 서로 다르면 재사용되지 않습니다.
cache_salt를 지정할 때는 비어 있지 않은 문자열이어야 합니다.
다음 예시는 cache_salt를 사용하여 캐시 재사용을 격리하는 Chat Completion 요청을 보내는 방법을 보여줍니다.
응답 동작
요청에 접두사 캐싱이 적용되었는지 확인하려면 응답의 사용량 세부 정보를 확인하세요. 일부 모델에서는 접두사 캐시가 재사용되면 사용량 세부 정보의 usage.prompt_tokens_details.cached_tokens에 캐시된 토큰 수가 표시될 수 있습니다. 이 필드의 제공 여부는 모델과 백엔드에 따라 다릅니다.
관련 페이지
관련 주제는 다음 페이지를 참고하세요.