𝗟𝗟𝗠 𝗚𝗮𝘁𝗲𝘄𝗮𝘆𝘀: 𝗥𝗼𝘂𝘁𝗶𝗻𝗴, 𝗙𝗮𝗹𝗹𝗯𝗮𝗰𝗸𝘀, 𝗔𝗻𝗱 𝗦𝗲𝗺𝗮𝗻𝘁𝗶𝗰 𝗖𝗮𝗰𝗵𝗶𝗻𝗴

코드 한 줄이 AI 예산을 망칠 수 있습니다.

앱에 단일 모델 제공자를 하드코딩하면 세 가지 위험에 직면하게 됩니다:

  • 단순한 작업에 높은 비용 발생.
  • 제공업체 장애 시 서비스 전체 중단.
  • 동일한 답변에 대해 수천 번 비용 지불.

LLM 게이트웨이는 앱과 모델 사이에서 프록시 역할을 합니다. 이는 라우팅, 폴백, 캐싱이라는 세 가지 핵심 작업을 처리합니다.

  1. Routing (라우팅) 대부분의 앱은 모든 요청을 가장 비싼 모델로 보냅니다. 이는 낭비입니다. 라우팅을 사용하여 쉬운 작업은 저렴한 모델로 보내세요.
  • 정적 라우팅(Static routing): 사용자 등급이나 작업 유형에 기반한 규칙을 사용합니다.
  • 비용/지연 시간 라우팅(Cost/Latency routing): 사용 가능한 모델 중 가장 빠르거나 저렴한 모델을 선택합니다.
  • 난이도 라우팅(Difficulty routing): 작은 모델을 사용하여 작업에 대형 모델이 필요한지 결정합니다. 연구에 따르면 스마트 라우팅을 통해 품질을 높게 유지하면서도 비용을 80% 이상 절감할 수 있습니다.
  1. Fallbacks (폴백) 제공업체는 실패할 수 있습니다. 속도 제한(rate limits)에 걸리거나 오프라인 상태가 될 수 있습니다. 게이트웨이는 폴백 체인을 관리합니다. 기본 모델이 실패하면 게이트웨이는 목록에 있는 다음 모델을 자동으로 시도합니다. 장애 상황을 악화시키지 않으려면 다음 패턴을 사용하세요:
  • 지수 백오프(Exponential backoff): 어려움을 겪고 있는 제공업체에 과부하를 주지 않도록 재시도 간격을 조절합니다.
  • 서킷 브레이킹(Circuit breaking): 실패하는 제공업체로의 트래픽 전송을 일정 기간 중단합니다. 이를 통해 타임아웃을 기다리는 대신 즉각적인 페일오버(failover)가 가능해집니다.
  1. Semantic Caching (시맨틱 캐싱) 표준 캐싱은 정확한 텍스트 일치를 찾습니다. 하지만 사용자가 질문을 다르게 표현하기 때문에 LLM에서는 이 방식이 통하지 않습니다. 시맨틱 캐싱은 의미를 파악합니다. 프롬프트를 벡터로 변환하고 데이터베이스에 유사한 질문이 있는지 확인합니다.
  • 장점: 캐시 히트(cache hit)는 5ms가 소요되며 비용이 0원입니다. 모델 호출은 수 초가 걸리며 토큰 비용이 발생합니다.
  • 위험 요소: 유사도 임계값(similarity threshold)을 너무 낮게 설정하면 잘못된 답변이 나올 수 있습니다. 임계값이 너무 느슨하면 "비밀번호 재설정"에 대한 질문에 "이메일 변경"에 관한 답변이 돌아올 수 있습니다.

Build or Buy? (직접 구축할 것인가, 구매할 것인가?)

  • 직접 구축: 기본적인 폴백이나 정확한 일치 캐싱과 같은 단순한 요구 사항에 적합합니다.
  • 구매/오픈 소스: 시맨틱 캐싱, 관측성(observability), 복잡한 페일오버 로직이 필요한 경우 LiteLLM과 같은 도구나 관리형 서비스를 사용하세요.

게이트웨이는 기능이 아니라 인프라입니다. 코드베이스 곳곳에 모델 호출을 흩뿌려 놓는 것을 멈추세요. 비용과 신뢰성을 제어할 수 있도록 앞에 게이트를 설치하세요.

LLM 게이트웨이: 라우팅, 폴백 및 시맨틱 캐싱

LLM 기반 애플리케이션이 점점 더 정교해짐에 따라, 여러 LLM 제공업체를 관리하는 복잡성도 함께 증가하고 있습니다. 개발자는 비용, 지연 시간(latency), 신뢰성 및 속도 제한(rate limits)과 같은 다양한 문제를 처리해야 합니다. 바로 이 지점에서 LLM 게이트웨이가 등장합니다.

LLM 게이트웨이는 애플리케이션과 LLM 제공업체 사이에서 중간 계층 역할을 하며, 요청을 최적화하고 관리할 수 있는 다양한 기능을 제공합니다. 이 글에서는 LLM 게이트웨이의 핵심 기능인 라우팅, 폴백, 그리고 시맨틱 캐싱에 대해 알아보겠습니다.

라우팅 (Routing)

라우팅은 사전 정의된 기준에 따라 들어오는 요청을 가장 적합한 LLM 제공업체로 전달하는 프로세스입니다. 단순히 요청을 전달하는 것을 넘어, 다음과 같은 전략을 통해 효율성을 극대화할 수 있습니다.

1. 비용 기반 라우팅 (Cost-based Routing)

모든 작업에 가장 비싼 모델이 필요한 것은 아닙니다. 간단한 작업(예: 텍스트 요약, 분류)은 저렴한 모델로 보내고, 복잡한 추론이 필요한 작업은 고성능 모델로 보내도록 라우팅 규칙을 설정하여 비용을 크게 절감할 수 있습니다.

2. 지연 시간 기반 라우팅 (Latency-based Routing)

사용자 경험을 위해 응답 속도가 중요할 때 사용합니다. 게이트웨이는 각 제공업체의 현재 응답 시간을 모니터링하고, 가장 빠른 응답을 제공하는 모델로 요청을 보냅니다.

3. 기능 기반 라우팅 (Capability-based Routing)

특정 모델이 특정 작업(예: 코드 생성, 다국어 지원)에 더 뛰어난 성능을 보일 수 있습니다. 요청의 의도를 파악하여 해당 작업에 가장 적합한 능력을 갖춘 모델로 라우팅합니다.

폴백 (Fallbacks)

LLM 애플리케이션의 신뢰성을 보장하기 위해서는 폴백 메커니즘이 필수적입니다. API 제공업체는 때때로 서비스 중단, 속도 제한 초과, 또는 일시적인 오류를 겪을 수 있습니다.

폴백은 다음과 같은 방식으로 작동합니다:

  1. 기본 모델 호출: 먼저 지정된 기본 모델(예: GPT-4)에 요청을 보냅니다.
  2. 오류 감지: 요청이 실패하거나(예: 5xx 에러) 속도 제한(429 에러)에 걸리면 게이트웨이가 이를 감지합니다.
  3. 보조 모델로 전환: 즉시 미리 설정된 보조 모델(예: Claude 3 또는 Llama 3)로 요청을 재시도합니다.

이러한 자동화된 폴백 전략을 통해 애플리케이션은 특정 제공업체의 장애에도 중단 없이 서비스를 유지할 수 있는 높은 가용성을 확보할 수 있습니다.

시맨틱 캐싱 (Semantic Caching)

전통적인 캐싱은 정확히 일치하는 문자열(exact string match)을 기반으로 합니다. 하지만 LLM 요청의 경우, 질문의 표현이 조금 다르더라도 의미가 같다면 동일한 응답을 제공하는 것이 효율적입니다. 이것이 바로 시맨틱 캐싱입니다.

작동 원리

시맨틱 캐싱은 다음과 같은 단계를 거칩니다:

  1. 임베딩 생성: 새로운 질문이 들어오면, 질문을 벡터(vector)로 변환하기 위해 임베딩 모델을 사용합니다.
  2. 유사도 검색: 변환된 벡터를 벡터 데이터베이스(Vector Database)에서 검색하여, 기존에 저장된 질문 중 의미론적으로 유사한 질문이 있는지 확인합니다.
  3. 임계값 확인: 유사도 점수가 설정된 임계값(threshold)보다 높으면, LLM을 호출하는 대신 캐시된 응답을 즉시 반환합니다.
  4. 캐시 저장: 유사한 질문이 없다면 LLM에 요청을 보내고, 그 결과와 질문의 임베딩을 함께 캐시에 저장합니다.

시맨틱 캐싱의 이점

  • 비용 절감: 동일하거나 유사한 질문에 대해 LLM API를 반복해서 호출할 필요가 없으므로 토큰 비용이 절감됩니다.
  • 지연 시간 감소: LLM의 생성 과정을 거치지 않고 캐시된 응답을 즉시 반환하므로 응답 속도가 획기적으로 빨라집니다.
  • 처리량(Throughput) 향상: LLM 모델에 가해지는 부하를 줄여 전체 시스템의 처리 능력을 높입니다.

결론

LLM 게이트웨이는 단순한 프록시를 넘어, 프로덕션 환경에서 LLM 애플리케이션을 운영하기 위한 필수적인 오케스트레이션 계층입니다. 라우팅을 통해 비용과 성능을 최적화하고, 폴백을 통해 신뢰성을 확보하며, 시맨틱 캐싱을 통해 효율성을 극대화함으로써 더욱 강력하고 경제적인 AI 서비스를 구축할 수 있습니다.