Azure OpenAI Service でプロビジョニングされたデプロイの使用を開始する
以下のガイドでは、Azure OpenAI Service リソースを使用するプロビジョニング済みデプロイを作成する際の主な手順について説明します。 ここで説明する概念の詳細については、以下を参照してください。
前提条件
- Azure サブスクリプション - 無料アカウントを作成します
- Azure 共同作成者または Cognitive Services 共同作成者のロール
PTU クォータの可用性を取得または確認します。
プロビジョニング スループットのデプロイは、プロビジョニング スループット ユニット (PTU) という単位でサイズ設定されます。 デプロイの種類ごとのプロビジョニング済みの PTU クォータは、リージョンごとにサブスクリプションに付与され、すべてのモデルとバージョンにわたってそのリージョンにデプロイできる PTU の合計数が制限されます。
新しいデプロイを作成するには、必要なサイズのデプロイをカバーするために使用できる (使用されていない) クォータが必要です。 たとえば、米国中南部のサブスクリプションに以下がある場合:
- 合計 PTU クォータ = 500 PTU
- デプロイ:
- 100 PTU: GPT-4o、2024-05-13
- 100 PTU: GPT-4、0613
この場合、200 PTU のクォータが使用済みと見なされ、新しいデプロイの作成に使用できるのは 300 PTU です。
グローバル、データ ゾーン、およびリージョンのプロビジョニング済みクォータの既定の量は、複数のリージョン内の対象となるサブスクリプションに割り当てられます。 Azure AI Foundry ポータル内の [クォータ] ペインにアクセスし、目的のサブスクリプションと Azure リージョンを選択すると、Azure リージョン内で使用可能なクォータを表示できます。 たとえば、以下のスクリーンショットは、選択したサブスクリプションの米国西部のクォータ制限が 500 PTU であることを示しています。 使用できる既定のクォータの値がこれより低い場合があることに注意してください。
[使用量/制限] 列の右側にある [クォータの要求] リンクをクリックすると、追加のクォータを要求できます。 (これは上のスクリーンショットでは画面外にあります)。
Azure OpenAI リソースを作成する
プロビジョニング済みのデプロイは、Azure 内の Azure OpenAI リソース オブジェクトを介して作成されます。 デプロイを作成する各リージョンに Azure OpenAI リソースが必要です。 必要に応じて、Azure portal を使用して、使用できるクォータがあるリージョンにリソースを作成します。
Note
Azure OpenAI リソースは、さまざまな Azure OpenAI デプロイを同時にサポートできます。 新しいリソースをプロビジョニング済みデプロイ専用にする必要はありません。
プロビジョニング済みデプロイを作成する - 容量を使用できる
クォータを確認したら、デプロイを作成できます。 プロビジョニングされたデプロイを作成するには、次の手順に従います。説明されている選択肢は、スクリーンショットに示されているエントリを反映しています。
- Azure AI Foundry ポータルにサインインします。
- プロビジョニングされたデプロイが有効になっているサブスクリプションを選択し、クォータがあるリージョンで目的のリソースを選択します。
- 左側のナビゲーションの [管理] で [デプロイ] を選択します。
- [新しいデプロイの作成] を選択し、以下のフィールドを構成します。 [詳細オプション] ドロップダウン メニューを展開します。
- 各フィールドに値を入力します。 次に例を示します。
フィールド | 説明 | 例 |
---|---|---|
モデルの選択 | デプロイする特定のモデルを選択します。 | GPT-4 |
モデル バージョン | デプロイするモデルのバージョンを選択します。 | 0613 |
展開名 | デプロイ名は、クライアント ライブラリと REST API を使用してモデルを呼び出すためにコードで使用されます。 | gpt-4 |
コンテンツ フィルター | デプロイに適用するフィルター ポリシーを指定します。 詳細については、「コンテンツのフィルター処理」の方法を参照してください。 | 既定値 |
展開の種類 | これはスループットとパフォーマンスに影響します。 デプロイの [デプロイ] ダイアログ ボックスのドロップダウンから、[Global Provisioned-Managed]、[DataZone Provisioned-Managed]、または [Provisioned-Managed] を選択します | Provisioned-Managed |
プロビジョニングされたスループット ユニット | デプロイに含めるスループットの量を選択します。 | 100 |
Note
デプロイ ダイアログには、Azure OpenAI Provisioned 用 Azure Reservation を購入すると、期間コミットメントの大幅な割引を受けることができるというリマインダーが表示されます。
デプロイ設定を入力したら、[Confirm Pricing]\(価格の確認\) をクリックして続行します。 価格の確認ダイアログが表示され、期間割引を提供する Azure 予約を利用せず、時間単位で料金を支払うことを選択した場合のデプロイの定価が表示されます。
コストについて不明な点がある場合は、デプロイをキャンセルし、プロビジョニングされたデプロイの支払いモデルと基礎となるコストを理解してから次に進みます。 この手順を踏むことで、支払い請求書に予期しない高額請求が記載されるのを防ぐことができます。 ご自身の知識を深めるためのリソースについては、以下を参照してください。
次の図は、表示される価格の確認画面です。 表示される価格は一例です。
プログラムでデプロイを作成する場合は、次の Azure CLI コマンドを使用してそれを行うことができます。 デプロイの種類を指定するには、目的のデプロイの種類に基づいて sku-name
を GlobalProvisionedManaged
、DataZoneProvisionedManaged
または ProvisionedManaged
に変更します。 希望するプロビジョニングされたスループット ユニットの数で sku-capacity
を更新します。
az cognitiveservices account deployment create \
--name <myResourceName> \
--resource-group <myResourceGroupName> \
--deployment-name MyModel \
--model-name GPT-4 \
--model-version 0613 \
--model-format OpenAI \
--sku-capacity 100 \
--sku-name ProvisionedManaged
REST、ARM テンプレート、Bicep、Terraform を使用してデプロイを作成することもできます。 クォータの管理の攻略ガイドにあるデプロイの自動化に関するセクションを参照し、sku.name
を Standard
ではなく GlobalProvisionedManaged
、DataZoneProvisionedManaged
、または ProvisionedManaged
に置き換えます。
プロビジョニング済みデプロイを作成する - 容量を使用できない
容量の可用性には動的な性質があるため、選択したリソースのリージョンには、指定したモデル、バージョン、PTU 数のデプロイを作成できるだけのサービス容量がない可能性があります。
このイベントでは、Azure AI Foundry ポータル内のウィザードによって、目的のモデルのデプロイを作成するために使用可能なクォータと容量を備えた他の Azure リージョンに移動します。 このような場合、デプロイ ダイアログは次のようになります。
注意事項:
- 使用できるクォータ内にある PTU 数と、現時点でデプロイできる数を示すメッセージが表示されます。
- サービス容量を超える PTU 数を選択すると、より多くの容量を取得するためのオプションを示すメッセージと、代替リージョンを選択できるボタンが表示されます。 [他のリージョンの表示] ボタンをクリックすると、デプロイを作成できる Azure OpenAI リソースの一覧と、各リージョンで使用できるクォータとサービス容量に基づいて作成できる最大サイズのデプロイを示すダイアログが表示されます。
リソースを選択して [リソースの切り替え] をクリックすると、選択したリソースを使用してデプロイ ダイアログが再表示されます。 そうすると、新しいリージョンでのデプロイの作成に進むことができます。
必要に応じて予約を購入する
デプロイの作成後、Azure Reservation を通じて期間割引を購入することができます。 Azure Reservation では、数日を超えてデプロイを使用する予定のユーザーに対して、1 時間あたりの料金を大幅に割り引くことができます。
購入モデルと予約の詳細については、次を参照してください。
- Microsoft Azure OpenAI サービスのプロビジョニング予約を使用してコストを節約する。
- Azure OpenAI Provisioned のオンボード ガイド
- Azure OpenAI Provisioned Reservations のガイド
重要
モデルのデプロイに使用できる容量の可用性は動的であり、リージョンやモデルによって頻繁に変化します。 使用する PTU 以上の予約を購入しないようにするには、最初にデプロイを作成してから、デプロイした PTU をカバーする Azure 予約を購入します。 このベスト プラクティスにより、予約割引を最大限に活用し、使用できない期間コミットメントを購入することを防ぐことができます。
最初の推論呼び出しを行う
プロビジョニングされたデプロイの推論コードは、標準のデプロイの種類と同じです。 次のコード スニペットは、GPT-4 モデルへのチャット入力候補呼び出しを示しています。 これらのモデルをプログラムで初めて使う場合は、クイックスタート ガイドから始めることをお勧めします。 バージョン 1.0 以降の OpenAI ライブラリを使用することをお勧めします。理由は、ライブラリ内の再試行ロジックが含まれるためです。
#Note: The openai-python library support for Azure OpenAI is in preview.
import os
from openai import AzureOpenAI
client = AzureOpenAI(
azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"),
api_key=os.getenv("AZURE_OPENAI_API_KEY"),
api_version="2024-02-01"
)
response = client.chat.completions.create(
model="gpt-4", # model = "deployment_name".
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Does Azure OpenAI support customer managed keys?"},
{"role": "assistant", "content": "Yes, customer managed keys are supported by Azure OpenAI."},
{"role": "user", "content": "Do other Azure AI services support this too?"}
]
)
print(response.choices[0].message.content)
重要
運用環境では、Azure Key Vault などの資格情報を格納してアクセスする安全な方法を使用します。 資格情報のセキュリティについて詳しくは、Azure AI サービスのセキュリティに関する記事をご覧ください。
予想されるスループットについて
エンドポイントで達成できるスループットの量は、デプロイされた PTU の数、入力サイズ、出力サイズ、呼び出しレートをかけ合わせたものです。 同時呼び出しの数と処理されるトークンの合計数は、これらの値によって異なる場合があります。 デプロイのスループットを決定するための推奨される方法は次のとおりです。
- サイズの見積もりには容量計算ツールを使用します。 容量計算ツールは、Azure AI Foundry 内の [クォータ] ページの [プロビジョニング済み] タブの下にあります。
- 実際のトラフィック ワークロードを使用して負荷のベンチマークを実行します。 ベンチマークの詳細については、ベンチマークのセクションを参照してください。
デプロイ使用率を測定する
指定された数のプロビジョニングされたスループット ユニット (PTU) をデプロイすると、そのエンドポイントで、設定された量の推論スループットが使用できるようになります。 このスループットの使用率は、モデル、モデル バージョンの呼び出し速度、プロンプトのサイズ、生成サイズに基づく複雑な数式です。 この計算を簡略化するために、Azure Monitor に使用率メトリックが用意されています。 使用率が 100% を超えて上昇した場合、新しい呼び出しでデプロイから 429 が返されます。 プロビジョニングされた使用率は次のように定義されています。
PTU デプロイ使用率 = (一定期間に消費された PTU) / (その期間内にデプロイされた PTU)
使用率のメジャーは、リソースの Azure-Monitor セクションで確認できます。 監視ダッシュボードにアクセスするには、https://portal.azure.com にサインインし、Azure OpenAI リソースに移動して、左側のナビゲーションから [メトリック] ページを選択します。 メトリックのページで、"Provisioned-managed utilization V2" メトリックを選択します。 リソースに複数のデプロイがある場合は、[分割を適用する] ボタンをクリックして、デプロイごとに値を分割する必要もあります。
デプロイの監視の詳細については、「Azure OpenAI Service の監視」ページを参照してください。
高使用率を処理する
プロビジョニングされたデプロイでは、特定のモデルを実行するために割り当てられたコンピューティング容量が提供されます。 Azure Monitor の 'Provisioned-Managed Utilization V2' は、デプロイの使用率を 1 分単位で測定するメトリックです。 また、プロビジョニングされたマネージド デプロイは最適化され、受け入れられた呼び出しは、呼び出しごとに一貫した最大待機時間で処理されます。 ワークロードが割り当てられた容量を超えると、使用率が 100% を下回るまで、サービスからは 429 HTTP 状態コードが返されます。 再試行までの時間は、retry-after
と retry-after-ms
の応答ヘッダーで提供され、それぞれ秒とミリ秒の単位で時間が示されます。 このアプローチを使用すると、呼び出しごとの待機時間の目標を維持しながら、高負荷の状況を処理する方法 (たとえば再試行や別のエクスペリエンスまたはエンドポイントへの転送など) を開発者が制御できます。
429 応答を受け取ったらどうすればよいですか?
429 応答は、割り当てられた PTU が呼び出し時にすべて消費されていることを示します。 この応答には、次の呼び出しが受け入れられるまで待機する時間を示す、retry-after-ms
および retry-after
ヘッダーが含まれます。 429 応答についてどのような処理方法を選ぶかは、アプリケーションの要件によって異なります。 次にいくつかの考慮事項を示します。
- 呼び出しごとの待機時間が長くても問題ない場合は、クライアント側の再試行ロジックを実装して
retry-after-ms
の時間だけ待機し、再試行します。 この方法を使用すると、デプロイでのスループットを最大化できます。 Microsoft が提供するクライアント SDK では、既に適切な既定値で処理されています。 ユース ケースに基づいて、さらにチューニングが必要になる場合があります。 - トラフィックを他のモデル、デプロイ、またはエクスペリエンスにリダイレクトすることを検討してください。 このアクションは 429 信号を受信するとすぐに実行できるため、この方法は最も低遅延の解決策です。 429 信号は、高使用率にプッシュする場合の予期しないエラー応答ではなく、プロビジョニングされたデプロイのキューと高負荷を管理するための設計の一部です。
クライアント ライブラリ内の再試行ロジックを変更する
Azure OpenAI SDK の既定では、クライアントのバックグラウンドで 429 応答を (最大再試行回数まで) 再試行します。 ライブラリは retry-after
の時間を優先します。 エクスペリエンスに合わせて再試行の動作を変更することもできます。 Python ライブラリの例を次に示します。
max_retries
オプションを使用して、再試行設定を構成するか無効にすることができます。
from openai import AzureOpenAI
# Configure the default for all requests:
client = AzureOpenAI(
azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"),
api_key=os.getenv("AZURE_OPENAI_API_KEY"),
api_version="2024-02-01",
max_retries=5,# default is 2
)
# Or, configure per-request:
client.with_options(max_retries=5).chat.completions.create(
model="gpt-4", # model = "deployment_name".
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Does Azure OpenAI support customer managed keys?"},
{"role": "assistant", "content": "Yes, customer managed keys are supported by Azure OpenAI."},
{"role": "user", "content": "Do other Azure AI services support this too?"}
]
)
ベンチマークを実行する
インスタンスの正確なパフォーマンスとスループットの機能は、行う要求の種類と正確なワークロードによって異なります。 ワークロードのスループットを判断する最良の方法は、独自のデータに対してベンチマークを実行することです。
この作業を支援するために、ベンチマーク ツールには、デプロイに対してベンチマークを簡単に実行する方法が用意されています。 このツールには、構成済みのワークロード シェイプがいくつか用意されており、主要なパフォーマンス メトリックが出力されます。 このツールと構成設定の詳細については、GitHub リポジトリの https://github.com/Azure/azure-openai-benchmark を参照してください。
次のワークフローをお勧めします。
- 容量計算ツールを使用してスループットの PTU を見積もります。
- このトラフィック シェイプでベンチマークを長時間 (10 分以上) 実行すると、安定した状態の結果が観察されます。
- ベンチマーク ツールと Azure Monitor からの使用率、処理されたトークン数、呼び出しレートの値を確認します。
- クライアント実装を使用して、独自のトラフィック シェイプとワークロードでベンチマークを実行します。 必ず Azure OpenAI クライアント ライブラリまたはカスタム ロジックを使用して再試行ロジックを実装します。
次のステップ
- クラウド アプリケーションのベスト プラクティスの詳細については、「クラウド アプリケーションのベスト プラクティス」を参照してください
- プロビジョニングされたデプロイの詳細については、「プロビジョニングされたスループットとは」を確認してください
- 各 SDK 内の再試行ロジックの詳細については、以下を参照してください。