Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Uwaga / Notatka
Ten dokument odnosi się do portalu Microsoft Foundry (klasycznego).
🔍 Zapoznaj się z dokumentacją rozwiązania Microsoft Foundry (nową), aby dowiedzieć się więcej o nowym portalu.
Usługa Azure OpenAI obsługuje teraz używanie usługi Azure Blob Storage dla plików wejściowych i wyjściowych usługi Azure OpenAI Batch. Korzystając z własnego przechowywania, nie podlegasz ograniczeniom dotyczącym liczby plików w partiach.
Obsługa regionów
Teraz obsługiwane we wszystkich regionach, w których są obsługiwane wdrożenia wsadowe.
Konfiguracja usługi Azure Blob Storage
Wymagania wstępne
- Konto usługi Azure Blob Storage.
- Zasób Azure OpenAI z wdrożonym modelem typu
Global-BatchlubDataZoneBatch. Aby uzyskać pomoc dotyczącą tego procesu, zapoznaj się z przewodnikiem tworzenia zasobów i wdrażania modelu.
Tożsamość zarządzana
Aby zasób usługi Azure OpenAI bezpiecznie uzyskiwał dostęp do konta usługi Azure Blob Storage, musisz skonfigurować zasób przy użyciu przypisanej przez system tożsamości zarządzanej.
Uwaga / Notatka
Obecnie tożsamości zarządzane przypisane przez użytkownika nie są obsługiwane.
Zaloguj się do https://portal.azure.com.
Znajdź zasób usługi Azure OpenAI > Wybierz Zarządzanie zasobami>Tożsamości>Przypisane systemowo, ustaw status na >.
Kontrola dostępu oparta na rolach
Po skonfigurowaniu zasobu usługi Azure OpenAI dla przypisanej przez system tożsamości zarządzanej należy przyznać mu dostęp do konta usługi Azure Blob Storage.
W https://portal.azure.com obszarze znajdź i wybierz zasób usługi Azure Blob Storage.
Wybierz Kontrola dostępu (IAM)>Dodaj>Dodaj przypisanie roli.
Wyszukaj pozycję Współautor> danych obiektu blob usługi Storage.
Wybierz Tożsamość zarządzaną>+Wybierz członków> Wybierz tożsamość zarządzaną zasobów usługi Azure OpenAI.
Jeśli wolisz używać ról niestandardowych w celu uzyskania bardziej szczegółowego dostępu, wymagane są następujące uprawnienia:
Dane wejściowe:
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read
Dane wyjściowe/foldery:
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/readMicrosoft.Storage/storageAccounts/blobServices/containers/blobs/write
Tworzenie kontenerów
W tym przykładzie utworzysz dwa kontenery o nazwie batch-inputi batch-output. Możesz je nazwać jakkolwiek chcesz, ale jeśli użyjesz alternatywnej nazwy, musisz dostosować przykłady w poniższych krokach.
Aby utworzyć kontener w obszarze Magazyn danych>, wybierz +Container> i nadaj nazwę swoim kontenerom.
Po utworzeniu kontenerów pobierz adres URL dla każdego kontenera, wybierając kontener >Ustawienia>Właściwości>. Skopiuj adresy URL.
W tym przypadku mamy:
https://{AZURE-BLOB-STORAGE-RESOURCE-NAME}.blob.core.windows.net/batch-inputhttps://{AZURE-BLOB-STORAGE-RESOURCE-NAME}.blob.core.windows.net/batch-output
Tworzenie pliku wejściowego
W tym artykule utworzymy plik o nazwie test.jsonl i skopiujemy zawartość poniżej do pliku. Musisz zmodyfikować każdy wiersz pliku, dodając do niego globalną nazwę wdrożenia wsadowego.
{"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?"}]}}
Przekazywanie pliku szkoleniowego
Na koncie usługi Azure Blob Storage otwórz utworzony wcześniej kontener batch-input .
Wybierz Przekaż, a następnie wybierz plik test.jsonl.
W czasie przetwarzania jsonl pliku w ramach zadania wsadowego nie można wprowadzać żadnych zmian w pliku. Jeśli plik ulegnie zmianie podczas uruchamiania zadania wsadowego, zadanie zakończy się niepowodzeniem.
Utwórz zadanie wsadowe
Uwaga / Notatka
metadata ta funkcja nie jest obecnie obsługiwana.
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://cognitiveservices.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))
Wyjście:
{
"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": ""
}
Stan można monitorować w taki sam sposób, jak wcześniej, zgodnie z naszym kompleksowym przewodnikiem dotyczącym korzystania z batch w usłudze Azure 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}")
Wyjście:
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
Gdy status jest completed, możesz pobrać swoją ścieżkę output_blob.
print(batch_response.model_dump_json(indent=2))
Wyjście:
{
"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"
}
Po zakończeniu zadania wsadowego możesz pobrać error_blob i output_blob za pośrednictwem interfejsu usługi Azure Blob Storage w portalu Azure lub pobrać je programowo:
Uwaga / Notatka
error_blobścieżki i output_blob są zawsze zwracane w odpowiedzi nawet w przypadkach, gdy odpowiedni plik nie jest tworzony. W tym przypadku nie było żadnych błędów, więc errors.jsonl nie zostały utworzone, istnieje tylko results.jsonl .
pip install azure-identity azure-storage-blob
Należy pamiętać, że chociaż udzieliłeś zasobowi Azure OpenAI dostępu programowego do usługi Azure Blob Storage, aby pobrać wyniki, może być konieczne także nadanie dostępu kontu użytkownika, które wykonuje poniższy skrypt. Do pobrania pliku Storage Blob Data Reader wystarczy dostęp.
# 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!")
Zobacz także
Aby uzyskać więcej informacji na temat usługi Azure OpenAI Batch, zapoznaj się z kompleksowym przewodnikiem dotyczącym przetwarzania wsadowego.