Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica solo a:Portale di Foundry (versione classica). Questo articolo non è disponibile per il nuovo portale foundry.
Altre informazioni sul nuovo portale.
Annotazioni
I collegamenti in questo articolo potrebbero aprire contenuto nella nuova documentazione di Microsoft Foundry anziché nella documentazione di Foundry (versione classica) visualizzata.
Azure OpenAI supporta ora l'uso di Archiviazione BLOB di Azure per i file di input e output di Azure OpenAI Batch. Usando il proprio storage, non si è soggetti alle restrizioni batch sul numero di file.
Supporto per area geografica
Ora supportato in tutte le aree in cui sono supportate le distribuzioni batch.
configurazione di Archiviazione BLOB di Azure
Prerequisiti
- Un account di Archiviazione BLOB di Azure.
- Risorsa Azure OpenAI con un modello del tipo di implementazione
Global-BatchoDataZoneBatchdistribuita. Per informazioni su questo processo, vedere la guida alla creazione di risorse e alla distribuzione di modelli.
Identità gestita
Per consentire alla risorsa OpenAI di Azure di accedere in modo sicuro all'account Archiviazione BLOB di Azure è necessario configurare la risorsa con un'identità gestita assegnata dal sistema sistema.
Annotazioni
Attualmente le identità gestite assegnate dall'utente non sono supportate.
Accedere a https://portal.azure.com.
Trova la risorsa Azure OpenAI > seleziona Gestione risorse>Identità>Assegnato dal sistema> imposta lo stato su Attivo.
Access control basata sui ruoli
Dopo aver configurato la risorsa OpenAI Azure per l'identità gestita assegnata dal sistema, è necessario concedere l'accesso all'account Archiviazione BLOB di Azure.
Da https://portal.azure.com trovare e selezionare la risorsa Archiviazione BLOB di Azure.
Selezionare Controllo di accesso (IAM)>Aggiungi>Aggiungi assegnazione di ruolo.
Cercare Collaboratore ai dati del BLOB di archiviazione>Avanti.
Selezionare Identità gestita>+Seleziona membri> Selezionare l'identità gestita delle risorse di Azure OpenAI.
Se si preferisce usare ruoli personalizzati per access più granulari, sono necessarie le autorizzazioni seguenti:
Dati di input:
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read
Dati/cartelle di output:
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/readMicrosoft.Storage/storageAccounts/blobServices/containers/blobs/write
Crea contenitori
Per questo esempio si creeranno due contenitori denominati batch-inpute batch-output. È possibile denominarli in qualsiasi modo, ma se si usa un nome alternativo, è necessario modificare gli esempi nei passaggi seguenti.
Per creare un contenitore in Data storage> Selezionare +Contenitore> Assegnare un nome ai contenitori.
Dopo aver creato i contenitori, recuperare l'URL per ogni contenitore selezionando le>> del contenitore > Copiare gli URL.
In questo caso abbiamo:
https://{AZURE-BLOB-STORAGE-RESOURCE-NAME}.blob.core.windows.net/batch-inputhttps://{AZURE-BLOB-STORAGE-RESOURCE-NAME}.blob.core.windows.net/batch-output
Creare un file di input
In questo articolo, creeremo un file denominato test.jsonl e copieremo il contenuto seguente nel file. È necessario modificare e aggiungere il nome della distribuzione in batch globale a ogni riga del file.
{"custom_id": "task-0", "method": "POST", "url": "/v1/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": "/v1/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": "/v1/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?"}]}}
Caricare il file di training
Dall'account Archiviazione BLOB di Azure aprire il contenitore batch-input creato in precedenza.
Selezionare Carica e selezionare il test.jsonl file.
Durante il periodo di elaborazione jsonl del file come parte del processo batch, non è possibile apportare modifiche al file. Se un file cambia mentre il processo batch esegue il processo avrà esito negativo.
Creare un processo in batch
Annotazioni
metadata attualmente non è supportato con questa funzionalità.
import os
from datetime import datetime
from openai import OpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider
token_provider = get_bearer_token_provider(
DefaultAzureCredential(), "https://ai.azure.com/.default"
)
client = OpenAI(
base_url = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",
api_key=token_provider,
)
batch_response = client.batches.create(
input_file_id=None,
endpoint="/chat/completions",
completion_window="24h",
extra_body={
"input_blob": "https://{AZURE-BLOB-STORAGE-RESOURCE-NAME}.blob.core.windows.net/batch-input/test.jsonl",
"output_folder": {
"url": "https://{AZURE-BLOB-STORAGE-RESOURCE-NAME}.blob.core.windows.net/batch-output",
}
}
)
# Save batch ID for later use
batch_id = batch_response.id
print(batch_response.model_dump_json(indent=2))
Output:
{
"id": "batch_b632a805-797b-49ed-9c9c-86eb4057f2a2",
"completion_window": "24h",
"created_at": 1747516485,
"endpoint": "/chat/completions",
"input_file_id": null,
"object": "batch",
"status": "validating",
"cancelled_at": null,
"cancelling_at": null,
"completed_at": null,
"error_file_id": null,
"errors": null,
"expired_at": null,
"expires_at": 1747602881,
"failed_at": null,
"finalizing_at": null,
"in_progress_at": null,
"metadata": null,
"output_file_id": null,
"request_counts": {
"completed": 0,
"failed": 0,
"total": 0
},
"error_blob": "",
"input_blob": "https://docstest002.blob.core.windows.net/batch-input/test.jsonl",
"output_blob": ""
}
È possibile monitorare lo stato come descritto in precedenza nella guida comprensiva sull'uso di Azure batch OpenAI.
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}")
Output:
2025-05-17 17:16:56.950427 Batch Id: batch_b632a805-797b-49ed-9c9c-86eb4057f2a2, Status: validating
2025-05-17 17:17:57.532054 Batch Id: batch_b632a805-797b-49ed-9c9c-86eb4057f2a2, Status: validating
2025-05-17 17:18:58.156793 Batch Id: batch_b632a805-797b-49ed-9c9c-86eb4057f2a2, Status: in_progress
2025-05-17 17:19:58.739708 Batch Id: batch_b632a805-797b-49ed-9c9c-86eb4057f2a2, Status: in_progress
2025-05-17 17:20:59.398508 Batch Id: batch_b632a805-797b-49ed-9c9c-86eb4057f2a2, Status: finalizing
2025-05-17 17:22:00.242371 Batch Id: batch_b632a805-797b-49ed-9c9c-86eb4057f2a2, Status: completed
Una volta che status passa a completed, è possibile recuperare il percorso di output_blob:
print(batch_response.model_dump_json(indent=2))
Output:
{
"id": "batch_b632a805-797b-49ed-9c9c-86eb4057f2a2",
"completion_window": "24h",
"created_at": 1747516485,
"endpoint": "/chat/completions",
"input_file_id": null,
"object": "batch",
"status": "completed",
"cancelled_at": null,
"cancelling_at": null,
"completed_at": 1747516883,
"error_file_id": null,
"errors": null,
"expired_at": null,
"expires_at": 1747602881,
"failed_at": null,
"finalizing_at": 1747516834,
"in_progress_at": 1747516722,
"metadata": null,
"output_file_id": null,
"request_counts": {
"completed": 3,
"failed": 0,
"total": 3
},
"error_blob": "https://docstest002.blob.core.windows.net/batch-output/{GUID}/errors.jsonl",
"input_blob": "https://docstest002.blob.core.windows.net/batch-input/test.jsonl",
"output_blob": "https://docstest002.blob.core.windows.net/batch-output/{GUID}/results.jsonl"
}
Al termine del processo batch, è possibile scaricare il error_blob e output_blob tramite l'interfaccia Archiviazione BLOB di Azure nel portale di Azure oppure scaricare a livello di codice:
Annotazioni
error_blobI percorsi e output_blob vengono sempre restituiti nella risposta anche nei casi in cui non viene creato un file corrispondente. In questo caso non sono stati generati errori, quindi errors.jsonl non è stato creato, esiste solo results.jsonl.
pip install azure-identity azure-storage-blob
Tenere presente che, pur concedendo alla risorsa OpenAI di Azure l'accesso a livello di codice al tuo Archiviazione BLOB di Azure, per scaricare i risultati potrebbe essere necessario concedere anche all'account utente che esegue lo script qui sotto l'accesso. Per scaricare il file, Storage Blob Data Reader accesso è sufficiente.
# Import required libraries
from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient
# Define storage account and container information
storage_account_name = "docstest002" # replace with your storage account name
container_name = "batch-output"
# Define the blob paths to download
blob_paths = [
"{REPLACE-WITH-YOUR-GUID}/results.jsonl",
]
credential = DefaultAzureCredential()
account_url = f"https://{storage_account_name}.blob.core.windows.net"
blob_service_client = BlobServiceClient(account_url=account_url, credential=credential)
container_client = blob_service_client.get_container_client(container_name)
for blob_path in blob_paths:
blob_client = container_client.get_blob_client(blob_path)
file_name = blob_path.split("/")[-1]
print(f"Downloading {file_name}...")
with open(file_name, "wb") as file:
download_stream = blob_client.download_blob()
file.write(download_stream.readall())
print(f"Downloaded {file_name} successfully!")
Vedere anche
Per ulteriori informazioni su Azure OpenAI Batch, vedere la guida batch completa.