トークン管理
API へのトラフィックに急激なスパイクが発生したと想像してください。セールやその他の理由が存在するのかもしれません。 過剰な消費とサービス中断の可能性を回避するには、それを管理する方法を理解する必要があります。
Azure OpenAI トークン制限ポリシー
このユニットの冒頭で説明したように、急激なスパイクは対処する必要がある事象です。 幸いなことに、Azure API Management にはトークン制限ポリシーと呼ばれるものが存在します。
このポリシーは、利用者がトークン使用量に対して 1 分あたりのトークン数 (TPM) で表される制限を設定できるようにし、OpenAI リソースの公平かつ効率的な利用を実現します。
主要な機能
このポリシーの主な機能は以下のとおりです。
- 正確な制御:利用者は、サブスクリプション キーや IP アドレスなど、さまざまなカウンター キーに対してトークンベースの制限を割り当て、特定のユース ケースに合わせて適用条件を調整できます。
- リアルタイム監視:このポリシーは、OpenAI エンドポイントから返されるトークン使用状況メトリックを利用し、リアルタイムでの正確な監視と制限の適用を可能にします。
- トークンの事前計算:これは、Azure API Management 側でのプロンプト トークンの事前計算を有効にし、制限を既に超過している場合の OpenAI バックエンドへの不要な要求を最小限に抑えます。
- 高度なカスタマイズ:利用者は、ポリシー内で tokens-consumed や remaining-tokens などのヘッダーと変数を適用して、より適切な制御とカスタマイズを実現できます。
これで明らかになったように、コストを管理するのに役立つ機能は多数存在し、リアルタイム監視のおかげで、自分が制限を超えていないことを確認することができます。
使用方法
このポリシーを使用するには、それを 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 アドレスを指定できます。
- tokens-per-minute:許可される 1 分あたりのトークン数。
- estimate-prompt-tokens:プロンプト トークンの見積もりを行うかどうか。
Azure OpenAI 生成トークン メトリック ポリシー
このポリシーは、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 によって使用されているトークンの数を確認できます。 この強力な機能は、リソースを最適化し、スケーリングとリソース管理に関する情報に基づいた意思決定を行うのに役立ちます。