Azure OpenAI Batch API は、大規模で大量の処理タスクを効率的に処理するように設計されています。 個別のクォータを持つ要求の非同期グループを、24時間以内のターンアラウンドで、グローバル標準よりも50%低いコストで処理します。 バッチ処理では、一度に 1 つの要求を送信するのではなく、1 つのファイル内で多数の要求を送信します。 グローバル バッチ要求には、オンライン ワークロードの中断を回避する個別のエンキュー トークン クォータがあります。
主なユース ケースは次のとおりです。
大規模なデータ処理: 広範なデータセットを並列ですばやく分析します。
コンテンツ生成: 製品の説明や記事など、大量のテキストを作成します。
ドキュメントの校閲と要約: 長いドキュメントの校閲と要約を自動化します。
カスタマー サポートの自動化: 多数の問い合わせを同時に処理して迅速な対応を実現します。
データの抽出と分析: 膨大な量の非構造化データから情報を抽出して分析します。
自然言語処理 (NLP) タスク: 大規模なデータセットに対して感情分析や翻訳などのタスクを実行します。
マーケティングとパーソナル化: パーソナル化されたコンテンツとレコメンデーションを大規模に生成します。
ヒント
バッチ ジョブが非常に大きいため、デプロイのクォータを最大にした後でもエンキュートークンの制限に達する場合、一部のリージョンでは、指数バックオフを使用して複数のバッチ ジョブをキューに格納できる新機能がサポートされるようになりました。
エンキューされたトークン クォータが使用可能になると、次のバッチ ジョブを自動的に作成して開始できます。 詳細については、 指数バックオフを使用した大規模なバッチ ジョブの再試行の自動化に関するページを参照してください。
重要
24 時間以内にバッチ要求を処理することを目指しています。時間がかかるジョブは期限切れになりません。 ジョブはいつでもキャンセルできます。 ジョブを取り消すと、残りの作業はすべて取り消され、既に完了した作業が返されます。 完了した作業があればそれに対する課金が行われます。
保存されたデータは指定された Azure の地理的な場所に留まりますが、推論のためのデータ処理は任意の Azure OpenAI の場所で実行される可能性があります。 データ所在地の詳細を確認する。
Batch のサポート
グローバル バッチ モデルの可用性
リージョン | o3、 2025-04-16 | o4-mini、 2025-04-16 | gpt-4.1、 2025-04-14 | gpt-4.1-nano、 2025-04-14 | gpt-4.1-mini、 2025-04-14 | o3-mini、2025-01-31 | gpt-4o、2024 年 5 月 13 日 | gpt-4o、2024-08-06 | gpt-4o、2024-11-20 | gpt-4o-mini、2024-07-18 |
---|---|---|---|---|---|---|---|---|---|---|
オーストラリアイースト | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
ブラジル南部 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
カナダ東部 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
イーストアス | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
eastus2 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
francecentral | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
ドイツ中西部 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
japaneast | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
コリアセントラル | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
ノースセントラルUS | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
norwayeast(ノルウェー東部) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
polandcentral | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
southafricanorth | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
サウスセントラル | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
南インド | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
swedencentral | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
スイスノース | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
ウクサウス | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
西ヨーロッパ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
ウェストユーエス | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
westus3 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
o3-mini
にアクセスするには、登録が必要です。 詳細については、Microsoft の推論モデル ガイドを参照してください。
以下のモデルがグローバル バッチをサポートしています。
モデル | バージョン | 入力形式 |
---|---|---|
o3-mini |
2025年1月31日 | テキスト |
gpt-4o |
2024-08-06 | テキストと画像 |
gpt-4o-mini |
2024年07月18日 | テキストと画像 |
gpt-4o |
2024年5月13日 | テキストと画像 |
API のサポート
API バージョン | |
---|---|
最新の GA API リリース: | 2024-10-21 |
サポートされている最新のプレビュー API リリース: | 2025-04-01-preview |
注
Global Batch では古い API バージョンがサポートされていますが、一部のモデルでは新しいプレビュー API バージョンが必要です。 たとえば、 o3-mini
は、この日付より後にリリースされたため、 2024-10-21
ではサポートされていません。 グローバル バッチを使用して新しいモデルにアクセスするには、最新のプレビュー API バージョンを使用します。
機能のサポート
現在、以下はサポートされていません。
- Assistants API との統合。
- Azure OpenAI On Your Data 機能との統合。
一括展開
注
Azure AI Foundry ポータルでは、バッチ デプロイの種類がGlobal-Batch
およびData Zone Batch
として表示されます。 Azure OpenAI のデプロイの種類の詳細については、デプロイの種類に関するガイドを参照してください。
ヒント
エンキューされたトークン クォータ が不足することによるジョブの失敗を回避するために、すべてのグローバル バッチ モデル デプロイに対して動的クォータを有効 にすることをお勧めします。 動的クォータを使用すると、追加の容量が使用可能になったときに、デプロイでより多くのクォータを日和見的に利用できます。 動的クォータがオフに設定されている場合、デプロイは、デプロイの作成時に定義されたエンキューされたトークン制限までの要求のみを処理できます。
前提条件
- Azure サブスクリプション。無料で作成できます。
- デプロイ タイプ
Global-Batch
を持つモデルがデプロイされた Azure OpenAI リソース。 このプロセスのヘルプについては、「リソース作成とモデル デプロイのガイド」を参照してください。
バッチ ファイルの準備
ファインチューニングと同様に、グローバル バッチは JSON 行 (.jsonl
) 形式のファイルを使用します。 さまざまな種類のサポートされるコンテンツのファイル例を以下に示します。
入力形式
{"custom_id": "task-0", "method": "POST", "url": "/chat/completions", "body": {"model": "REPLACE-WITH-MODEL-DEPLOYMENT-NAME", "messages": [{"role": "system", "content": "You are an AI assistant that helps people find information."}, {"role": "user", "content": "When was Microsoft founded?"}]}}
{"custom_id": "task-1", "method": "POST", "url": "/chat/completions", "body": {"model": "REPLACE-WITH-MODEL-DEPLOYMENT-NAME", "messages": [{"role": "system", "content": "You are an AI assistant that helps people find information."}, {"role": "user", "content": "When was the first XBOX released?"}]}}
{"custom_id": "task-2", "method": "POST", "url": "/chat/completions", "body": {"model": "REPLACE-WITH-MODEL-DEPLOYMENT-NAME", "messages": [{"role": "system", "content": "You are an AI assistant that helps people find information."}, {"role": "user", "content": "What is Altair Basic?"}]}}
custom_id
は、個々のバッチ要求の内どれが特定の応答に対応するのかを識別できるようにするために必要です。 応答は、.jsonl
バッチ ファイル内で定義されている順序と同じ順序では返されません。
model
属性は、推論応答のターゲットにしたいグローバル バッチ デプロイの名前と一致するように設定する必要があります。
重要
model
属性は、推論応答のターゲットにしたいグローバル バッチ デプロイの名前と一致するように設定する必要があります。 バッチ ファイルの各行に存在するグローバル バッチ モデル デプロイ名はいずれも同じである必要があります。別のデプロイをターゲットにする場合は、別のバッチ ファイルまたはジョブでそれを行う必要があります。
パフォーマンスを最大限に高めるには、各ファイルに数行しかない多数の小さなファイルではなく、バッチ処理用に大きなファイルを送信することをお勧めします。
入力ファイルを作成する
この記事では、test.jsonl
という名前のファイルを作成し、上記の標準入力コード ブロックからファイルに内容をコピーします。 グローバル バッチ デプロイ名を変更してファイルの各行に追加する必要があります。
バッチ ファイルをアップロードする
入力ファイルが準備されたら、まずファイルをアップロードして、バッチ ジョブを開始できるようにする必要があります。 ファイルのアップロードは、プログラムまたは Azure AI Foundry ポータルの両方を使用して実行できます。 この例では、ファイルを Azure OpenAI リソースに直接アップロードする方法を示します。 または、 Azure OpenAI Batch 用に Azure Blob Storage を構成することもできます。
Azure AI Foundry ポータルにサインインします。
グローバル バッチ モデル デプロイを利用できる Azure OpenAI リソースを選択します。
[バッチ ジョブ]>[+ バッチ ジョブの作成] を選択します。
[バッチ データ]>[ファイルのアップロード] の下のドロップダウンから >[ファイルのアップロード] を選択して前の手順で作成した
test.jsonl
ファイルのパスを指定 >[次へ]。
バッチ ジョブを作成する
[作成] を選択してバッチ ジョブを開始します。
バッチ ジョブの進行状況を追跡する
ジョブが作成されたら、最後に作成されたジョブのジョブ ID を選択することで、ジョブの進行状況を監視できます。 既定では、最後に作成したバッチ ジョブの状態ページが表示されます。
右側のペインでジョブの状態を追跡できます。
バッチ ジョブの出力ファイルを取得する
ジョブが完了するか、終了状態に達すると、エラー ファイルと出力ファイルが生成されます。このファイルは、下矢印アイコンが付いたそれぞれのボタンを選択して、ダウンロードして確認できます。
バッチをキャンセルする
進行中のバッチをキャンセルします。 バッチは、最大 10 分間状態 cancelling
に留まった後 cancelled
に変化し、出力ファイルには部分的な結果 (存在する場合) が出力されます。
前提条件
- Azure サブスクリプション。無料で作成できます。
- Python 3.8 以降のバージョン
- 次の Python ライブラリ:
openai
- Jupyter Notebook
- デプロイ タイプ
Global-Batch
を持つモデルがデプロイされた Azure OpenAI リソース。 このプロセスのヘルプについては、「リソース作成とモデル デプロイのガイド」を参照してください。
この記事の手順は、Jupyter Notebook で順番に実行することを意図したものです。 このため、Azure OpenAI クライアントは、例の最初に 1 回だけインスタンス化します。 順番を守らずに手順を実行したい場合は、多くの場合、その呼び出しの一環として Azure OpenAI クライアントを設定する必要が生じます。
OpenAI Python ライブラリが既にインストールされている場合でも、以下のようにインストールを最新バージョンにアップグレードする必要があるかもしれません。
!pip install openai --upgrade
バッチ ファイルの準備
ファインチューニングと同様に、グローバル バッチは JSON 行 (.jsonl
) 形式のファイルを使用します。 さまざまな種類のサポートされるコンテンツのファイル例を以下に示します。
入力形式
{"custom_id": "task-0", "method": "POST", "url": "/chat/completions", "body": {"model": "REPLACE-WITH-MODEL-DEPLOYMENT-NAME", "messages": [{"role": "system", "content": "You are an AI assistant that helps people find information."}, {"role": "user", "content": "When was Microsoft founded?"}]}}
{"custom_id": "task-1", "method": "POST", "url": "/chat/completions", "body": {"model": "REPLACE-WITH-MODEL-DEPLOYMENT-NAME", "messages": [{"role": "system", "content": "You are an AI assistant that helps people find information."}, {"role": "user", "content": "When was the first XBOX released?"}]}}
{"custom_id": "task-2", "method": "POST", "url": "/chat/completions", "body": {"model": "REPLACE-WITH-MODEL-DEPLOYMENT-NAME", "messages": [{"role": "system", "content": "You are an AI assistant that helps people find information."}, {"role": "user", "content": "What is Altair Basic?"}]}}
custom_id
は、個々のバッチ要求の内どれが特定の応答に対応するのかを識別できるようにするために必要です。 応答は、.jsonl
バッチ ファイル内で定義されている順序と同じ順序では返されません。
model
属性は、推論応答のターゲットにしたいグローバル バッチ デプロイの名前と一致するように設定する必要があります。
重要
model
属性は、推論応答のターゲットにしたいグローバル バッチ デプロイの名前と一致するように設定する必要があります。 バッチ ファイルの各行に存在するグローバル バッチ モデル デプロイ名はいずれも同じである必要があります。別のデプロイをターゲットにする場合は、別のバッチ ファイルまたはジョブでそれを行う必要があります。
パフォーマンスを最大限に高めるには、各ファイルに数行しかない多数の小さなファイルではなく、バッチ処理用に大きなファイルを送信することをお勧めします。
入力ファイルを作成する
この記事では、test.jsonl
という名前のファイルを作成し、上記の標準入力コード ブロックからそのファイルに内容をコピーします。 グローバル バッチ デプロイ名を変更してファイルの各行に追加する必要があります。 このファイルは、Jupyter Notebook を実行しているのと同じディレクトリに保存します。
バッチ ファイルをアップロードする
入力ファイルが準備されたら、まずファイルをアップロードして、バッチ ジョブを開始できるようにする必要があります。 ファイルのアップロードは、プログラムまたは Azure AI Foundry ポータルの両方を使用して実行できます。 この例では、ファイルを Azure OpenAI リソースに直接アップロードする方法を示します。 または、 Azure OpenAI Batch 用に Azure Blob Storage を構成することもできます。
import os
from openai import AzureOpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider
token_provider = get_bearer_token_provider(
DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default"
)
client = AzureOpenAI(
azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"),
azure_ad_token_provider=token_provider,
api_version="2025-04-01-preview"
)
# Upload a file with a purpose of "batch"
file = client.files.create(
file=open("test.jsonl", "rb"),
purpose="batch",
extra_body={"expires_after":{"seconds": 1209600, "anchor": "created_at"}} # Optional you can set to a number between 1209600-2592000. This is equivalent to 14-30 days
)
print(file.model_dump_json(indent=2))
print(f"File expiration: {datetime.fromtimestamp(file.expires_at) if file.expires_at is not None else 'Not set'}")
file_id = file.id
コメントを解除して extra_body={"expires_after":{"seconds": 1209600, "anchor": "created_at"}}
を追加すると、アップロード ファイルの有効期限が 14 日後に切れるよう設定されます。 有効期限が設定されていない場合、リソースごとに 500 個のバッチ ファイルの上限があります。 有効期限の値を設定すると、リソースあたりのバッチ ファイル数がリソースあたり 10,000 ファイルに増やされます。
出力:
{
"id": "file-655111ec9cfc44489d9af078f08116ef",
"bytes": 176064,
"created_at": 1743391067,
"filename": "test.jsonl",
"object": "file",
"purpose": "batch",
"status": "processed",
"expires_at": 1744600667,
"status_details": null
}
File expiration: 2025-04-13 23:17:47
バッチ ジョブを作成する
ファイルが正常にアップロードされたら、バッチ処理のためにファイルを送信できます。
# Submit a batch job with the file
batch_response = client.batches.create(
input_file_id=file_id,
endpoint="/chat/completions",
completion_window="24h",
extra_body={"output_expires_after":{"seconds": 1209600, "anchor": "created_at"}} # Optional you can set to a number between 1209600-2592000. This is equivalent to 14-30 days
)
# Save batch ID for later use
batch_id = batch_response.id
print(batch_response.model_dump_json(indent=2))
リソースあたりの既定の 500 個の最大ファイル制限は、出力ファイルにも適用されます。 ここでは、出力ファイルの有効期限が 14 日以内になるように、この行のコメントを解除して extra_body={"output_expires_after":{"seconds": 1209600, "anchor": "created_at"}}
を追加できます。 有効期限の値を設定すると、リソースあたりのバッチ ファイル数がリソースあたり 10,000 ファイルに増やされます。
注
現在、完了ウィンドウは 24h
に設定する必要があります。 24h
以外の値を設定すると、ジョブは失敗します。 24 時間を超えるジョブは、取り消されるまで引き続き実行されます。
出力:
{
"id": "batch_6caaf24d-54a5-46be-b1b7-518884fcbdde",
"completion_window": "24h",
"created_at": 1722476583,
"endpoint": null,
"input_file_id": "file-655111ec9cfc44489d9af078f08116ef",
"object": "batch",
"status": "validating",
"cancelled_at": null,
"cancelling_at": null,
"completed_at": null,
"error_file_id": null,
"errors": null,
"expired_at": null,
"expires_at": 1722562983,
"failed_at": null,
"finalizing_at": null,
"in_progress_at": null,
"metadata": null,
"output_file_id": null,
"request_counts": {
"completed": 0,
"failed": 0,
"total": 0
}
}
バッチ ジョブが非常に大きいため、デプロイのクォータを上限に達した後でもエンキュートークンの制限に達する場合、一部のリージョンでは、指数バックオフを使用して複数のバッチ ジョブをキューに格納できる新しい 失敗高速 機能がサポートされるようになりました。そのため、1 つの大きなバッチ ジョブが完了したら、次のジョブを自動的に開始できます。 この機能をサポートするリージョンと、それを利用するようにコードを調整する方法の詳細については、 バッチ ジョブのキューを参照してください。
バッチ ジョブの進行状況を追跡する
バッチ ジョブを正常に作成したら、Studio またはプログラムで進行状況を監視できます。 バッチ ジョブの進行状況を確認するときは、各状態呼び出しの間に少なくとも 60 秒待機することをお勧めします。
import time
import datetime
status = "validating"
while status not in ("completed", "failed", "canceled"):
time.sleep(60)
batch_response = client.batches.retrieve(batch_id)
status = batch_response.status
print(f"{datetime.datetime.now()} Batch Id: {batch_id}, Status: {status}")
if batch_response.status == "failed":
for error in batch_response.errors.data:
print(f"Error code {error.code} Message {error.message}")
出力:
2024-07-31 21:48:32.556488 Batch Id: batch_6caaf24d-54a5-46be-b1b7-518884fcbdde, Status: validating
2024-07-31 21:49:39.221560 Batch Id: batch_6caaf24d-54a5-46be-b1b7-518884fcbdde, Status: in_progress
2024-07-31 21:50:53.383138 Batch Id: batch_6caaf24d-54a5-46be-b1b7-518884fcbdde, Status: in_progress
2024-07-31 21:52:07.274570 Batch Id: batch_6caaf24d-54a5-46be-b1b7-518884fcbdde, Status: in_progress
2024-07-31 21:53:21.149501 Batch Id: batch_6caaf24d-54a5-46be-b1b7-518884fcbdde, Status: finalizing
2024-07-31 21:54:34.572508 Batch Id: batch_6caaf24d-54a5-46be-b1b7-518884fcbdde, Status: finalizing
2024-07-31 21:55:35.304713 Batch Id: batch_6caaf24d-54a5-46be-b1b7-518884fcbdde, Status: finalizing
2024-07-31 21:56:36.531816 Batch Id: batch_6caaf24d-54a5-46be-b1b7-518884fcbdde, Status: finalizing
2024-07-31 21:57:37.414105 Batch Id: batch_6caaf24d-54a5-46be-b1b7-518884fcbdde, Status: completed
以下の状態の値があり得ます。
地位 | 説明 |
---|---|
validating |
バッチ処理を開始する前に、入力ファイルの検証が行われています。 |
failed |
入力ファイルが検証プロセスに失敗しました。 |
in_progress |
入力ファイルの検証が成功し、バッチが現在実行中です。 |
finalizing |
処理が完了し、結果の準備が進んでいます。 |
completed |
バッチが完了し、結果の準備が整いました。 |
expired |
バッチを 24 時間の時間枠内で完了できませんでした。 |
cancelling |
バッチが cancelled されています (これが有効になるには最大で 10 分かかる場合があります。) |
cancelled |
バッチは cancelled です。 |
ジョブ状態の詳細を確認するには、次のコマンドを実行します。
print(batch_response.model_dump_json(indent=2))
出力:
{
"id": "batch_6caaf24d-54a5-46be-b1b7-518884fcbdde",
"completion_window": "24h",
"created_at": 1722476583,
"endpoint": null,
"input_file_id": "file-9f3a81d899b4442f98b640e4bc3535dd",
"object": "batch",
"status": "completed",
"cancelled_at": null,
"cancelling_at": null,
"completed_at": 1722477429,
"error_file_id": "file-c795ae52-3ba7-417d-86ec-07eebca57d0b",
"errors": null,
"expired_at": null,
"expires_at": 1722562983,
"failed_at": null,
"finalizing_at": 1722477177,
"in_progress_at": null,
"metadata": null,
"output_file_id": "file-3304e310-3b39-4e34-9f1c-e1c1504b2b2a",
"request_counts": {
"completed": 3,
"failed": 0,
"total": 3
}
}
error_file_id
と個別の output_file_id
の両方があることを確認します。 error_file_id
を使用して、バッチ ジョブで発生する問題のデバッグを支援します。
バッチ ジョブの出力ファイルを取得する
import json
output_file_id = batch_response.output_file_id
if not output_file_id:
output_file_id = batch_response.error_file_id
if output_file_id:
file_response = client.files.content(output_file_id)
raw_responses = file_response.text.strip().split('\n')
for raw_response in raw_responses:
json_response = json.loads(raw_response)
formatted_json = json.dumps(json_response, indent=2)
print(formatted_json)
出力:
簡潔にするために、出力の 1 つのチャット完了応答のみを含めます。 この記事の手順に従うと、以下に類似する応答が 3 つ得られるはずです。
{
"custom_id": "task-0",
"response": {
"body": {
"choices": [
{
"content_filter_results": {
"hate": {
"filtered": false,
"severity": "safe"
},
"self_harm": {
"filtered": false,
"severity": "safe"
},
"sexual": {
"filtered": false,
"severity": "safe"
},
"violence": {
"filtered": false,
"severity": "safe"
}
},
"finish_reason": "stop",
"index": 0,
"logprobs": null,
"message": {
"content": "Microsoft was founded on April 4, 1975, by Bill Gates and Paul Allen in Albuquerque, New Mexico.",
"role": "assistant"
}
}
],
"created": 1722477079,
"id": "chatcmpl-9rFGJ9dh08Tw9WRKqaEHwrkqRa4DJ",
"model": "gpt-4o-2024-05-13",
"object": "chat.completion",
"prompt_filter_results": [
{
"prompt_index": 0,
"content_filter_results": {
"hate": {
"filtered": false,
"severity": "safe"
},
"jailbreak": {
"filtered": false,
"detected": false
},
"self_harm": {
"filtered": false,
"severity": "safe"
},
"sexual": {
"filtered": false,
"severity": "safe"
},
"violence": {
"filtered": false,
"severity": "safe"
}
}
}
],
"system_fingerprint": "fp_a9bfe9d51d",
"usage": {
"completion_tokens": 24,
"prompt_tokens": 27,
"total_tokens": 51
}
},
"request_id": "660b7424-b648-4b67-addc-862ba067d442",
"status_code": 200
},
"error": null
}
その他のバッチ コマンド
バッチをキャンセルする
進行中のバッチをキャンセルします。 バッチは、最大 10 分間状態 cancelling
に留まった後 cancelled
に変化し、出力ファイルには部分的な結果 (存在する場合) が出力されます。
client.batches.cancel("batch_abc123") # set to your batch_id for the job you want to cancel
バッチを一覧表示する
特定の Azure OpenAI リソースのバッチ ジョブを一覧表示します。
client.batches.list()
Python ライブラリのリスト メソッドでは、改ページされます。
すべてのジョブを一覧表示するには:
all_jobs = []
# Automatically fetches more pages as needed.
for job in client.batches.list(
limit=20,
):
# Do something with job here
all_jobs.append(job)
print(all_jobs)
バッチの一覧表示 (プレビュー)
REST API を使用して、追加の並べ替え/フィルター処理オプションとともにすべてのバッチ ジョブを一覧表示します。
次の例では、フィルターの構築を容易にする generate_time_filter
関数を提供しています。 この関数を使用しない場合、フィルター文字列の形式は created_at gt 1728860560 and status eq 'Completed'
のようになります。
import requests
import json
from datetime import datetime, timedelta
from azure.identity import DefaultAzureCredential
token_credential = DefaultAzureCredential()
token = token_credential.get_token('https://cognitiveservices.azure.com/.default')
endpoint = "https://{YOUR_RESOURCE_NAME}.openai.azure.com/"
api_version = "2025-03-01-preview"
url = f"{endpoint}openai/batches"
order = "created_at asc"
time_filter = lambda: generate_time_filter("past 8 hours")
# Additional filter examples:
#time_filter = lambda: generate_time_filter("past 1 day")
#time_filter = lambda: generate_time_filter("past 3 days", status="Completed")
def generate_time_filter(time_range, status=None):
now = datetime.now()
if 'day' in time_range:
days = int(time_range.split()[1])
start_time = now - timedelta(days=days)
elif 'hour' in time_range:
hours = int(time_range.split()[1])
start_time = now - timedelta(hours=hours)
else:
raise ValueError("Invalid time range format. Use 'past X day(s)' or 'past X hour(s)'")
start_timestamp = int(start_time.timestamp())
filter_string = f"created_at gt {start_timestamp}"
if status:
filter_string += f" and status eq '{status}'"
return filter_string
filter = time_filter()
headers = {'Authorization': 'Bearer ' + token.token}
params = {
"api-version": api_version,
"$filter": filter,
"$orderby": order
}
response = requests.get(url, headers=headers, params=params)
json_data = response.json()
if response.status_code == 200:
print(json.dumps(json_data, indent=2))
else:
print(f"Request failed with status code: {response.status_code}")
print(response.text)
出力:
{
"data": [
{
"cancelled_at": null,
"cancelling_at": null,
"completed_at": 1729011896,
"completion_window": "24h",
"created_at": 1729011128,
"error_file_id": "file-472c0626-4561-4327-9e4e-f41afbfb30e6",
"expired_at": null,
"expires_at": 1729097528,
"failed_at": null,
"finalizing_at": 1729011805,
"id": "batch_4ddc7b60-19a9-419b-8b93-b9a3274b33b5",
"in_progress_at": 1729011493,
"input_file_id": "file-f89384af0082485da43cb26b49dc25ce",
"errors": null,
"metadata": null,
"object": "batch",
"output_file_id": "file-62bebde8-e767-4cd3-a0a1-28b214dc8974",
"request_counts": {
"total": 3,
"completed": 2,
"failed": 1
},
"status": "completed",
"endpoint": "/chat/completions"
},
{
"cancelled_at": null,
"cancelling_at": null,
"completed_at": 1729016366,
"completion_window": "24h",
"created_at": 1729015829,
"error_file_id": "file-85ae1971-9957-4511-9eb4-4cc9f708b904",
"expired_at": null,
"expires_at": 1729102229,
"failed_at": null,
"finalizing_at": 1729016272,
"id": "batch_6287485f-50fc-4efa-bcc5-b86690037f43",
"in_progress_at": 1729016126,
"input_file_id": "file-686746fcb6bc47f495250191ffa8a28e",
"errors": null,
"metadata": null,
"object": "batch",
"output_file_id": "file-04399828-ae0b-4825-9b49-8976778918cb",
"request_counts": {
"total": 3,
"completed": 2,
"failed": 1
},
"status": "completed",
"endpoint": "/chat/completions"
}
],
"first_id": "batch_4ddc7b60-19a9-419b-8b93-b9a3274b33b5",
"has_more": false,
"last_id": "batch_6287485f-50fc-4efa-bcc5-b86690037f43"
}
バッチ ジョブをキューに入れる
バッチ ジョブが非常に大きいため、デプロイのクォータを上限に達した後でもエンキューされたトークンの制限に達する場合、一部のリージョンでは、指数バックオフを使用して複数のバッチ ジョブをキューに登録できる新しいフェイル ファスト機能がサポートされるようになりました。 1 つの大規模なバッチ ジョブが完了し、エンキューされたトークン クォータが再び使用可能になったら、次のバッチ ジョブを自動的に作成して開始できます。
以前の動作:
- 大規模な Batch ジョブは既に実行されており、デプロイで使用可能なすべてのトークンを使用しています。
- 新しいバッチ処理が送信されました。
- 新しいバッチ ジョブは検証フェーズに入り、最大で数分続く可能性があります。
- 新しいジョブのためのトークン数が、現在利用可能なクォータに対して確認されます。
- 新しいバッチ ジョブが失敗し、エラー報告トークンの制限を超えました。
新しい動作:
- 大規模な Batch ジョブが既に実行されており、デプロイで使用可能なすべてのトークンを使用している
- 新しいバッチ処理が送信されました
- 新しいジョブのおおよそのトークン数が現在利用可能なバッチ クォータと迅速に比較され、ジョブがすぐに失敗するため、プログラムによって簡単に再試行を処理できます。
リージョンのサポート
次のリージョンが新しいフェイルファスト機能をサポートしています。
- オーストラリアイースト
- イーストアス
- ドイツ中西部
- italynorth
- ノースセントラルUS
- polandcentral
- swedencentral
- スイスノース
- eastus2
- ウェストユーエス
次のコードは、指数バックオフを使用して再試行とバッチ ジョブ キューを自動化できるように、失敗した高速動作を処理する基本的な仕組みを示しています。
バッチ ジョブのサイズによっては、 max_retries
を大幅に増やすか、この例をさらに変更する必要があります。
import time
from openai import BadRequestError
max_retries = 10
retries = 0
initial_delay = 5
delay = initial_delay
while True:
try:
batch_response = client.batches.create(
input_file_id=file_id,
endpoint="/chat/completions",
completion_window="24h",
)
# Save batch ID for later use
batch_id = batch_response.id
print(f"✅ Batch created successfully after {retries} retries")
print(batch_response.model_dump_json(indent=2))
break
except BadRequestError as e:
error_message = str(e)
# Check if it's a token limit error
if 'token_limit_exceeded' in error_message:
retries += 1
if retries >= max_retries:
print(f"❌ Maximum retries ({max_retries}) reached. Giving up.")
raise
print(f"⏳ Token limit exceeded. Waiting {delay} seconds before retry {retries}/{max_retries}...")
time.sleep(delay)
# Exponential backoff - increase delay for next attempt
delay *= 2
else:
# If it's a different error, raise it immediately
print(f"❌ Encountered non-token limit error: {error_message}")
raise
出力:
⏳ Token limit exceeded. Waiting 5 seconds before retry 1/10...
⏳ Token limit exceeded. Waiting 10 seconds before retry 2/10...
⏳ Token limit exceeded. Waiting 20 seconds before retry 3/10...
⏳ Token limit exceeded. Waiting 40 seconds before retry 4/10...
⏳ Token limit exceeded. Waiting 80 seconds before retry 5/10...
⏳ Token limit exceeded. Waiting 160 seconds before retry 6/10...
⏳ Token limit exceeded. Waiting 320 seconds before retry 7/10...
✅ Batch created successfully after 7 retries
{
"id": "batch_1e1e7b9f-d4b4-41fa-bd2e-8d2ec50fb8cc",
"completion_window": "24h",
"created_at": 1744402048,
"endpoint": "/chat/completions",
"input_file_id": "file-e2ba4ccaa4a348e0976c6fe3c018ea92",
"object": "batch",
"status": "validating",
"cancelled_at": null,
"cancelling_at": null,
"completed_at": null,
"error_file_id": "",
"errors": null,
"expired_at": null,
"expires_at": 1744488444,
"failed_at": null,
"finalizing_at": null,
"in_progress_at": null,
"metadata": null,
"output_file_id": "",
"request_counts": {
"completed": 0,
"failed": 0,
"total": 0
}
}
前提条件
- Azure サブスクリプション。無料で作成できます。
- デプロイ タイプ
Global-Batch
を持つモデルがデプロイされた Azure OpenAI リソース。 このプロセスのヘルプについては、「リソース作成とモデル デプロイのガイド」を参照してください。
バッチ ファイルの準備
ファインチューニングと同様に、グローバル バッチは JSON 行 (.jsonl
) 形式のファイルを使用します。 さまざまな種類のサポートされるコンテンツのファイル例を以下に示します。
入力形式
{"custom_id": "task-0", "method": "POST", "url": "/chat/completions", "body": {"model": "REPLACE-WITH-MODEL-DEPLOYMENT-NAME", "messages": [{"role": "system", "content": "You are an AI assistant that helps people find information."}, {"role": "user", "content": "When was Microsoft founded?"}]}}
{"custom_id": "task-1", "method": "POST", "url": "/chat/completions", "body": {"model": "REPLACE-WITH-MODEL-DEPLOYMENT-NAME", "messages": [{"role": "system", "content": "You are an AI assistant that helps people find information."}, {"role": "user", "content": "When was the first XBOX released?"}]}}
{"custom_id": "task-2", "method": "POST", "url": "/chat/completions", "body": {"model": "REPLACE-WITH-MODEL-DEPLOYMENT-NAME", "messages": [{"role": "system", "content": "You are an AI assistant that helps people find information."}, {"role": "user", "content": "What is Altair Basic?"}]}}
custom_id
は、個々のバッチ要求の内どれが特定の応答に対応するのかを識別できるようにするために必要です。 応答は、.jsonl
バッチ ファイル内で定義されている順序と同じ順序では返されません。
model
属性は、推論応答のターゲットにしたいグローバル バッチ デプロイの名前と一致するように設定する必要があります。
重要
model
属性は、推論応答のターゲットにしたいグローバル バッチ デプロイの名前と一致するように設定する必要があります。 バッチ ファイルの各行に存在するグローバル バッチ モデル デプロイ名はいずれも同じである必要があります。別のデプロイをターゲットにする場合は、別のバッチ ファイルまたはジョブでそれを行う必要があります。
パフォーマンスを最大限に高めるには、各ファイルに数行しかない多数の小さなファイルではなく、バッチ処理用に大きなファイルを送信することをお勧めします。
入力ファイルを作成する
この記事では、test.jsonl
という名前のファイルを作成し、上記の標準入力コード ブロックからそのファイルに内容をコピーします。 グローバル バッチ デプロイ名を変更してファイルの各行に追加する必要があります。
バッチ ファイルをアップロードする
入力ファイルが準備されたら、まずファイルをアップロードして、バッチ ジョブを開始できるようにする必要があります。 ファイルのアップロードは、プログラムまたは Azure AI Foundry ポータルの両方を使用して実行できます。 この例では、ファイルを Azure OpenAI リソースに直接アップロードする方法を示します。 または、 Azure OpenAI Batch 用に Azure Blob Storage を構成することもできます。
重要
API キーは慎重に使用してください。 API キーは、コード内に直接含めないようにし、絶対に公開しないでください。 API キーを使う場合は、Azure Key Vault に格納してセキュリティで保護してください。 アプリで API キーを安全に使用する方法の詳細については、Azure Key Vault を使用した API キーに関する記事を参照してください。
AI サービスのセキュリティの詳細については、「Azure AI サービスに対する要求の認証」を参照してください。
curl -X POST https://YOUR_RESOURCE_NAME.openai.azure.com/openai/files?api-version=2025-03-01-preview \
-H "Content-Type: multipart/form-data" \
-H "api-key: $AZURE_OPENAI_API_KEY" \
-F "purpose=batch" \
-F "file=@C:\\batch\\test.jsonl;type=application/json" \
-F "expires_after.seconds=1209600" \
-F "expires_after.anchor=created_at"
上記のコードでは、test.jsonl ファイルの特定のファイル パスを想定しています。 ローカル システムでの必要性に応じて、このファイル パスを調整してください。
オプションの "expires_after.seconds=1209600"
と "expires_after.anchor=created_at"
パラメーターを追加することで、アップロード ファイルを 14 日以内に期限切れに設定します。 有効期限が設定されていない場合、リソースごとに 500 個のバッチ ファイルの上限があります。 有効期限の値を設定すると、リソースあたりのバッチ ファイル数がリソースあたり 10,000 ファイルに増やされます。 1209600 から 2592000 までの数値を設定できます。 これは 14 ~ 30 日に相当します。
出力:
{
"status": "processed",
"bytes": 817,
"purpose": "batch",
"filename": "test.jsonl",
"expires_at": 1744607747,
"id": "file-7733bc35e32841e297a62a9ee50b3461",
"created_at": 1743398147,
"object": "file"
}
ファイル アップロード状態を追跡する
アップロード ファイルのサイズによっては、完全にアップロードされて処理されるのに時間がかかる場合があります。 ファイル アップロード状態を確認するには、次を実行します。
curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/files/{file-id}?api-version=2025-03-01-preview \
-H "api-key: $AZURE_OPENAI_API_KEY"
出力:
{
"status": "processed",
"bytes": 686,
"purpose": "batch",
"filename": "test.jsonl",
"expires_at": 1744607747,
"id": "file-7733bc35e32841e297a62a9ee50b3461",
"created_at": 1721408291,
"object": "file"
}
バッチ ジョブを作成する
ファイルが正常にアップロードされたら、バッチ処理のためにファイルを送信できます。
curl -X POST https://YOUR_RESOURCE_NAME.openai.azure.com/openai/batches?api-version=2025-03-01-preview \
-H "api-key: $AZURE_OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"input_file_id": "file-abc123",
"endpoint": "/chat/completions",
"completion_window": "24h",
"output_expires_after": {
"seconds": 1209600
},
"anchor": "created_at"
}'
リソースあたりの既定の 500 個の最大ファイル制限は、出力ファイルにも適用されます。 ここでは、必要に応じて "output_expires_after":{"seconds": 1209600},
と "anchor": "created_at"
を追加して、出力ファイルの有効期限が 14 日以内になるようにすることができます。 有効期限の値を設定すると、リソースあたりのバッチ ファイル数がリソースあたり 10,000 ファイルに増やされます。
注
現在、完了ウィンドウは 24h
に設定する必要があります。 24h
以外の値を設定すると、ジョブは失敗します。 24 時間を超えるジョブは、取り消されるまで引き続き実行されます。
出力:
{
"cancelled_at": null,
"cancelling_at": null,
"completed_at": null,
"completion_window": "24h",
"created_at": "2024-07-19T17:13:57.2491382+00:00",
"error_file_id": null,
"expired_at": null,
"expires_at": "2024-07-20T17:13:57.1918498+00:00",
"failed_at": null,
"finalizing_at": null,
"id": "batch_fe3f047a-de39-4068-9008-346795bfc1db",
"in_progress_at": null,
"input_file_id": "file-21006e70789246658b86a1fc205899a4",
"errors": null,
"metadata": null,
"object": "batch",
"output_file_id": null,
"request_counts": {
"total": null,
"completed": null,
"failed": null
},
"status": "Validating"
}
バッチ ジョブの進行状況を追跡する
バッチ ジョブを正常に作成したら、Studio またはプログラムで進行状況を監視できます。 バッチ ジョブの進行状況を確認するときは、各状態呼び出しの間に少なくとも 60 秒待機することをお勧めします。
curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/batches/{batch_id}?api-version=2025-03-01-preview \
-H "api-key: $AZURE_OPENAI_API_KEY"
出力:
{
"cancelled_at": null,
"cancelling_at": null,
"completed_at": null,
"completion_window": "24h",
"created_at": "2024-07-19T17:33:29.1619286+00:00",
"error_file_id": null,
"expired_at": null,
"expires_at": "2024-07-20T17:33:29.1578141+00:00",
"failed_at": null,
"finalizing_at": null,
"id": "batch_e0a7ee28-82c4-46a2-a3a0-c13b3c4e390b",
"in_progress_at": null,
"input_file_id": "file-c55ec4e859d54738a313d767718a2ac5",
"errors": null,
"metadata": null,
"object": "batch",
"output_file_id": null,
"request_counts": {
"total": null,
"completed": null,
"failed": null
},
"status": "Validating"
}
以下の状態の値があり得ます。
地位 | 説明 |
---|---|
validating |
バッチ処理を開始する前に、入力ファイルの検証が行われています。 |
failed |
入力ファイルが検証プロセスに失敗しました。 |
in_progress |
入力ファイルの検証が成功し、バッチが現在実行中です。 |
finalizing |
処理が完了し、結果の準備が進んでいます。 |
completed |
バッチが完了し、結果の準備が整いました。 |
expired |
バッチを 24 時間の時間枠内で完了できませんでした。 |
cancelling |
バッチが cancelled を処理中です (これが有効になるには最大で 10 分かかる場合があります。) |
cancelled |
バッチは cancelled です。 |
バッチ ジョブの出力ファイルを取得する
curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/files/{output_file_id}/content?api-version=2025-03-01-preview \
-H "api-key: $AZURE_OPENAI_API_KEY" > batch_output.jsonl
その他のバッチ コマンド
バッチをキャンセルする
進行中のバッチをキャンセルします。 バッチは、最大 10 分間状態 cancelling
に留まった後 cancelled
に変化し、出力ファイルには部分的な結果 (存在する場合) が出力されます。
curl -X POST https://YOUR_RESOURCE_NAME.openai.azure.com/openai/batches/{batch_id}/cancel?api-version=2025-03-01-preview \
-H "api-key: $AZURE_OPENAI_API_KEY"
バッチを一覧表示する
特定の Azure OpenAI リソースの既存のバッチ ジョブを一覧表示します。
curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/batches?api-version=2025-03-01-preview \
-H "api-key: $AZURE_OPENAI_API_KEY"
リスト API 呼び出しでは、改ページされます。 応答には、反復処理する、より多くの結果があることを示すブール値 has_more
が含まれます。
バッチの一覧表示 (プレビュー)
REST API を使用して、追加の並べ替え/フィルター処理オプションとともにすべてのバッチ ジョブを一覧表示します。
curl "YOUR_RESOURCE_NAME.openai.azure.com/batches?api-version=2025-03-01-preview&$filter=created_at%20gt%201728773533%20and%20created_at%20lt%201729032733%20and%20status%20eq%20'Completed'&$orderby=created_at%20asc" \
-H "api-key: $AZURE_OPENAI_API_KEY"
URL rejected: Malformed input to a URL function
エラーを回避するために、スペースが %20
に置き換えられます。
バッチの制限
制限名 | 制限値 |
---|---|
リソースあたりの最大ファイル数 | 500 |
最大入力ファイル サイズ | 200 MB |
ファイルあたりの最大要求数 | 100,000 |
バッチ クォータ
次の表はバッチのクォータ制限を示したものです。 グローバル バッチのクォータ値は、エンキューされたトークンの数で表されます。 バッチ処理用のファイルを送信すると、ファイル内に存在するトークンの数がカウントされます。 バッチジョブが最終状態に達するまで、これらのトークンはエンキューされたトークンの合計制限に対して計上されます。
グローバルバッチ
モデル | エンタープライズ契約 | 既定値 | 月単位のクレジット カード ベースのサブスクリプション | MSDN サブスクリプション | Microsoft Azure for Students、無料試用版 |
---|---|---|---|---|---|
gpt-4.1 |
5 B | 200メートル | 50メートル | 90 K | 該当なし |
gpt-4.1 mini |
15 B | 1 B | 50 M | 90k | 該当なし |
gpt-4.1-nano |
15 B | 1 B | 50メートル | 90 K | 該当なし |
gpt-4o |
5 B | 200メートル | 50メートル | 90 K | 該当なし |
gpt-4o-mini |
15 B | 1 B | 50メートル | 90 K | 該当なし |
gpt-4-turbo |
300 メートル | 80百万 | 40 M | 90 K | 該当なし |
gpt-4 |
150 M | 30 M | 5百万 | 100 キロ | 該当なし |
gpt-35-turbo |
10 B | 1 B | 100 M | 2メガ | 5万 |
o3-mini |
15 B | 1 B | 50メートル | 90 K | 該当なし |
o4-mini |
15 B | 1 B | 50メートル | 90 K | 該当なし |
B = 10 億 | M = 100万 | K = 1,000
データ ゾーン バッチ
モデル | エンタープライズ契約 | 既定値 | 月単位のクレジット カード ベースのサブスクリプション | MSDN サブスクリプション | Microsoft Azure for Students、無料試用版 |
---|---|---|---|---|---|
gpt-4.1 |
500メートル | 30 M | 30 M | 90 K | 該当なし |
gpt-4.1-mini |
1.5 B | 100 M | 50メートル | 90 K | 該当なし |
gpt-4o |
500メートル | 30 M | 30 M | 90 K | 該当なし |
gpt-4o-mini |
1.5 B | 100 M | 50メートル | 90 K | 該当なし |
o3-mini |
1.5 B | 100 M | 50メートル | 90 K | 該当なし |
バッチ オブジェクト
プロパティ | 型 | 定義 |
---|---|---|
id |
ひも | |
object |
ひも | batch |
endpoint |
ひも | バッチによって使用される API エンドポイント |
errors |
オブジェクト | |
input_file_id |
ひも | バッチの入力ファイルの ID |
completion_window |
ひも | バッチを処理する時間枠 |
status |
ひも | バッチの現在の状態。 指定できる値: validating 、failed 、in_progress 、finalizing 、completed 、expired 、cancelling 、cancelled 。 |
output_file_id |
ひも | 正常に実行された要求の出力を含むファイルの ID。 |
error_file_id |
ひも | エラーが発生した要求の出力を含むファイルの ID。 |
created_at |
整数 | このバッチが作成された時点のタイムスタンプ(UNIXエポック)。 |
in_progress_at |
整数 | このバッチが進行状態になった時点のタイムスタンプ (UNIX エポック)。 |
expires_at |
整数 | このバッチの有効期限が切れる時点のタイムスタンプ (unix エポック)。 |
finalizing_at |
整数 | このバッチが終了処理を開始した時点のタイムスタンプ (UNIX エポック)。 |
completed_at |
整数 | このバッチが終了処理を開始した時点のタイムスタンプ (UNIX エポック)。 |
failed_at |
整数 | このバッチが失敗した時点のタイムスタンプ (unix エポック) |
expired_at |
整数 | このバッチの有効期限が切れた時点のタイムスタンプ (unix エポック)。 |
cancelling_at |
整数 | このバッチが cancelling を開始した時点のタイムスタンプ (unix エポック)。 |
cancelled_at |
整数 | このバッチが cancelled された時点のタイムスタンプ (unix エポック)。 |
request_counts |
オブジェクト | オブジェクト構造:total 整数 バッチ内の要求の合計数。 completed 整数 バッチ内で正常に完了した要求の数。 failed 整数 バッチ内の失敗した要求の数。 |
metadata |
地図 | バッチにアタッチできるキーと値のペアのセット。 これは、バッチに関する追加情報を構造化された形式で保存する上で役立ちます。 |
よく寄せられる質問 (FAQ)
バッチ API では画像を使用できますか?
この機能は、一部のマルチモーダル モデルに限定されます。 現在、バッチ要求の一部として画像をサポートしているのは GPT-4o だけです。 画像は、画像 URL または画像の base64 エンコード表現のどちらかを介して入力として指定できます。 バッチでの画像は、GPT-4 Turbo では現在サポートされていません。
ファインチューニングされたモデルでバッチ API を使用できますか?
現在これはサポートされていません。
埋め込みモデルに対してバッチ API を使用できますか?
現在これはサポートされていません。
コンテンツ フィルタリングはグローバル バッチ デプロイで機能しますか?
はい。 他のデプロイ タイプと同様に、コンテンツ フィルターを作成し、それらをグローバル バッチ デプロイ タイプに関連付けることができます。
追加のクォータを要求できますか?
はい。 Azure AI Foundry ポータルのクォータ ページから。 既定のクォータ割り当ては、クォータと制限に関する記事で確認できます。
API が 24 時間の時間枠内に要求を完了しなかった場合は何が起きますか?
Microsoft はこれらの要求を 24 時間以内に処理することを目指します。それ以上の時間がかかるジョブを期限切れにすることはありません。 作業はいつでもキャンセルできます。 ジョブを取り消すと、残りの作業はすべて取り消され、既に完了した作業が返されます。 完了した作業があればそれに対する課金が行われます。
バッチを使用してエンキューできる要求の数はいくつですか?
バッチ処理できる要求の数には固定の制限はなく、この数はエンキューされたトークン クォータによって決まります。 エンキューされたトークン クォータには、一度にエンキューできる入力トークンの最大数が含まれます。
バッチ要求が完了すると、入力トークンがクリアされるため、バッチ レート制限がリセットされます。 この制限は、キュー内のグローバル要求の数によって決まります。 Batch API キューがバッチを迅速に処理する場合、バッチ レート制限はより迅速にリセットされます。
トラブルシューティング
status
が Completed
である場合、ジョブは成功しています。 成功したジョブが error_file_id を生成することもありますが、これは 0 バイトの空ファイルに関連付けられます。
ジョブの失敗が発生した場合は、以下のように errors
プロパティ内で失敗の詳細を確認できます。
"value": [
{
"id": "batch_80f5ad38-e05b-49bf-b2d6-a799db8466da",
"completion_window": "24h",
"created_at": 1725419394,
"endpoint": "/chat/completions",
"input_file_id": "file-c2d9a7881c8a466285e6f76f6321a681",
"object": "batch",
"status": "failed",
"cancelled_at": null,
"cancelling_at": null,
"completed_at": 1725419955,
"error_file_id": "file-3b0f9beb-11ce-4796-bc31-d54e675f28fb",
"errors": {
"object": “list”,
"data": [
{
"code": "empty_file",
"message": "The input file is empty. Please ensure that the batch contains at least one request."
}
]
},
"expired_at": null,
"expires_at": 1725505794,
"failed_at": null,
"finalizing_at": 1725419710,
"in_progress_at": 1725419572,
"metadata": null,
"output_file_id": "file-ef12af98-dbbc-4d27-8309-2df57feed572",
"request_counts": {
"total": 10,
"completed": null,
"failed": null
},
}
エラー コード
エラー コード | 定義 |
---|---|
invalid_json_line |
入力ファイル内の 1 つ (または複数) の行が有効な JSON として解析できませんでした。 JSON 標準に従って入力ミス、適切な開始角かっこ、終わり角かっこ、引用符がないことを確認し、要求を再送信してください。 |
too_many_tasks |
入力ファイル内の要求の数が、許容される最大値である 100,000 を超えています。 要求の合計が 100,000 以下であることを確認し、ジョブを再送信してください。 |
url_mismatch |
入力ファイル内に他の行と一致しない URL を持つ行が存在するか、入力ファイル内で指定された URL が想定されるエンドポイント URL と一致しません。 すべての要求 URL が同じであり、それが Azure OpenAI デプロイに関連付けられているエンドポイント URL と一致することを確認してください。 |
model_not_found |
入力ファイルの model プロパティで指定された Azure OpenAI モデルのデプロイ名が見つかりませんでした。この名前が有効な Azure OpenAI モデル デプロイを指していることを確認してください。 |
duplicate_custom_id |
この要求のカスタム ID は、別の要求のカスタム ID と重複しています。 |
empty_batch |
入力ファイルをチェックして、バッチ内の各要求のカスタム ID パラメーターが一意であることを確認してください。 |
model_mismatch |
入力ファイルのこの要求の model プロパティで指定された Azure OpenAI モデルのデプロイ名が、ファイルの残りの部分のものと一致しません。要求の model プロパティで、バッチ内のすべての要求が同じ Azure AI Foundry Models のモデル展開における Azure OpenAI を指していることを確認してください。 |
invalid_request |
入力行のスキーマが無効であるか、デプロイ SKU が無効です。 入力ファイル内の要求のプロパティが想定される入力プロパティと一致していること、および Azure OpenAI デプロイ SKU がバッチ API 要求に対する globalbatch であることを確認してください。 |
input_modified |
バッチ ジョブが送信された後、BLOB 入力が変更されました。 |
input_no_permissions |
入力 BLOB にアクセスすることはできません。 Azure OpenAI アカウントと Azure Storage アカウントの間の アクセス許可 とネットワーク アクセスを確認してください。 |
既知の問題
Azure CLI を使用してデプロイされたリソースは、そのままでは Azure OpenAI グローバル バッチで機能しません。 この原因は、このメソッドを使用してデプロイされたリソースは
https://your-resource-name.openai.azure.com
パターンに従わないエンドポイント サブドメインを持つという問題にあります。 この問題の回避策は、デプロイ プロセスの一環としてサブドメインのセットアップを適切に処理する他の一般的なデプロイ方法のいずれかを使用して、新しい Azure OpenAI リソースをデプロイすることです。UTF-8-BOM でエンコードされた
jsonl
ファイルはサポートされていません。 JSON 行ファイルは UTF-8 を使用してエンコードする必要があります。 バイトOrder-Mark (BOM) でエンコードされたファイルの使用は、JSON RFC 仕様では正式にはサポートされていません。現在、Azure OpenAI では BOM でエンコードされたファイルが無効として扱われます。 現在、UTF-8-BOM でエンコードされたファイルは、"検証に失敗しました: 有効なモデル デプロイ名を入力ファイルから抽出できませんでした" という一般的なエラー メッセージを返します。 入力ファイルの各行に、'model' フィールドで指定された有効なデプロイ名があり、デプロイ名がすべての行で一貫していることを確認してください。"