토큰 관리

완료됨

API에 대한 트래픽이 갑자기 급증했다고 상상해보세요. 세일이나 다른 이유가 있을 수도 있죠. 과도한 사용량과 서비스 중단을 피하려면 이를 관리하는 방법을 알아야 합니다.

Azure OpenAI 토큰 한도 정책

이 장의 시작 부분에서 언급했듯이, 갑작스런 급증은 처리해야 할 문제입니다. 좋은 소식은 Azure API Management에 토큰 제한 정책이라는 기능이 있다는 것입니다.

이 정책을 통해 고객은 토큰 사용량에 한도를 설정할 수 있으며, 이는 TPM(분당 토큰)으로 표시되며 OpenAI 리소스의 공정하고 효율적인 활용을 보장합니다.

주요 특징

이 정책의 주요 기능은 다음과 같습니다.

  • 정밀 제어: 고객은 구독 키나 IP 주소와 같은 다양한 카운터 키에 토큰 기반 한도를 할당하여 특정 사용 사례에 맞게 적용을 조정할 수 있습니다.
  • 실시간 모니터링: 이 정책은 OpenAI 엔드포인트에서 반환된 토큰 사용 현황 메트릭을 활용하여 실시간으로 정확한 모니터링과 제한 적용이 가능합니다.
  • 토큰 사전 계산: Azure API Management 쪽에서 프롬프트 토큰을 미리 계산하여 한도가 이미 초과된 경우 OpenAI 백 엔드에 대한 불필요한 요청을 최소화합니다.
  • 향상된 사용자 지정: 고객은 정책 내에서 사용된 토큰과 남은 토큰과 같은 헤더와 변수를 적용하여 보다 나은 제어와 사용자 지정을 구현할 수 있습니다.

보시다시피 비용을 관리하는 데 도움이 되는 기능이 꽤 많고 실시간 모니터링 덕분에 한도를 초과하지 않는지 확인할 수 있습니다.

사용 방법

이 정책을 사용하려면 API 작업의 인바운드 처리 파이프라인에 정책을 추가해야 합니다. 방법은 다음과 같습니다.

<azure-openai-token-limit counter-key="key value"
        tokens-per-minute="number"
        estimate-prompt-tokens="true | false"    
        retry-after-header-name="custom header name, replaces default 'Retry-After'" 
        retry-after-variable-name="policy expression variable name"
        remaining-tokens-header-name="header name"  
        remaining-tokens-variable-name="policy expression variable name"
        tokens-consumed-header-name="header name"
        tokens-consumed-variable-name="policy expression variable name" />

설정할 수 있는 특성은 꽤 많지만 가장 중요한 특성은 다음과 같습니다.

  • counter-key: 토큰을 세는 데 사용하는 키입니다. 이 값은 구독 키나 IP 주소가 될 수 있습니다.
  • 분당 토큰: 1분에 허용되는 토큰 수입니다.
  • 예상 프롬프트 토큰: 프롬프트 토큰을 예상할지 여부.

Azure OpenAI Emit 토큰 메트릭 정책

이 정책은 Azure OpenAI 모델을 사용하는 애플리케이션에서 상세한 모니터링토큰 사용 분석의 필요성을 다룹니다.

포괄적인 메트릭을 제공함으로써 조직이 다음과 같은 작업을 수행할 수 있도록 돕습니다.

  • 리소스 할당 최적화: 토큰 사용량을 효과적으로 이해하고 관리합니다.
  • 의사 결정 개선: 크기 조정 및 리소스 관리에 대한 합리적 결정을 내리기 위해 사용 패턴에 대한 인사이트를 얻습니다.
  • 성능 모니터링 강화: 토큰 사용을 추적하고 분석하여 잠재적인 문제를 적극적으로 식별하고 해결합니다.

내보내기 토큰 메트릭 정책을 사용하는 방법

이 정책을 사용하려면 API 작업의 인바운드 처리 파이프라인에 정책을 추가해야 합니다. XML로 인코딩하는 방법은 다음과 같습니다.

<azure-openai-emit-token-metric
        namespace="metric namespace" >      
        <dimension name="dimension name" value="dimension value" />
        ...additional dimensions...
</azure-openai-emit-token-metric>

다음은 여러 차원을 사용한 예입니다.

<policies>
  <inbound>
      <azure-openai-emit-token-metric
            namespace="AzureOpenAI">   
            <dimension name="User ID" />
            <dimension name="Client IP" value="@(context.Request.IpAddress)" />
            <dimension name="API ID" />
        </azure-openai-emit-token-metric> 
  </inbound>
  <outbound>
  </outbound>
</policies>

앞의 예에서:

  • 정책은 사용자 ID, 클라이언트 IP, API ID에 대한 차원이 포함된 토큰 메트릭을 AzureOpenAI 네임스페이스로 내보내도록 구성되어 있습니다.
  • 클라이언트 IP 차원의 값은 요청을 하는 클라이언트의 IP 주소로 설정됩니다.

이제 이러한 메트릭을 대시보드에 표시하고 API 사용량을 실시간으로 모니터링할 수 있다고 상상해 보세요. 예를 들어, 특정 사용자가 얼마나 많은 토큰을 사용하고 있는지, 또는 특정 API가 얼마나 많은 토큰을 사용하고 있는지 확인할 수 있습니다. 이 강력한 기능은 리소스를 최적화하고 크기 조정 및 리소스 관리에 대한 합리적 결정을 내리는 데 도움이 됩니다.

지식 점검

1.

토큰 제한 정책은 API 사용 관리에 어떻게 도움이 되나요?

2.

Azure API Management에서 토큰 메트릭 정책에 사용할 수 있는 좋은 차원은 무엇이며, 그 이유는 무엇인가요?