Azure OpenAI Service のクォータを管理する

クォータを使用すると、サブスクリプション内のデプロイ全体で、レート制限の割り当てを柔軟に管理できます。 この記事では、Azure OpenAI のクォータを管理するプロセスについて説明します。

前提条件

重要

クォータの表示とモデルのデプロイには、Cognitive Services 使用状況閲覧者ロールが必要です。 このロールは、Azure サブスクリプション全体のクォータの使用状況を表示するために必要な最小限のアクセス権を提供します。 このロールと、Azure OpenAI にアクセスするために必要な他のロールの詳細については、Azure ロールベースのアクセス (Azure RBAC) ガイドを参照してください。

このロールは、Azure portal の [サブスクリプション]>[アクセス制御 (IAM)]>[ロール割り当ての追加]> で Cognitive Services 使用状況閲覧者を検索して見つけることができます。このロールは、サブスクリプション レベルで適用する必要があります。リソース レベルでは存在しません。

このロールを使用しない場合は、サブスクリプション閲覧者ロールによって同等のアクセスが提供されますが、クォータとモデルのデプロイの表示に必要な範囲を超えた読み取りアクセスも付与されます。

クォータの概要

Azure OpenAI のクォータ機能を使用して、"クォータ" と呼ばれるグローバル制限まで、デプロイにレート制限を割り当てることができます。 クォータは、リージョンごと、モデルごとに、TPM (Tokens-per-Minute) 単位でサブスクリプションに割り当てられます。 Azure OpenAI にサブスクリプションをオンボードすると、最も使用可能なモデルの既定のクォータを受け取ります。 次に、デプロイの作成時に各デプロイに TPM を割り当てます。そのモデルに対して使用可能なクォータは、その量により削減されます。 クォータ制限に達するまで、デプロイを作成して TPM を割り当て続けることができます。 これが発生する場合、そのモデルの新しいデプロイを作成するには、同じモデルの他のデプロイに割り当てられている TPM を減らす (これにより、TPM を解放して使用できるようにする) か、目的のリージョンでモデル クォータの増加を要求して承認される必要があります。

注意

米国東部の GPT-35-Turbo の割り当てが 240,000 TPM の場合、顧客は、240,000 TPM の 1 つのデプロイ、それぞれ 120,000 TPM のデプロイ 2 つ、1 つまたは複数の Azure OpenAI リソースに任意の数のデプロイを作成でき、TPM は、そのリージョンで合計 240K 未満になります。

デプロイが作成されると、割り当てられた TPM は、推論要求で適用される TPM (Tokens-per-Minute) のレート制限に直接マップされます。 1 分あたりの要求 (RPM) レート制限も適用され、その値は次の比率を使用して TPM 割り当てに比例して設定されます。

1000 TPM あたり 6 RPM。

サブスクリプションとリージョン内で TPM をグローバルに分散する柔軟性により、Azure OpenAI Service は次の他の制限を緩和できます。

  • リージョンあたりの最大リソース数は 30 まで増加します。
  • リソース内に同じモデルのデプロイを 1 つ以上作成できないという制限が削除されました。

クォータを割り当てる

モデル デプロイを作成するときに、そのデプロイに TPM (Tokens-per-Minute) を割り当てるオプションがあります。 TPM は 1,000 単位で変更でき、上で説明したように、デプロイに適用される TPM および RPM レート制限にマップされます。

Azure AI Studio 内の [管理] から新しいデプロイを作成するには、[デプロイ]>[新しいデプロイの作成] を選択します。

TPM を設定するオプションは、次の [詳細オプション] のドロップダウンにあります。

Screenshot of the deployment UI of Azure AI Studio

デプロイ後は、Azure AI Studio の [管理>デプロイ][デプロイの編集] を選択して、TPM の割り当てを調整できます。 この選択は、新しいクォータ管理エクスペリエンスの [管理>クォータ] で変更することもできます。

重要

クォータと制限は変更される可能性があります。最新情報については、 クォータと制限に関する記事を参照してください。

モデル固有の設定

モデル クラスとも呼ばれるさまざまなモデル デプロイには、制御できるようになった一意の最大 TPM 値があります。 これは、特定のリージョン内のモデル デプロイのその種類に割り当てることができる TPM の最大値を表しています。 各モデルの種類は独自の一意のモデル クラスを表していますが、TPM の最大値は現在、特定のモデル クラスでのみ異なります。

  • GPT-4
  • GPT-4-32K
  • Text-Davinci-003

他のすべてのモデル クラスには、共通の最大 TPM 値があります。

Note

クォータ TPM (Tokens-per-Minute) 割り当ては、モデルの最大入力トークン制限とは関係ありません。 モデル入力トークンの制限は モデル テーブル で定義され、TPM に加えられた変更の影響を受けません。

クォータの表示と要求

特定のリージョン内のデプロイ間のクォータ割り当てをすべて表示するには、Azure AI Studio の [管理>クォータ] を選択します。

Screenshot of the quota UI of Azure AI Studio

  • クォータ名: モデルの種類ごとにリージョンごとに 1 つのクォータ値があります。 クォータは、そのモデルのすべてのバージョンをカバーします。 クォータ名を UI で展開すると、クォータを使用しているデプロイを表示できます。
  • デプロイ: モデル デプロイをモデル クラスで除算します。
  • 使用量/制限: クォータ名には、デプロイによって使用されるクォータの量と、このサブスクリプションとリージョンに対して承認されたクォータの合計が表示されます。 この使用量のクォータは、棒グラフでも表示されます。
  • 要求クォータ: このフィールドのアイコンは、クォータを増やす要求を送信できるフォームに移動します。

既存のデプロイを統合する

新しいクォータ システムと TPM ベースの割り当てへの移行の一環として、既存のすべての Azure OpenAI モデル デプロイがクォータを使用するように自動的に移行されています。 以前のカスタム レート制限の増加により、既存の TPM/RPM 割り当てが既定値を超えた場合は、影響を受けるデプロイに同等の TPM が割り当てられます。

レート制限について理解する

デプロイに TPM を割り当てると、前述のように、デプロイの TPM (Tokens-per-Minute) と RPM (Requests-Per-Minute) レート制限が設定されます。 TPM レート制限は、要求の受信時に要求によって処理されると推定されるトークンの最大数に基づいています。 これは、すべての処理が完了した後に計算される請求に使用されるトークン数と同じではありません。

各要求が受信されると、Azure OpenAI は以下を含む推定最大処理トークン数を計算します。

  • プロンプト テキストとカウント
  • max_tokens パラメーターの設定
  • best_of パラメーターの設定

要求がデプロイ エンドポイントに入ると、推定最大処理トークン数は、1 分ごとにリセットされるすべての要求の実行中のトークン数に追加されます。 この 1 分間のいずれかの時点で TPM レート制限値に達すると、カウンターがリセットされるまで、それ以降の要求は 429 応答コードを受け取ります。

RPM レート制限は、時間の経過と同時に受信した要求の数に基づいています。 レート制限では、1 分間に要求が均等に分散されることを想定しています。 この平均フローが維持されない場合、1 分間測定しても制限が満たされない場合でも、要求は 429 応答を受け取る可能性があります。 この動作を実装するために、Azure OpenAI Service は、短い時間 (通常は 1 秒または 10 秒) にわたる受信要求の速度を評価します。 その間に受信した要求の数が設定された RPM 制限で予想される数を超えた場合、新しい要求は次の評価期間まで 429 応答コードを受け取ります。 たとえば、Azure OpenAI が 1 秒間隔で要求レートを監視している場合、1 秒ごとに 10 件を超える要求を受信すると、600 RPM デプロイでレート制限が発生します (1 分あたり 600 件の要求 = 1 秒あたり 10 件の要求)。

レート制限のベスト プラクティス

レート制限に関連する問題を最小限に抑えるには、次の手法を使用することをお勧めします。

  • max_tokens と best_of を、シナリオのニーズに対応する最小値に設定します。 たとえば、応答が小さいと予想される場合は、max-tokens 値を大きく設定しないようにします。
  • クォータ管理を使用して、トラフィックの多いデプロイで TPM を増やし、必要が限られたデプロイでの TPM を減らします。
  • アプリケーションで再試行ロジックを実装します。
  • ワークロードが急激に変化しないようにします。 ワークロードは徐々に増やします。
  • さまざまな負荷増加パターンをテストします。

デプロイの自動化

このセクションには、クォータを使用して TPM レート制限を設定するデプロイの作成をプログラムで開始するのに役立つ簡単なテンプレートの例が含まれています。 クォータの導入により、リソース管理関連のアクティビティには API バージョン 2023-05-01 を使用する必要があります。 この API バージョンはリソースの管理のみを目的としており、補完、チャット補完、埋め込み、画像生成などの推論呼び出しに使用される API バージョンには影響しません。

展開

PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CognitiveServices/accounts/{accountName}/deployments/{deploymentName}?api-version=2023-05-01

パス パラメーター

パラメーター Type 必須 説明
accountName string 必須 Azure OpenAI リソースの名前。
deploymentName string 必須 既存のモデルをデプロイしたときに選択したデプロイ名、または新しいモデル デプロイに使用する名前。
resourceGroupName string 必須 このモデル デプロイに関連付けられているリソース グループの名前。
subscriptionId string 必須 関連付けられているサブスクリプションの ID。
api-version string 必須 この操作に使用する API バージョン。 これは、YYYY-MM-DD 形式に従います。

サポートされているバージョン

要求本文

これは、使用可能な要求本文パラメーターのサブセットにすぎません。 すべてのパラメーターの一覧については、REST API リファレンス ドキュメントをご覧ください。

パラメーター 説明
sku SKU SKU を表すリソース モデル定義。
capacity 整数 (integer) このデプロイに割り当てるクォータの量を表します。 値 1 は、1 分あたり 1,000 トークン (TPM) に相当します。 値 10 は、1 分あたり 10,000 トークン (TPM) に相当します。

要求の例

curl -X PUT https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resource-group-temp/providers/Microsoft.CognitiveServices/accounts/docs-openai-test-001/deployments/gpt-35-turbo-test-deployment?api-version=2023-05-01 \
  -H "Content-Type: application/json" \
  -H 'Authorization: Bearer YOUR_AUTH_TOKEN' \
  -d '{"sku":{"name":"Standard","capacity":10},"properties": {"model": {"format": "OpenAI","name": "gpt-35-turbo","version": "0613"}}}'

注意

認証トークンを生成するには、複数の方法があります。 初期テストの最も簡単な方法は、Azure portal から Cloud Shell を起動することです。 次に、az account get-access-token を実行します。 このトークンは、API テストの一時的な認証トークンとして使用できます。

詳細については、使用法デプロイに関する REST API リファレンス ドキュメントを参照してください。

使用方法

特定のリージョンでの特定のサブスクリプションのクォータ使用量に対してクエリを実行するには

GET https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.CognitiveServices/locations/{location}/usages?api-version=2023-05-01

パス パラメーター

パラメーター Type 必須 説明
subscriptionId string 必須 関連付けられているサブスクリプションの ID。
location string 必須 使用状況を表示する場所 (例: eastus)
api-version string 必須 この操作に使用する API バージョン。 これは、YYYY-MM-DD 形式に従います。

サポートされているバージョン

要求の例

curl -X GET https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.CognitiveServices/locations/eastus/usages?api-version=2023-05-01 \
  -H "Content-Type: application/json" \
  -H 'Authorization: Bearer YOUR_AUTH_TOKEN' 

リソースの削除

Azure portal から Azure OpenAI リソースを削除しようとすると、デプロイがまだ存在する場合、関連するデプロイが削除されるまで削除はブロックされます。 最初にデプロイを削除すると、クォータ割り当てが適切に解放され、新しいデプロイで使用できるようになります。

ただし、REST API またはその他のプログラムによる方法を使用してリソースを削除すると、最初にデプロイを削除する必要がなくなります。 これが発生すると、リソースがパージされるまで 48 時間、関連するクォータ割り当てを新しいデプロイに割り当てることができなくなります。 削除されたリソースの即時パージをトリガーしてクォータを解放するには、「削除されたリソースのパージ手順」に従ってください。

次のステップ