Share via


Erste Schritte mit bereitgestellten Bereitstellungen in Azure OpenAI Service

Der folgende Leitfaden führt Sie durch das Einrichten einer bereitgestellten Bereitstellung mit Ihrer Azure OpenAI Service-Ressource.

Voraussetzungen

  • Azure-Abonnement: Kostenloses Azure-Konto
  • Zugriff auf Azure OpenAI im gewünschten Azure-Abonnement gewährt. Derzeit wird der Zugriff auf diesen Dienst auf Antrag gewährt. Sie können den Zugriff auf den Azure OpenAI Service beantragen, indem Sie das Formular unter https://aka.ms/oai/access ausfüllen.
  • Kontingent für eine bereitgestellte Bereitstellung erhalten und eine Verpflichtung erworben.

Hinweis

Bereitgestellte Durchsatzeinheiten (Provisioned Throughput Units, PTUs) unterscheiden sich vom Standardkontingent in Azure OpenAI und sind standardmäßig nicht verfügbar. Wenn Sie mehr über dieses Angebot erfahren möchten, wenden Sie sich an Ihr Microsoft-Kontoteam.

Erstellen Ihrer bereitgestellten Bereitstellung

Nachdem Sie eine Verpflichtung für Ihr Kontingent erworben haben, können Sie eine Bereitstellung erstellen. Zum Erstellen einer bereitgestellten Bereitstellung können Sie die folgenden Schritte ausführen. Die beschriebenen Optionen entsprechen den Einträgen im Screenshot.

Screenshot of the Azure OpenAI Studio deployment page for a provisioned deployment.

  1. Melden Sie sich bei Azure OpenAI Studio an.
  2. Wählen Sie das Abonnement aus, das für bereitgestellte Bereitstellungen aktiviert wurde, und wählen Sie die gewünschte Ressource in einer Region aus, in der Sie das Kontingent haben.
  3. Wählen Sie unter Verwaltung im linken Navigationsbereich die Option Bereitstellungen aus.
  4. Wählen Sie „Neue Bereitstellung erstellen“ aus, und konfigurieren Sie die folgenden Felder. Erweitern Sie die Dropdownliste „Erweiterte Optionen“.
  5. Füllen Sie alle Felder mit den entsprechenden Werten aus. Ein Beispiel:
Feld Beschreibung Beispiel
Modell auswählen Wählen Sie das spezifische Modell aus, das Sie bereitstellen möchten. GPT-4
Modellversion Wählen Sie die Version des bereitzustellenden Modells aus. 0613
Bereitstellungsname Der Bereitstellungsname wird in Ihrem Code verwendet, um das Modell mithilfe der Clientbibliotheken und der REST-APIs aufzurufen. gpt-4
Inhaltsfilter Geben Sie die Filterrichtlinie an, die auf die Bereitstellung angewendet werden soll. Weitere Informationen erhalten Sie in der Anleitung zur Inhaltsfilterung. Standard
Bereitstellungstyp Dies wirkt sich auf den Durchsatz und die Leistung aus. Wählen Sie für Ihre bereitgestellte Bereitstellung die Option „Bereitgestellt-Verwaltet“ aus. Bereitgestellt-Verwaltet
Bereitgestellte Durchsatzeinheiten Wählen Sie die Durchsatzmenge aus, die Sie in die Bereitstellung aufnehmen möchten. 100

Sie können Ihre Bereitstellung programmgesteuert erstellen, indem Sie den folgenden Azure CLI-Befehl verwenden. Aktualisieren Sie die sku-capacity mit der gewünschten Anzahl bereitgestellter Durchsatzeinheiten.

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-Vorlage, Bicep und Terraform können auch zum Erstellen von Bereitstellungen verwendet werden. Folgen Sie den Schritten im Abschnitt zur Automatisierung von Bereitstellungen in der Schrittanleitung Verwalten von Kontingenten, und ersetzen Sie sku.name durch „ProvisionedManaged“ anstelle von „Standard“.

Erste Aufrufe

Der Rückschlusscode für bereitgestellte Bereitstellungen ist derselbe wie für einen Standardbereitstellungstyp. Das folgende Codeschnipsel zeigt einen Chatabschlussaufruf an ein GPT-4-Modell. Wenn Sie diese Modelle zum ersten Mal programmgesteuert verwenden, wird empfohlen, mit der Schnellstartanleitung zu beginnen. Wir empfehlen, die OpenAI-Bibliothek mit Version 1.0 oder höher zu verwenden, da dies die Wiederholungslogik innerhalb der Bibliothek umfasst.

    #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)

Wichtig

Verwenden Sie für die Produktion eine sichere Art der Speicherung und des Zugriffs auf Ihre Anmeldeinformationen wie Azure Key Vault. Weitere Informationen zur Sicherheit von Anmeldeinformationen finden Sie im Azure KI Services-Artikel Sicherheit.

Grundlegendes zum erwarteten Durchsatz

Die Durchsatzmenge, die Sie auf dem Endpunkt erreichen können, ist ein Faktor der Anzahl der bereitgestellten PTUs, der Eingabegröße, der Ausgabegröße und der Aufrufrate. Die Anzahl der gleichzeitigen Aufrufe und der insgesamt verarbeiteten Token kann je nach diesen Werten variieren. Die empfohlene Methode zum Ermitteln des Durchsatzes für Ihre Bereitstellung lautet wie folgt:

  1. Verwenden Sie den Kapazitätsrechner für eine Größenschätzung. Sie finden den Kapazitätsrechner in Azure OpenAI Studio auf der Seite „Kontingente“ und auf der Registerkarte „Bereitgestellt“.
  2. Führen Sie einen Benchmark-Vergleich der Last mit einer echten Datenverkehrsworkload durch. Weitere Informationen zum Benchmarking finden Sie im Abschnitt Benchmarking.

Messen der Bereitstellungsauslastung

Wenn Sie eine bestimmte Anzahl von bereitgestellten Durchsatzeinheiten (PTUs) bereitstellen, wird für diesen Endpunkt eine festgelegte Rückschlussdurchsatzmenge zur Verfügung gestellt. Die Auslastung dieses Durchsatzes ist eine komplexe Formel basierend auf dem Modell, der Aufrufrate der Modellversion, der Eingabeaufforderungsgröße und der Generationsgröße. Zur Vereinfachung dieser Berechnung stellen wir eine Auslastungsmetrik in Azure Monitor bereit. Ihre Bereitstellung gibt für alle neuen Aufrufe 429 zurück, nachdem die Auslastung über 100 % angestiegen ist. Die bereitgestellte Auslastung wird wie folgt definiert:

PTU-Bereitstellungsauslastung = (im Zeitraum verbrauchte PTUs)/(im Zeitraum bereitgestellte PTUs)

Sie finden das Auslastungsmaß im Abschnitt „Azure Monitor“ für Ihre Ressource. Um auf die Dashboards für die Überwachung zuzugreifen, melden Sie sich bei https://portal.azure.com an, wechseln Sie zu Ihrer Azure OpenAI-Ressource, und wählen Sie im linken Navigationsbereich die Seite „Metriken“ aus. Wählen Sie auf der Seite „Metriken“ das Maß „Bereitgestellte-Verwaltete Auslastung“ aus. Wenn Sie mehr als eine Bereitstellung in der Ressource haben, sollten Sie die Werte auch nach jeder Bereitstellung aufteilen, indem Sie auf die Schaltfläche „Teilung anwenden“ klicken.

Screenshot of the provisioned managed utilization on the resource's metrics blade in the Azure portal.

Weitere Informationen zur Überwachung Ihrer Bereitstellungen finden Sie auf der Seite Überwachen von Azure OpenAI Service.

Handhabung einer hohen Auslastung

Bereitgestellte Bereitstellungen bieten Ihnen eine zugewiesene Computekapazität, um ein bestimmtes Modell auszuführen. Die Metrik „Bereitgestellte-Verwaltete Auslastung“ in Azure Monitor misst die Auslastung der Bereitstellung in Inkrementen von je einer Minute. Bereitstellungen des Typs „Bereitgestellt-Verwaltet“ werden auch optimiert, sodass akzeptierte Aufrufe mit einer einheitlichen maximalen Wartezeit pro Aufruf verarbeitet werden. Wenn die Workload die zugeordnete Kapazität überschreitet, gibt der Dienst den HTTP-Statuscode 429 zurück, bis die Auslastung unter 100 % sinkt. Die Zeit vor der Wiederholung wird in den Antwortheadern retry-after und retry-after-ms bereitgestellt, die die Zeit in Sekunden bzw. Millisekunden angeben. Bei diesem Ansatz werden die Wartezeitziele pro Aufruf beibehalten. Gleichzeitig kann bei der Entwicklung gesteuert werden, wie Situationen mit hoher Last behandelt werden, z. B. Wiederholung oder Umleitung an eine andere Erfahrung/einen anderen Endpunkt.

Was sollte ich tun, wenn ich eine 429-Antwort erhalte?

Eine 429-Antwort weist darauf hin, dass die zugeordneten PTUs zum Zeitpunkt des Aufrufs vollständig genutzt werden. Die Antwort enthält die Header retry-after-ms und retry-after, die angeben, wie lange gewartet werden muss, bis der nächste Aufruf angenommen wird. Die Behandlung einer 429-Antwort hängt von Ihren Anwendungsanforderungen ab. Hier einige Überlegungen dazu:

  • Wenn längere Wartezeiten pro Aufruf akzeptabel sind, implementieren Sie clientseitige Wiederholungslogik. Dadurch wird die retry-after-ms-Wartezeit eingehalten, und dann wird der Vorgang erneut versucht. Mit diesem Ansatz können Sie den Durchsatz für die Bereitstellung maximieren. Von Microsoft bereitgestellte Client-SDKs behandeln diese Situation bereits mit angemessenen Standardwerten. Möglicherweise benötigen Sie basierend auf Ihren Anwendungsfällen noch weitere Optimierungen.
  • Erwägen Sie, den Datenverkehr auf andere Modelle, Bereitstellungen oder Erfahrungen umzuleiten. Diese Lösung bietet die kürzeste Wartezeit, da diese Aktion ausgeführt werden kann, sobald Sie das 429-Signal erhalten. Das 429-Signal ist keine unerwartete Fehlerantwort beim Abzielen auf eine hohe Auslastung, sondern ein Teil des Entwurfs für die Verwaltung von Queuing und hoher Last für bereitgestellte Bereitstellungen.

Ändern der Wiederholungslogik innerhalb der Clientbibliotheken

Die Azure OpenAI-SDKs wiederholen 429-Antworten standardmäßig und hinter den Kulissen des Clients (bis zur maximalen Anzahl von Wiederholungsversuchen). Die Bibliotheken respektieren die retry-after-Zeit. Sie können außerdem das Wiederholungsverhalten nach Ihren Wünschen ändern. Hier sehen Sie ein Beispiel für die Python-Bibliothek.

Sie können die Option max_retries verwenden, um die Einstellungen für die Wiederholung zu konfigurieren oder zu deaktivieren:

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?"}
    ]
)

Ausführen einer Benchmark

Die genauen Leistungs- und Durchsatzfunktionen Ihrer Instanz hängen von der Art der Anforderungen ab, die Sie vornehmen, und der genauen Workload. Die beste Möglichkeit, den Durchsatz für Ihre Workload zu ermitteln, besteht darin, einen Benchmark für Ihre eigenen Daten auszuführen.

Um Sie bei dieser Arbeit zu unterstützen, bietet das Benchmarking-Tool eine Möglichkeit, Benchmarks für Ihre Bereitstellung einfach auszuführen. Das Tool enthält mehrere mögliche vorkonfigurierte Workloadformen und gibt wichtige Leistungsmetriken aus. Erfahren Sie mehr über das Tool und die Konfigurationseinstellungen in unserem GitHub-Repository: https://aka.ms/aoai/benchmarking.

Wir empfehlen den folgenden Workflow:

  1. Schätzen Sie Ihre Durchsatz-PTUs mithilfe des Kapazitätsrechners.
  2. Führen Sie einen Benchmark mit dieser Datenverkehrsform für einen längeren Zeitraum (mehr als 10 Min.) aus, um die Ergebnisse in einem stabilen Zustand zu beobachten.
  3. Beobachten Sie die Werte für Auslastung, verarbeitete Token und Aufrufrate aus dem Benchmarktool und Azure Monitor.
  4. Führen Sie mit Ihrer Clientimplementierung einen Benchmark mit Ihrer eigenen Datenverkehrsform und Ihren eigenen Workloads aus. Implementieren Sie unbedingt Wiederholungslogik entweder mithilfe einer Azure Openai-Clientbibliothek oder einer benutzerdefinierten Logik.

Nächste Schritte