Freigeben über


Anpassen eines Modells mit Feinabstimmung

Mit Azure OpenAI Service können Sie unsere Modelle mit einem Prozess für Ihre persönlichen Datasets anpassen, der als Optimierung bezeichnet wird. Mit diesem Anpassungsschritt können Sie den Dienst besser nutzen, da er Folgendes bieten kann:

  • Qualitativ hochwertigere Ergebnisse als die, die Sie nur durch schnelle Datentechnik erhalten können
  • Die Möglichkeit, mit mehr Beispielen zu trainieren, als in den maximalen Anfragekontext eines Modells passen.
  • Tokeneinsparungen durch kürzere Eingabeaufforderungen
  • Anforderungen mit geringerer Latenz, insbesondere bei Verwendung kleinerer Modelle.

Im Gegensatz zum Few-Shot-Lernen verbessert die Feinabstimmung das Modell durch Training mit wesentlich mehr Beispielen, als in eine Eingabeaufforderung passen, sodass Sie bessere Ergebnisse für eine Vielzahl von Aufgaben erzielen können. Da die Feinabstimmung die Gewichtungen des Basismodells anpasst, um die Leistung für den jeweiligen Vorgang zu verbessern, müssen Sie nicht so viele Beispiele oder Anweisungen in die Eingabeaufforderung aufnehmen. Das bedeutet, es werden für jeden API-Aufruf weniger Text gesendet und weniger Token verarbeitet, was möglicherweise Kosten spart und die Latenz von Anforderungen verbessert.

Wir verwenden LoRA (Low Rank Approximation), um Modelle so zu optimieren, dass ihre Komplexität reduziert wird, ohne die Leistung erheblich zu beeinträchtigen. Bei dieser Methode wird die ursprüngliche Matrix mit hohem Rang durch eine Matrix mit niedrigerem Rang approximiert, so dass während der überwachten Trainingsphase nur eine kleinere Teilmenge der „wichtigen“ Parameter feinabgestimmt wird, was das Modell handhabbarer und effizienter macht. Für Benutzer wird das Training so schneller und erschwinglicher als mit anderen Techniken.

Voraussetzungen

Hinweis

Derzeit müssen Sie eine Anwendung einreichen, um auf Azure OpenAI Service zuzugreifen. Um Zugriff zu beantragen, füllen Sie dieses Formular aus.

Modelle

Die folgenden Modelle unterstützen die Optimierung:

  • babbage-002
  • davinci-002
  • gpt-35-turbo (0613)
  • gpt-35-turbo (1106)
  • gpt-35-turbo (0125)
  • gpt-4 (0613)

Schauen Sie sich die Modellseite an, um zu überprüfen, welche Regionen derzeit Optimierung unterstützen.

Wenn Sie planen, gpt-4 für die Feinabstimmung zu verwenden, lesen Sie den Leitfaden zur Sicherheitsbewertung für die Public Preview von GPT-4.

Überprüfen des Workflows für Azure OpenAI Studio

Nehmen Sie sich einen Moment Zeit, um den Optimierungsworkflow für die Verwendung von Azure OpenAI Studio zu überprüfen:

  1. Bereiten Sie Ihre Trainings- und Validierungsdaten vor.
  2. Verwenden Sie den Assistenten zum Erstellen benutzerdefinierter Modelle in Azure OpenAI Studio zum Trainieren Ihres benutzerdefinierten Modells.
    1. Wählen Sie ein Basismodell aus.
    2. Wählen Sie die Trainingsdaten aus.
    3. Wählen Sie optional Ihre Validierungsdaten aus.
    4. Konfigurieren Sie optional erweiterte Optionen für Ihren Optimierungsauftrag.
    5. Überprüfen Sie Ihre Auswahl, und trainieren Sie das neue benutzerdefinierte Modell.
  3. Überprüfen des Status Ihres optimierten Modells.
  4. Stellen Sie Ihr benutzerdefiniertes Modell für die Verwendung bereit.
  5. Verwenden Sie Ihr benutzerdefiniertes Modell.
  6. Optional: Analysieren Sie die Leistung und Eignung Ihres benutzerdefinierten Modells.

Vorbereiten Ihrer Trainings- und Validierungsdaten

Ihre Trainings- und Validierungsdatasets bestehen aus Ein- und Ausgabebeispielen für das gewünschte Verhalten des Modells.

Für verschiedene Modelltypen ist ein anderes Format von Trainingsdaten erforderlich.

Die Trainings- und Validierungsdaten, die Sie verwenden, müssen als JSON Lines (JSONL)-Dokument formatiert werden. Für gpt-35-turbo-0613 muss das Optimierungs-Dataset im Konversationsformat formatiert werden, das von den Chatabschlussen API verwendet wird.

Wenn Sie eine schrittweise Anleitung zur Optimierung eines gpt-35-turbo-0613 Modells wünschen, lesen Sie bitte das Azure OpenAI Optimierungslernprogramm.

Beispieldateiformat

{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Is Xbox better than PlayStation?"}, {"role": "assistant", "content": "I apologize, but I cannot provide personal opinions. My primary job is to assist you with any issues related to your Xbox device. Do you have any Xbox-related issues that need addressing?"}]}
{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Can I play PC games on my Xbox?"}, {"role": "assistant", "content": "While Xbox consoles don't natively support PC games, they can play an array of Xbox games, many of which are also available on PC. Can I assist you with finding games compatible with your Xbox device?"}]}
{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "I'm having trouble connecting my Xbox to the Wi-Fi."}, {"role": "assistant", "content": "No worries, let's go through the network settings on your Xbox. Can you please tell me what happens when you try to connect it to the Wi-Fi?"}]}

Dateiformat für mehrteiligen Chat

Mehrteilige Unterhaltungen in einer einzigen Zeile Ihrer JSONL-Trainingsdatei werden ebenfalls unterstützt. Um die Feinabstimmung für bestimmte Assistentenmeldungen zu überspringen, fügen Sie das optionale weight-Schlüsselwertpaar hinzu. Derzeit kann weight auf 0 oder 1 festgelegt werden.

{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the capital of France?"}, {"role": "assistant", "content": "Paris", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Paris, as if everyone doesn't know that already.", "weight": 1}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who wrote 'Romeo and Juliet'?"}, {"role": "assistant", "content": "William Shakespeare", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Oh, just some guy named William Shakespeare. Ever heard of him?", "weight": 1}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "How far is the Moon from Earth?"}, {"role": "assistant", "content": "384,400 kilometers", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Around 384,400 kilometers. Give or take a few, like that really matters.", "weight": 1}]}

Zusätzlich zum JSONL-Format müssen Dateien mit Trainings- und Validierungsdaten in UTF-8 codiert sein und eine Bytereihenfolge-Marke (BOM) enthalten. Die Datei muss kleiner als 512 MB sein.

Erstellen von Trainings- und Validierungsdatasets

Je mehr Trainingsbeispiele Sie haben, desto besser. Für die Feinabstimmung sind mindestens 10 Trainingsbeispiele erforderlich, aber eine so geringe Anzahl reicht nicht aus, um die Reaktionen des Modells merklich zu beeinflussen. Es empfiehlt sich, Hunderte, wenn nicht Tausende von Trainingsbeispielen bereitzustellen, um erfolgreich zu sein.

Im Allgemeinen führt eine Verdoppelung der Datasetgröße zu einer linearen Erhöhung der Modellqualität. Bedenken Sie jedoch, dass Beispiele mit geringer Qualität die Leistung beeinträchtigen können. Wenn Sie das Modell mit vielen internen Daten trainieren, ohne zuvor das Dataset zu bereinigen, sodass es nur noch Beispiele mit höchster Qualität enthält, erhalten Sie möglicherweise ein Modell, das viel schlechter funktioniert als erwartet.

Verwenden des Assistenten zum Erstellen benutzerdefinierter Modelle

Azure OpenAI Studio bietet den Assistenten zum Erstellen benutzerdefinierter Modelle, mit dem Sie interaktiv ein optimiertes Modell für Ihre Azure-Ressource erstellen und trainieren können.

  1. Öffnen Sie Azure OpenAI Studio unter https://oai.azure.com/, und melden Sie sich mit Anmeldeinformationen an, die Ihnen Zugriff auf Ihre Azure OpenAI-Ressource gewähren. Wählen Sie während des Anmeldeworkflows das passende Verzeichnis, Azure-Abonnement und die Azure OpenAI-Ressource aus.

  2. Navigieren Sie in Azure OpenAI Studio zum Bereich Verwaltung > Modelle, und wählen Sie Benutzerdefiniertes Modell erstellen aus.

    Screenshot des Zugriffs auf den Assistenten zum Erstellen benutzerdefinierter Modelle in Azure OpenAI Studio

Der Assistent zum Erstellen benutzerdefinierter Modelle wird geöffnet.

Auswählen des Basismodells

Der erste Schritt beim Erstellen eines benutzerdefinierten Modells besteht in der Auswahl eines Basismodells. Im Bereich Basismodell können Sie ein Basismodell auswählen, das für Ihr benutzerdefiniertes Modell verwendet werden soll. Ihre Auswahl hat sowohl auf die Leistung als auch auf die Kosten Ihres Modells Einfluss.

Wählen Sie das Basismodell in der Dropdownliste Basismodelltyp und dann Weiter aus, um fortzufahren.

Sie können ein benutzerdefiniertes Modell aus einem der folgenden verfügbaren Basismodelle erstellen:

  • babbage-002

  • davinci-002

  • gpt-35-turbo (0613)

  • gpt-35-turbo (1106)

  • gpt-35-turbo (0125)

  • gpt-4 (0613)

  • Oder Sie können ein zuvor feinabgestimmtes Modell optimieren, das als „base-model.ft-{jobid}“ formatiert ist.

Screenshot der Modelloptionen mit einem benutzerdefinierten fein abgestimmten Modell.

Weitere Informationen zu unseren verfeinerbaren Basismodellen finden Sie unter Modelle.

Auswahl Ihrer Trainingsdaten

Der nächste Schritt besteht darin, entweder vorhandene vorbereitete Trainingsdaten auszuwählen oder neue vorbereitete Trainingsdaten für die Verwendung beim Anpassen des Modells hochzuladen. Im Bereich Trainingsdaten werden alle vorhandenen, zuvor hochgeladenen Datasets sowie Optionen zum Hochladen neuer Trainingsdaten angezeigt.

Screenshot des Bereichs „Trainingsdaten“ im Assistenten zum Erstellen benutzerdefinierter Modelle in Azure OpenAI Studio

Für große Datendateien wird der Import aus Azure Blob Storage empfohlen. Große Dateien können instabil werden, wenn sie über mehrteilige Formulare hochgeladen werden, da die Anforderungen atomar sind und nicht erneut ausgeführt oder fortgesetzt werden können. Weitere Informationen zu Azure Blob Storage finden Sie unter Was ist Azure Blob Storage?.

Hinweis

Dateien mit Trainingsdaten müssen als JSONL-Dateien formatiert und in UTF-8 mit BOM (Bytereihenfolge-Marke) codiert groß sein. Die Datei muss kleiner als 512 MB sein.

Hochladen von Trainingsdaten aus einer lokalen Datei

Sie können ein neues Trainingsdataset aus einer lokalen Datei in den Dienst hochladen, indem Sie eine der folgenden Methoden verwenden:

  • Ziehen Sie die Datei per Drag & Drop in den Clientbereich des Bereichs Trainingsdaten, und wählen Sie anschließend Datei hochladen aus.

  • Wählen Sie im Clientbereich des Bereichs TrainingsdatenNach einer Datei suchen aus, wählen Sie im Dialogfeld Öffnen die hochzuladende Datei und dann Datei hochladen aus.

Nachdem Sie das Trainingsdataset ausgewählt und hochgeladen haben, wählen Sie Weiter aus, um fortzufahren.

Screenshot des Bereichs „Trainingsdaten“ im Assistenten zum Erstellen benutzerdefinierter Modelle mit Optionen für lokale Dateien

Importieren von Trainingsdaten aus Azure Blob Storage

Sie können ein Trainingsdataset aus Azure Blob Storage oder einem anderen freigegebenen Webspeicherort importieren, indem Sie den Namen und den Speicherort der Datei angeben.

  1. Geben Sie den Dateinamen der Datei ein.

  2. Geben Sie als Dateispeicherort die Azure Blob Storage-URL, die Azure Storage-SAS (Shared Access Signature) oder einen anderen Link zu einem zugänglichen freigegebenen Webspeicherort an.

  3. Wählen Sie Datei hochladen aus, um das Trainingsdataset in den Dienst zu importieren.

Nachdem Sie das Trainingsdataset ausgewählt und hochgeladen haben, wählen Sie Weiter aus, um fortzufahren.

Screenshot des Bereichs „Trainingsdaten“ im Assistenten zum Erstellen benutzerdefinierter Modelle mit Optionen für Azure Blob Storage und freigegebene Webspeicherorte

Auswählen Ihrer Validierungsdaten

Der nächste Schritt bietet Optionen zum Konfigurieren des Modells für die Verwendung von Validierungsdaten im Trainingsprozess. Wenn Sie keine Validierungsdaten verwenden möchten, können Sie Weiter auswählen, um erweiterte Optionen für das Modell auszuwählen. Andernfalls können Sie, falls Sie über ein Validierungsdataset verfügen, entweder vorhandene vorbereitete Validierungsdaten oder neue vorbereitete Validierungsdaten für die Verwendung beim Anpassen Ihres Modells auswählen.

Im Bereich Validierungsdaten werden alle vorhandenen, zuvor hochgeladenen Trainings- und Validierungsdatasets und Optionen für das Hochladen neuer Validierungsdaten angezeigt.

Screenshot des Bereichs „Validierungsdaten“ im Assistenten zum Erstellen benutzerdefinierter Modelle in Azure OpenAI Studio

Für große Datendateien wird der Import aus Azure Blob Storage empfohlen. Große Dateien können instabil werden, wenn sie über mehrteilige Formulare hochgeladen werden, da die Anforderungen atomar sind und nicht erneut ausgeführt oder fortgesetzt werden können.

Hinweis

Wie Trainingsdatendateien müssen auch Dateien mit Validierungsdaten als JSONL-Dateien formatiert und in UTF-8 mit BOM (Bytereihenfolge-Marke) codiert sein. Die Datei muss kleiner als 512 MB sein.

Hochladen von Validierungsdaten aus einer lokalen Datei

Sie können ein neues Validierungsdataset aus einer lokalen Datei in den Dienst hochladen, indem Sie eine der folgenden Methoden verwenden:

  • Ziehen Sie die Datei per Drag & Drop in den Clientbereich des Bereichs Validierungsdaten, und wählen Sie anschließend Datei hochladen aus.

  • Wählen Sie im Clientbereich des Bereichs ValidierungsdatenNach einer Datei suchen aus, wählen Sie im Dialogfeld Öffnen die hochzuladende Datei und dann Datei hochladen aus.

Nachdem Sie das Validierungsdataset ausgewählt und hochgeladen haben, wählen Sie Weiter aus, um fortzufahren.

Screenshot des Bereichs „Validierungsdaten“ im Assistenten zum Erstellen benutzerdefinierter Modelle mit Optionen für lokale Dateien

Importieren von Validierungsdaten aus Azure Blob Storage

Sie können ein Validierungsdataset aus Azure Blob Storage oder einem anderen freigegebenen Webspeicherort importieren, indem Sie den Namen und den Speicherort der Datei angeben.

  1. Geben Sie den Dateinamen der Datei ein.

  2. Geben Sie als Dateispeicherort die Azure Blob Storage-URL, die Azure Storage-SAS (Shared Access Signature) oder einen anderen Link zu einem zugänglichen freigegebenen Webspeicherort an.

  3. Wählen Sie Datei hochladen aus, um das Trainingsdataset in den Dienst zu importieren.

Nachdem Sie das Validierungsdataset ausgewählt und hochgeladen haben, wählen Sie Weiter aus, um fortzufahren.

Screenshot des Bereichs „Validierungsdaten“ im Assistenten zum Erstellen benutzerdefinierter Modelle mit Optionen für Azure Blob Storage und freigegebene Webspeicherorte

Erweiterte Optionen konfigurieren

Der Assistent zum Erstellen benutzerdefinierter Modelle zeigt im Bereich Erweiterte Optionen Parameter zum Trainieren Ihres optimierten Modells an. Folgende Parameter sind verfügbar:

Name Art Beschreibung
batch_size integer Die für das Training zu verwendende Batchgröße. Die Batchgröße ist die Anzahl der Trainingsbeispiele, die zum Trainieren eines einzelnen Vorwärts- und Rückwärtsdurchlaufs verwendet werden. Im Allgemeinen haben wir festgestellt, dass größere Batchgrößen für größere Datasets besser funktionieren. Der Standardwert sowie der Maximalwert für diese Eigenschaft sind spezifisch für ein Basismodell. Eine größere Batchgröße bedeutet, dass Modellparameter weniger häufig aktualisiert werden, aber mit geringerer Varianz.
learning_rate_multiplier Zahl Der Lernratenmultiplikator, der für das Training verwendet werden soll. Die Optimierungslernrate ist die ursprüngliche Lernrate, die für das Vorabtraining verwendet wird, mit diesem Wert multipliziert. Größere Lernraten sind tendenziell besser für größere Batchgrößen. Es empfiehlt sich, mit Werten im Bereich 0,02 bis 0,2 zu experimentieren, um zu sehen, was die besten Ergebnisse erzeugt. Eine kleinere Lernrate kann nützlich sein, um Überanpassung zu vermeiden.
n_epochs integer Die Anzahl der Epochen zum Trainieren des Modells. Eine Epoche bezeichnet einen vollständigen Zyklus über das Trainingsdataset.
seed integer Der Seed steuert die Reproduzierbarkeit des Auftrags. Die Übergabe der gleichen Seed- und Auftragsparameter sollte zu den gleichen Ergebnissen führen, kann sich aber in seltenen Fällen unterscheiden. Wenn Sie keinen Seed angeben, wird ein Seed für Sie generiert.

Screenshot des Bereichs „Erweiterte Optionen“ im Assistenten zum Erstellen benutzerdefinierter Modelle mit ausgewählten Standardoptionen

Wählen Sie entweder Standard aus, um die Standardwerte für den Optimierungsauftrag zu verwenden, oder wählen Sie Erweitert aus, um die Hyperparameterwerte anzuzeigen und zu bearbeiten. Wenn Standardwerte ausgewählt sind, bestimmen wir den richtigen Wert algorithmisch basierend auf Ihren Trainingsdaten.

Nachdem Sie die erweiterten Optionen konfiguriert haben, wählen Sie Weiter aus, um Ihre Auswahl zu überprüfen und Ihr optimiertes Modell zu trainieren.

Überprüfen Ihrer Auswahl und Trainieren Ihres Modells

Im Bereich Überprüfen des Assistenten werden Informationen zu Ihren Konfigurationsoptionen angezeigt.

Screenshot des Bereichs „Überprüfen“ im Assistenten zum Erstellen benutzerdefinierter Modelle in Azure OpenAI Studio

Wenn Sie bereit sind, Ihr Modell zu trainieren, wählen Sie Trainingsauftrag starten, um den Optimierungsauftrag zu starten und zum Fensterbereich Modelle zurückzukehren.

Überprüfen des Status Ihres benutzerdefinierten Modells

Im Bereich Modelle werden Informationen zu Ihrem benutzerdefinierten Modell auf der Registerkarte Benutzerdefinierte Modelle angezeigt. Die Registerkarte enthält Informationen zum Status und zur Auftrags-ID des Optimierungsauftrags für Ihr benutzerdefiniertes Modell. Nach Abschluss des Auftrags wird auf der Registerkarte die Datei-ID der Ergebnisdatei angezeigt. Möglicherweise müssen Sie Aktualisieren auswählen, um einen aktualisierten Status für den Modelltrainingsauftrag anzuzeigen.

Screenshot der Seite „Modelle“ von Azure OpenAI Studio mit einem benutzerdefinierten Modell

Ein Optimierungsauftrag benötigt nach dem Start möglicherweise einige Zeit bis zum Abschluss. Ihr Auftrag befindet sich möglicherweise in der Warteschlange hinter anderen Aufträgen im System. Das Trainieren Ihres Modells kann je nach Größe von Modell und Dataset Minuten oder Stunden dauern.

Im Folgenden finden Sie einige Aufgaben, die Sie im Bereich Modelle ausführen können:

  • Überprüfen Sie den Status des Optimierungsauftrags für Ihr benutzerdefiniertes Modell in der Spalte Status auf der Registerkarte Benutzerdefinierte Modelle.

  • Wählen Sie in der Spalte Modellname den Modellnamen aus, um weitere Informationen zum benutzerdefinierten Modell anzuzeigen. Sie können den Status des Optimierungsauftrags, die Trainingsergebnisse, die Trainingsereignisse und die Hyperparameter anzeigen, die für den Auftrag verwendet wurden.

  • Wählen Sie Trainingsdatei herunterladen aus, um die Trainingsdaten herunterzuladen, die Sie für das Modell verwendet haben.

  • Wählen Sie Ergebnisse herunterladen aus, um die Ergebnisdatei herunterzuladen, die an den Optimierungsauftrag für Ihr Modell angefügt ist, und eine Analyse Ihres benutzerdefinierten Modells im Hinblick auf seine Trainings- und Validierungsleistung durchführen.

  • Wählen Sie Aktualisieren aus, um die Informationen auf der Seite zu aktualisieren.

Screenshot der Seite „Modelle“ in Azure OpenAI Studio mit einem benutzerdefinierten Modell

Sicherheitsbewertung für die GPT-4-Feinabstimmung – Public Preview

GPT-4 ist unser fortschrittlichstes Modell, für das eine Feinabstimmung auf Ihre Bedürfnisse vorgenommen werden kann. Wie auch Azure OpenAI-Modelle allgemein bringen die erweiterten Funktionen fein abgestimmter Modelle zusätzliche Herausforderungen im Bereich verantwortungsvolle KI mit sich, die mit schädlichen Inhalten, Manipulation, menschenähnlichem Verhalten, Datenschutzproblemen und anderen Aspekten zusammenhängen. Weitere Informationen zu Risiken, Funktionen und Einschränkungen finden Sie in der Übersicht über verantwortungsvolle KI-Methoden und dem Transparenzhinweis. Um dazu beizutragen, die Risiken zu mindern, die Modelle mit GPT-4-Feinabstimmung mit sich bringen, haben wir zusätzliche Bewertungsschritte implementiert, die helfen, schädliche Inhalte beim Training und in Ausgaben von fein abgestimmten Modellen zu erkennen und zu verhindern. Diese Schritte basieren auf dem Microsoft Responsible AI Standard (Microsoft-Standard für verantwortungsvolle KI) und der Inhaltsfilterung von Azure OpenAI Service.

  • Bewertungen werden in dedizierten und kundenspezifischen privaten Arbeitsbereichen durchgeführt.
  • Die Bewertungsendpunkte befinden sich am selben geografischen Standort wie die Azure OpenAI-Ressource.
  • In Verbindung mit der Durchführung von Bewertungen werden keine Trainingsdaten gespeichert. Nur die finale Modellbewertung (bereitstellbar oder nicht bereitstellbar) wird persistent gespeichert.

Die Bewertungsfilter für Modelle mit GPT-4-Feinabstimmung sind auf voreingestellte Schwellenwerte festgelegt, die von Kunden nicht geändert werden können. Sie hängen nicht mit benutzerdefinierten Inhaltsfilterkonfigurationen zusammen, die Sie möglicherweise erstellt haben.

Bewertung von Daten

Vor Beginn des Trainings wird eine Bewertung Ihrer Daten hinsichtlich potenziell schädlicher Inhalte (Gewalt, sexuelle Inhalte, Hass, Fairness, Selbstverletzung – siehe Kategoriedefinitionen unter diesem Link) vorgenommen. Wenn schädliche Inhalte mit einem höheren Schweregrad als dem festgelegten erkannt werden, tritt bei Ihrem Trainingsauftrag ein Fehler auf, und es wird eine Benachrichtigung mit den Fehlerkategorien angezeigt.

Beispielbenachrichtigung:

The provided training data failed RAI checks for harm types: [hate_fairness, self_harm, violence]. Please fix the data and try again.

Ihre Trainingsdaten werden automatisch während des Datenimportauftrags im Rahmen der Bereitstellung der Feinabstimmungsfunktion bewertet.

Wenn während des Feinabstimmungsauftrags aufgrund der Erkennung schädlicher Inhalte in Trainingsdaten ein Fehler auftritt, wird Ihnen dieser Auftrag nicht in Rechnung gestellt.

Modellauswertung

Nach Abschluss des Trainings, aber bevor das fein abgestimmte Modell für die Bereitstellung verfügbar ist, wird das resultierende Modell mithilfe der integrierten Risiko- und Sicherheitsmetriken von Azure hinsichtlich potenziell schädlicher Antworten bewertet. Mit dem Testansatz, den wir auch für grundlegende große Sprachmodelle verwenden, simuliert unsere Bewertungsfunktion eine Unterhaltung mit Ihrem fein abgestimmten Modell, um die Wahrscheinlichkeit, dass schädliche Inhalte ausgegeben werden, zu bewerten. Hierbei werden ebenfalls festgelegte Kategorien schädlicher Inhalte (Gewalt, sexuelle Inhalte, Hass, Fairness und Selbstverletzung) verwendet.

Wenn festgestellt wird, dass ein Modell Ausgaben mit Inhalten generiert, die als schädlicher als ein akzeptabler Grad eingestuft werden, werden Sie darüber informiert, dass Ihr Modell nicht für die Bereitstellung verfügbar ist. Diese Benachrichtigung enthält außerdem Informationen zu den konkreten Kategorien schädlicher Inhalte, die erkannt wurden:

Beispielbenachrichtigung:

This model is unable to be deployed. Model evaluation identified that this fine tuned model scores above acceptable thresholds for [Violence, Self Harm]. Please review your training data set and resubmit the job.

Screenshot: Feinabstimmungsauftrag, bei dem aufgrund der Sicherheitsbewertung ein Fehler aufgetreten ist

Wie bei der Datenbewertung wird das Modell automatisch während des Feinabstimmungsauftrags im Rahmen der Bereitstellung der Feinabstimmungsfunktion bewertet. Nur die daraus resultierende Bewertung (bereitstellbar oder nicht bereitstellbar) wird vom Dienst protokolliert. Wenn bei der Bereitstellung des fein abgestimmten Modells aufgrund der Erkennung schädlicher Inhalte in Modellausgaben ein Fehler auftritt, wird Ihnen die Trainingsausführung nicht in Rechnung gestellt.

Bereitstellen eines optimierten Modells

Wenn der Optimierungsauftrag erfolgreich war, können Sie das benutzerdefinierte Modell im Bereich Modelle bereitstellen. Sie müssen Ihr benutzerdefiniertes Modell bereitstellen, um es für die Verwendung in Vervollständigungsaufrufen verfügbar zu machen.

Wichtig

Bleibt die Bereitstellung eines angepassten Modells nach der Bereitstellung länger als fünfzehn (15) Tage inaktiv, wird die Bereitstellung gelöscht. Die Bereitstellung eines angepassten Modells ist inaktiv, wenn das Modell vor mehr als fünfzehn (15) Tagen bereitgestellt wurde und während eines ununterbrochenen Zeitraums von 15 Tagen keine Abschluss- oder Chatabschlussaufrufe an das Modell übermittelt wurden.

Durch das Löschen einer inaktiven Bereitstellung wird das zugrunde liegende angepasste Modell nicht gelöscht oder verändert. Das angepasste Modell kann jederzeit erneut bereitgestellt werden. Wie unter Preise für Azure OpenAI Service beschrieben, fallen für jedes benutzerdefinierte (optimierte) bereitgestellte Modell stündliche Hostingkosten an, unabhängig davon, ob das Modell für Vervollständigungs- oder Chatvervollständigungsaufrufe genutzt wird. Weitere Informationen zum Planen und Verwalten der Kosten mit Azure OpenAI finden Sie im Leitfaden unter Planen und Verwalten der Kosten für Azure OpenAI Service.

Hinweis

Für ein benutzerdefiniertes Modell ist nur eine Bereitstellung zulässig. Wenn Sie ein bereits bereitgestelltes benutzerdefiniertes Modell auswählen, wird eine Fehlermeldung angezeigt.

Um ein benutzerdefiniertes Modell bereitzustellen, wählen Sie das bereitzustellende benutzerdefinierte Modell und dann Modell bereitstellen aus.

Screenshot der Bereitstellung eines benutzerdefinierten Modells in Azure OpenAI Studio

Das Dialogfeld Modell bereitstellen wird geöffnet. Geben Sie in diesem Dialogfeld einen Namen in Bereitstellungsname ein, und wählen Sie dann Erstellen aus, um die Bereitstellung Ihres benutzerdefinierten Modells zu starten.

Screenshot des Dialogfelds „Modell bereitstellen“ in Azure OpenAI Studio

Sie können den Fortschritt Ihrer Bereitstellung im Bereich Bereitstellungen von Azure OpenAI Studio überwachen.

Regionsübergreifende Bereitstellung

Die Optimierung unterstützt die Bereitstellung eines optimierten Modells in einer anderen Region als bei der ursprünglichen Optimierung des Modells. Sie können es auch für ein anderes Abonnement/eine andere Region bereitstellen.

Die einzigen Einschränkungen sind, dass die neue Region die Optimierung auch unterstützen muss und bei der abonnementübergreifenden Bereitstellung das Kontos, das das Autorisierungstoken für die Bereitstellung generiert, Zugriff auf die Quell- und Zielabonnements haben muss.

Die Bereitstellung über Abonnements/Regionen hinweg kann über Python oder REST erfolgen.

Verwenden eines bereitgestellten benutzerdefinierten Modells

Nachdem Ihr benutzerdefiniertes Modell bereitgestellt wurde, können Sie es wie jedes andere bereitgestellte Modell verwenden. Sie können Playground in Azure OpenAI Studio verwenden, um mit Ihrer neuen Bereitstellung zu experimentieren. Sie können damit fortfahren, die gleichen Parameter mit Ihrem benutzerdefinierten Modell zu verwenden, etwa für temperature und max_tokens, wie das auch mit anderen bereitgestellten Modellen möglich ist. Für optimierte babbage-002 und davinci-002 Modelle verwenden Sie den Abschluss-Playground und die Abschluss-API. Für optimierte gpt-35-turbo-0613 Modelle verwenden Sie den Chat-Playground und die Chatvervollständigungs-API.

Screenshot der Seite „Playground“ in Azure OpenAI Studio mit hervorgehobenen Abschnitten

Analysieren Ihres benutzerdefinierten Modells

Azure OpenAI fügt eine Ergebnisdatei mit dem Namen results.csv an jeden Optimierungsauftrag an, nachdem dieser abgeschlossen wurde. Sie können die Ergebnisdatei verwenden, um die Trainings- und Validierungsleistung Ihres benutzerdefinierten Modells zu analysieren. Die Datei-ID für die Ergebnisdatei wird für jedes benutzerdefinierte Modell in der Spalte Ergebnisdatei-ID des Bereichs Modelle in Azure OpenAI Studio aufgeführt. Sie können die Datei-ID verwenden, um die Ergebnisdatei zu identifizieren und sie im Bereich Datendatei von Azure OpenAI Studio herunterzuladen.

Die Ergebnisdatei ist eine CSV-Datei, die eine Kopfzeile und eine Zeile für jeden Trainingsschritt enthält, der durch den Optimierungsauftrag ausgeführt wurde. Die Ergebnisdatei enthält die folgenden Spalten:

Spaltenname BESCHREIBUNG
step Die Anzahl der Trainingsschritte. Ein Trainingsschritt stellt einen einzelnen Durchgang, vorwärts und rückwärts, über einen Batch von Trainingsdaten dar.
train_loss Der Verlust für den Trainingsbatch.
train_mean_token_accuracy Der Prozentsatz der Token im Trainingsbatch, die vom Modell richtig vorhergesagt wurden
Wenn z. B. die Batchgröße auf 3 festgelegt ist und Ihre Daten [[1, 2], [0, 5], [4, 2]] Vervollständigungen enthalten, wird dieser Wert auf 0,83 (5 von 6) festgelegt, wenn das Modell [[1, 1], [0, 5], [4, 2]] vorhergesagt hat.
valid_loss Der Verlust für den Validierungsbatch.
validation_mean_token_accuracy Der Prozentsatz der Token im Validierungsbatch, die vom Modell richtig vorhergesagt wurden
Wenn z. B. die Batchgröße auf 3 festgelegt ist und Ihre Daten [[1, 2], [0, 5], [4, 2]] Vervollständigungen enthalten, wird dieser Wert auf 0,83 (5 von 6) festgelegt, wenn das Modell [[1, 1], [0, 5], [4, 2]] vorhergesagt hat.
full_valid_loss Der am Ende jeder Epoche berechnete Validierungsverlust. Wenn das Training gut verläuft, sollte der Verlust abnehmen.
full_valid_mean_token_accuracy Die gültige mittlere Tokengenauigkeit, die am Ende jeder Epoche berechnet wird. Wenn das Training gut verläuft, sollte die Tokengenauigkeit größer werden.

Sie können die Daten in Ihrer results.csv-Datei auch als Plots in Azure OpenAI Studio anzeigen. Wählen Sie den Link für Ihr trainiertes Modell aus, und es werden drei Diagramme angezeigt: Verlust, mittlere Tokengenauigkeit und Tokengenauigkeit. Wenn Sie Validierungsdaten bereitgestellt haben, werden beide Datasets auf demselben Plot angezeigt.

Achten Sie darauf, dass Ihr Verlust mit der Zeit abnimmt und Ihre Genauigkeit zunimmt. Wenn eine Divergenz zwischen Ihren Trainings- und Validierungsdaten angezeigt wird, kann dies auf eine Überanpassung hindeuten. Versuchen Sie, mit weniger Epochen oder einem kleineren Multiplikator der Lernrate zu trainieren.

Bereinigen Ihrer Bereitstellungen, benutzerdefinierten Modelle und Trainingsdateien

Wenn Sie mit Ihrem benutzerdefinierten Modell fertig sind, können Sie die Bereitstellung und das Modell löschen. Sie können gegebenenfalls außerdem die Trainings- und Validierungsdateien löschen, die Sie in den Dienst hochgeladen haben.

Löschen Ihrer Modellimplementierung

Wichtig

Bleibt die Bereitstellung eines angepassten Modells nach der Bereitstellung länger als fünfzehn (15) Tage inaktiv, wird die Bereitstellung gelöscht. Die Bereitstellung eines angepassten Modells ist inaktiv, wenn das Modell vor mehr als fünfzehn (15) Tagen bereitgestellt wurde und während eines ununterbrochenen Zeitraums von 15 Tagen keine Abschluss- oder Chatabschlussaufrufe an das Modell übermittelt wurden.

Durch das Löschen einer inaktiven Bereitstellung wird das zugrunde liegende angepasste Modell nicht gelöscht oder verändert. Das angepasste Modell kann jederzeit erneut bereitgestellt werden. Wie unter Preise für Azure OpenAI Service beschrieben, fallen für jedes benutzerdefinierte (optimierte) bereitgestellte Modell stündliche Hostingkosten an, unabhängig davon, ob das Modell für Vervollständigungs- oder Chatvervollständigungsaufrufe genutzt wird. Weitere Informationen zum Planen und Verwalten der Kosten mit Azure OpenAI finden Sie im Leitfaden unter Planen und Verwalten der Kosten für Azure OpenAI Service.

Sie können die Bereitstellung Ihres benutzerdefinierten Modells im Bereich Bereitstellungen in Azure OpenAI Studio löschen. Wählen Sie die zu löschende Bereitstellung aus, und wählen Sie dann Löschen aus, um die Bereitstellung zu löschen.

Löschen des benutzerdefinierten Modells

Sie können ein benutzerdefiniertes Modell im Bereich Modelle in Azure OpenAI Studio löschen. Wählen Sie auf der Registerkarte Benutzerdefinierte Modelle das zu löschende benutzerdefinierte Modell und dann Löschen aus, um das benutzerdefinierte Modell zu löschen.

Hinweis

Sie können kein benutzerdefiniertes Modell löschen, für das eine Bereitstellung vorhanden ist. Sie müssen zunächst die Modellimplementierung löschen, bevor Sie Ihr benutzerdefiniertes Modell löschen können.

Löschen Ihrer Trainingsdateien

Sie können optional Trainings- und Validierungsdateien, die Sie zum Training hochgeladen haben, und Ergebnisdateien, die während des Trainings generiert wurden, im Bereich Verwaltung>Datendateien in Azure OpenAI Studio löschen. Wählen Sie die zu löschende Datei aus, und wählen Sie dann Löschen aus, um die Datei zu löschen.

Kontinuierliche Optimierung

Nachdem Sie ein optimiertes Modell erstellt haben, können Sie das Modell im Laufe der Zeit durch weitere Optimierungen weiter verfeinern. Kontinuierliche Optimierung ist der iterative Prozess, bei dem ein bereits optimiertes Modell als Basismodell ausgewählt und anhand neuer Sätze von Trainingsbeispielen weiter verfeinert wird.

Wenn Sie eine Optimierung für ein Modell durchführen möchten, das Sie bereits optimiert haben, verwenden Sie den gleichen Prozess wie unter Erstellen eines angepassten Modells beschrieben, anstatt jedoch den Namen eines generischen Basismodells anzugeben, geben Sie Ihr bereits abgestimmtes Modell an. Ein benutzerdefiniertes optimiertes Modell würde wie folgt aussehen: gpt-35-turbo-0613.ft-5fd1918ee65d4cd38a5dcf6835066ed7

Screenshot der Benutzeroberfläche „Benutzerdefiniertes Modell erstellen“ mit hervorgehobenem fein abgestimmten Modell.

Außerdem wird empfohlen, den suffix-Parameter einzuschließen, um die Unterscheidung zwischen verschiedenen Iterationen Ihres optimierten Modells zu vereinfachen. suffix verwendet eine Zeichenfolge und wird so festgelegt, dass das optimierte Modell identifiziert wird. Mit der OpenAI Python-API wird eine Zeichenfolge von bis zu 18 Zeichen unterstützt, die Ihrem optimierten Modellnamen hinzugefügt wird.

Wichtig

Einige der in diesem Artikel beschriebenen Features sind möglicherweise nur in der Vorschau verfügbar. Diese Vorschauversion wird ohne Vereinbarung zum Servicelevel bereitgestellt und sollte nicht für Produktionsworkloads verwendet werden. Manche Features werden möglicherweise nicht unterstützt oder sind nur eingeschränkt verwendbar. Weitere Informationen finden Sie unter Zusätzliche Nutzungsbestimmungen für Microsoft Azure-Vorschauen.

Voraussetzungen

Hinweis

Derzeit müssen Sie eine Anwendung einreichen, um auf Azure OpenAI Service zuzugreifen. Um Zugriff zu beantragen, füllen Sie dieses Formular aus.

Modelle

Die folgenden Modelle unterstützen die Optimierung:

  • babbage-002
  • davinci-002
  • gpt-35-turbo (0613)
  • gpt-35-turbo (1106)
  • gpt-35-turbo (0125)
  • gpt-4 (0613)

Schauen Sie sich die Modellseite an, um zu überprüfen, welche Regionen derzeit Optimierung unterstützen.

Wenn Sie planen, gpt-4 für die Feinabstimmung zu verwenden, lesen Sie den Leitfaden zur Sicherheitsbewertung für die Public Preview von GPT-4.

Überprüfen des Workflows für Azure KI Studio

Nehmen Sie sich einen Moment Zeit, um den Optimierungsworkflow für die Verwendung von Azure KI Studio zu überprüfen:

  1. Bereiten Sie Ihre Trainings- und Validierungsdaten vor.
  2. Verwenden Sie den Assistenten zum Optimieren des Modells in Azure KI Studio, um Ihr benutzerdefiniertes Modell zu trainieren.
    1. Wählen Sie ein Modell aus.
    2. Wählen Sie die Trainingsdaten aus.
    3. Wählen Sie optional Ihre Validierungsdaten aus.
    4. Konfigurieren Sie optional Ihre Parameter für Ihren Optimierungsauftrag.
    5. Überprüfen Sie Ihre Auswahl, und trainieren Sie das neue benutzerdefinierte Modell.
  3. Überprüfen des Status Ihres optimierten Modells.
  4. Als Option, analysieren Sie Ihr optimiertes Modell auf Leistung und Eignung.
  5. Stellen Sie Ihr optimiertes Modell bereit.
  6. Nutzung Ihres optimierten Modells.

Vorbereiten Ihrer Trainings- und Validierungsdaten

Ihre Trainings- und Validierungsdatasets bestehen aus Ein- und Ausgabebeispielen für das gewünschte Verhalten des Modells.

Für verschiedene Modelltypen ist ein anderes Format von Trainingsdaten erforderlich.

Die Trainings- und Validierungsdaten, die Sie verwenden, müssen als JSON Lines (JSONL)-Dokument formatiert werden. Für gpt-35-turbo-0613 muss das Optimierungs-Dataset im Konversationsformat formatiert werden, das von den Chatabschlussen API verwendet wird.

Wenn Sie eine schrittweise Anleitung zur Optimierung eines gpt-35-turbo-0613 Modells wünschen, lesen Sie bitte das Azure OpenAI Optimierungslernprogramm.

Beispieldateiformat

{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Is Xbox better than PlayStation?"}, {"role": "assistant", "content": "I apologize, but I cannot provide personal opinions. My primary job is to assist you with any issues related to your Xbox device. Do you have any Xbox-related issues that need addressing?"}]}
{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Can I play PC games on my Xbox?"}, {"role": "assistant", "content": "While Xbox consoles don't natively support PC games, they can play an array of Xbox games, many of which are also available on PC. Can I assist you with finding games compatible with your Xbox device?"}]}
{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "I'm having trouble connecting my Xbox to the Wi-Fi."}, {"role": "assistant", "content": "No worries, let's go through the network settings on your Xbox. Can you please tell me what happens when you try to connect it to the Wi-Fi?"}]}

Dateiformat für mehrteiligen Chat

Mehrteilige Unterhaltungen in einer einzigen Zeile Ihrer JSONL-Trainingsdatei werden ebenfalls unterstützt. Um die Feinabstimmung für bestimmte Assistentenmeldungen zu überspringen, fügen Sie das optionale weight-Schlüsselwertpaar hinzu. Derzeit kann weight auf 0 oder 1 festgelegt werden.

{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the capital of France?"}, {"role": "assistant", "content": "Paris", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Paris, as if everyone doesn't know that already.", "weight": 1}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who wrote 'Romeo and Juliet'?"}, {"role": "assistant", "content": "William Shakespeare", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Oh, just some guy named William Shakespeare. Ever heard of him?", "weight": 1}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "How far is the Moon from Earth?"}, {"role": "assistant", "content": "384,400 kilometers", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Around 384,400 kilometers. Give or take a few, like that really matters.", "weight": 1}]}

Zusätzlich zum JSONL-Format müssen Dateien mit Trainings- und Validierungsdaten in UTF-8 codiert sein und eine Bytereihenfolge-Marke (BOM) enthalten. Die Datei muss kleiner als 512 MB sein.

Erstellen von Trainings- und Validierungsdatasets

Je mehr Trainingsbeispiele Sie haben, desto besser. Für die Feinabstimmung sind mindestens 10 Trainingsbeispiele erforderlich, aber eine so geringe Anzahl reicht nicht aus, um die Reaktionen des Modells merklich zu beeinflussen. Es empfiehlt sich, Hunderte, wenn nicht Tausende von Trainingsbeispielen bereitzustellen, um erfolgreich zu sein.

Im Allgemeinen führt eine Verdoppelung der Datasetgröße zu einer linearen Erhöhung der Modellqualität. Bedenken Sie jedoch, dass Beispiele mit geringer Qualität die Leistung beeinträchtigen können. Wenn Sie das Modell mit vielen internen Daten trainieren, ohne zuvor das Dataset zu bereinigen, sodass es nur noch Beispiele mit höchster Qualität enthält, erhalten Sie möglicherweise ein Modell, das viel schlechter funktioniert als erwartet.

Erstellen Ihres optimierten Modells

Führen Sie die folgenden Schritte aus, um Azure OpenAI-Modell in einem vorhandenen Azure KI Studio-Projekt zu optimieren:

  1. Melden Sie sich bei Azure KI Studio an, und wählen Sie Ihr Projekt aus. Wenn Sie noch kein Projekt haben, erstellen Sie zuerst ein Projekt.

  2. Wählen Sie im reduzierbaren linken Menü die Option Optimierung>+ Modell optimieren aus.

    Screenshot der Option zum Erstellen eines neuen optimierten Modells.

Auswählen des Basismodells

  1. Wählen Sie ein Basismodell für die Optimierung aus. Ihre Auswahl hat sowohl auf die Leistung als auch auf die Kosten Ihres Modells Einfluss. In diesem Beispiel wählen wir das gpt-35-turbo Modell aus. Wählen Sie dann Bestätigen aus.

    Screenshot der Option zum Auswählen eines Modells zur Feinabstimmung.

  2. Für gpt-35-turbo stehen verschiedene Versionen zur Verfügung. Bitte wählen Sie also aus, welche Version Sie optimieren möchten. Wir wählen (0301).

  3. Außerdem wird empfohlen, den suffix-Parameter einzuschließen, um die Unterscheidung zwischen verschiedenen Iterationen Ihres optimierten Modells zu vereinfachen. suffix verwendet eine Zeichenfolge und wird so festgelegt, dass das optimierte Modell identifiziert wird. Mit der OpenAI Python-API wird eine Zeichenfolge von bis zu 18 Zeichen unterstützt, die Ihrem optimierten Modellnamen hinzugefügt wird.

Wenn Sie mehrere Azure OpenAI-Verbindungen für die Optimierung aktiviert haben, wählen Sie aus, welche Ressource Sie verwenden möchten. Bitte beachten Sie, dass alle Benutzer mit Zugriff auf Ihre Azure OpenAI-Ressource Zugriff auf dieses optimierte Modell haben.

  1. Wählen Sie Weiteraus.

    Screenshot der grundlegenden Einstellungen für die Optimierung eines Modells.

Auswahl Ihrer Trainingsdaten

Der nächste Schritt besteht darin, entweder vorhandene vorbereitete Trainingsdaten auszuwählen oder neue vorbereitete Trainingsdaten für die Verwendung beim Anpassen des Modells hochzuladen. Im Bereich Trainingsdaten werden alle vorhandenen, zuvor hochgeladenen Datasets sowie Optionen zum Hochladen neuer Trainingsdaten angezeigt.

Screenshot des Bereichs

  • Wenn Ihre Schulungsdaten bereits in Ihrem Projekt enthalten sind, wählen Sie Daten in Azure KI Studio aus.

    • Wählen Sie die Datei in der Liste aus, die im Bereich Trainingsdaten angezeigt wird.
  • Wenn Ihre Schulungsdaten bereits in den Azure OpenAI-Dienst hochgeladen wurden, wählen Sie Ihre Azure OpenAI-Verbindung unter Azure OpenAI-Verbindung aus.

  • Um Schulungsdaten hochzuladen, um Ihr Modell zu optimieren, wählen Sie Daten hochladen und dann Datei hochladen aus.

    • Stellen Sie sicher, dass alle Trainingsbeispiele das erwartete Format für Rückschlüsse haben. Für die effektive Optimierung von Modellen ist ein ausgewogenes und vielfältiges Dataset erforderlich. Dazu gehören die Aufrechterhaltung des Datengleichgewichts, die Einbeziehung verschiedener Szenarien und das regelmäßige Optimieren von Trainingsdaten zur Ausrichtung an realen Erwartungen, was letztendlich zu genaueren und ausgewogeneren Modellantworten führt. Weitere Informationen finden Sie unter Datenaufbereitung.
    • Für große Datendateien wird der Import aus Azure Blob Storage empfohlen. Große Dateien können instabil werden, wenn sie über mehrteilige Formulare hochgeladen werden, da die Anforderungen atomar sind und nicht erneut ausgeführt oder fortgesetzt werden können. Weitere Informationen zu Azure Blob Storage finden Sie unter Was ist Azure Blob Storage?.

Hinweis

Dateien mit Trainingsdaten müssen als JSONL-Dateien formatiert und in UTF-8 mit BOM (Bytereihenfolge-Marke) codiert groß sein. Die Datei muss kleiner als 512 MB sein.

Screenshot der Option zum lokalen Hochladen von Schulungsdaten.

Nach dem Hochladen von Dateien wird eine Vorschau Ihrer Schulungsdaten angezeigt. Wählen Sie Weiter aus, um fortzufahren.

Screenshot der Vorschau der Schulungsdaten.

Auswählen Ihrer Validierungsdaten

Optional können Sie Validierungsdaten bereitstellen, um Ihr Modell zu optimieren. Wenn Sie keine Validierungsdaten verwenden möchten, können Sie Keine auswählen, und dann Weiter, um erweiterte Optionen für das Modell auszuwählen.

Andernfalls können Sie, wenn Sie über ein Validierungsdatenset verfügen, entweder aus zuvor hochgeladenen Daten wählen oder neu vorbereitete Validierungsdaten hochladen, um Ihr Modell zu optimieren.

Hinweis

Wie Trainingsdatendateien müssen auch Dateien mit Validierungsdaten als JSONL-Dateien formatiert und in UTF-8 mit BOM (Bytereihenfolge-Marke) codiert sein. Die Datei muss kleiner als 512 MB sein.

Konfigurieren Ihrer Parameter

Konfigurieren Sie optional Parameter für Ihren Optimierungsauftrag. Folgende Funktionen sind verfügbar:

Name Art Beschreibung
batch_size integer Die für das Training zu verwendende Batchgröße. Die Batchgröße ist die Anzahl der Trainingsbeispiele, die zum Trainieren eines einzelnen Vorwärts- und Rückwärtsdurchlaufs verwendet werden. Im Allgemeinen haben wir festgestellt, dass größere Batchgrößen für größere Datasets besser funktionieren. Der Standardwert sowie der Maximalwert für diese Eigenschaft sind spezifisch für ein Basismodell. Eine größere Batchgröße bedeutet, dass Modellparameter weniger häufig aktualisiert werden, aber mit geringerer Varianz. Bei Festlegung auf -1 wird batch_size als 0,2 % der Beispiele im Trainingssatz berechnet. Der maximale Wert beträgt 256.
learning_rate_multiplier Zahl Der Lernratenmultiplikator, der für das Training verwendet werden soll. Die Optimierungslernrate ist die ursprüngliche Lernrate, die für das Vorabtraining verwendet wird, mit diesem Wert multipliziert. Größere Lernraten sind tendenziell besser für größere Batchgrößen. Es empfiehlt sich, mit Werten im Bereich 0,02 bis 0,2 zu experimentieren, um zu sehen, was die besten Ergebnisse erzeugt. Eine kleinere Lernrate kann nützlich sein, um Überanpassung zu vermeiden.
n_epochs integer Die Anzahl der Epochen zum Trainieren des Modells. Eine Epoche bezeichnet einen vollständigen Zyklus über das Trainingsdataset. Bei Festlegung auf -1 wird die Anzahl der Epochen basierend auf den Eingabedaten dynamisch bestimmt.
seed integer Der Seed steuert die Reproduzierbarkeit des Auftrags. Die Übergabe der gleichen Seed- und Auftragsparameter sollte zu den gleichen Ergebnissen führen, kann sich aber in seltenen Fällen unterscheiden. Wenn Sie keinen Seed angeben, wird ein Seed für Sie generiert.

Sie können die Standardkonfiguration verlassen oder die Werte an Ihre Einstellung anpassen. Nachdem Sie ihre Konfigurationen abgeschlossen haben, wählen Sie Weiter aus.

Überprüfen Ihrer Auswahl und Trainieren Ihres Modells

Überprüfen Sie Ihre Auswahl, und wählen Sie Absenden aus, um mit dem Training Ihres neuen optimierten Modells zu beginnen.

Überprüfen des Status Ihres optimierten Modells

Nachdem Sie Ihren Optimierungsauftrag eingereicht haben, sehen Sie eine Seite mit Details zu Ihrem optimierten Modell. Sie finden den Status und weitere Informationen zu Ihrem optimierten Modell auf der Seite Optimierung>Modelle in Azure KI Studio.

Ihr Auftrag befindet sich möglicherweise in der Warteschlange hinter anderen Aufträgen im System. Das Trainieren Ihres Modells kann je nach Größe von Modell und Dataset Minuten oder Stunden dauern.

Analyse Ihres optimierten Modells

Nachdem die Optimierung erfolgreich abgeschlossen wurde, können Sie eine Ergebnisdatei namens results.csv auf der Optimierungsseite auf der Registerkarte Details herunterladen. Sie können die Ergebnisdatei verwenden, um die Trainings- und Validierungsleistung Ihres benutzerdefinierten Modells zu analysieren.

Die Ergebnisdatei ist eine CSV-Datei, die eine Kopfzeile und eine Zeile für jeden Trainingsschritt enthält, der durch den Optimierungsauftrag ausgeführt wurde. Die Ergebnisdatei enthält die folgenden Spalten:

Spaltenname BESCHREIBUNG
step Die Anzahl der Trainingsschritte. Ein Trainingsschritt stellt einen einzelnen Durchgang, vorwärts und rückwärts, über einen Batch von Trainingsdaten dar.
train_loss Der Verlust für den Trainingsbatch.
train_mean_token_accuracy Der Prozentsatz der Token im Trainingsbatch, die vom Modell richtig vorhergesagt wurden
Wenn z. B. die Batchgröße auf 3 festgelegt ist und Ihre Daten [[1, 2], [0, 5], [4, 2]] Vervollständigungen enthalten, wird dieser Wert auf 0,83 (5 von 6) festgelegt, wenn das Modell [[1, 1], [0, 5], [4, 2]] vorhergesagt hat.
valid_loss Der Verlust für den Validierungsbatch.
validation_mean_token_accuracy Der Prozentsatz der Token im Validierungsbatch, die vom Modell richtig vorhergesagt wurden
Wenn z. B. die Batchgröße auf 3 festgelegt ist und Ihre Daten [[1, 2], [0, 5], [4, 2]] Vervollständigungen enthalten, wird dieser Wert auf 0,83 (5 von 6) festgelegt, wenn das Modell [[1, 1], [0, 5], [4, 2]] vorhergesagt hat.
full_valid_loss Der am Ende jeder Epoche berechnete Validierungsverlust. Wenn das Training gut verläuft, sollte der Verlust abnehmen.
full_valid_mean_token_accuracy Die gültige mittlere Tokengenauigkeit, die am Ende jeder Epoche berechnet wird. Wenn das Training gut verläuft, sollte die Tokengenauigkeit größer werden.

Sie können die Daten in Ihrer results.csv Datei auch als Plots in Azure KI Studio auf der Registerkarte Metriken Ihres optimierten Modells anzeigen. Wählen Sie den Link für Ihr trainiertes Modell aus, und es werden drei Diagramme angezeigt: Verlust, mittlere Tokengenauigkeit und Tokengenauigkeit. Wenn Sie Validierungsdaten bereitgestellt haben, werden beide Datasets auf demselben Plot angezeigt.

Achten Sie darauf, dass Ihr Verlust mit der Zeit abnimmt und Ihre Genauigkeit zunimmt. Wenn eine Divergenz zwischen Ihren Trainings- und Validierungsdaten angezeigt wird, kann dies auf eine Überanpassung hindeuten. Versuchen Sie, mit weniger Epochen oder einem kleineren Multiplikator der Lernrate zu trainieren.

Sicherheitsbewertung für die GPT-4-Feinabstimmung – Public Preview

GPT-4 ist unser fortschrittlichstes Modell, für das eine Feinabstimmung auf Ihre Bedürfnisse vorgenommen werden kann. Wie auch Azure OpenAI-Modelle allgemein bringen die erweiterten Funktionen fein abgestimmter Modelle zusätzliche Herausforderungen im Bereich verantwortungsvolle KI mit sich, die mit schädlichen Inhalten, Manipulation, menschenähnlichem Verhalten, Datenschutzproblemen und anderen Aspekten zusammenhängen. Weitere Informationen zu Risiken, Funktionen und Einschränkungen finden Sie in der Übersicht über verantwortungsvolle KI-Methoden und dem Transparenzhinweis. Um dazu beizutragen, die Risiken zu mindern, die Modelle mit GPT-4-Feinabstimmung mit sich bringen, haben wir zusätzliche Bewertungsschritte implementiert, die helfen, schädliche Inhalte beim Training und in Ausgaben von fein abgestimmten Modellen zu erkennen und zu verhindern. Diese Schritte basieren auf dem Microsoft Responsible AI Standard (Microsoft-Standard für verantwortungsvolle KI) und der Inhaltsfilterung von Azure OpenAI Service.

  • Bewertungen werden in dedizierten und kundenspezifischen privaten Arbeitsbereichen durchgeführt.
  • Die Bewertungsendpunkte befinden sich am selben geografischen Standort wie die Azure OpenAI-Ressource.
  • In Verbindung mit der Durchführung von Bewertungen werden keine Trainingsdaten gespeichert. Nur die finale Modellbewertung (bereitstellbar oder nicht bereitstellbar) wird persistent gespeichert.

Die Bewertungsfilter für Modelle mit GPT-4-Feinabstimmung sind auf voreingestellte Schwellenwerte festgelegt, die von Kunden nicht geändert werden können. Sie hängen nicht mit benutzerdefinierten Inhaltsfilterkonfigurationen zusammen, die Sie möglicherweise erstellt haben.

Bewertung von Daten

Vor Beginn des Trainings wird eine Bewertung Ihrer Daten hinsichtlich potenziell schädlicher Inhalte (Gewalt, sexuelle Inhalte, Hass, Fairness, Selbstverletzung – siehe Kategoriedefinitionen unter diesem Link) vorgenommen. Wenn schädliche Inhalte mit einem höheren Schweregrad als dem festgelegten erkannt werden, tritt bei Ihrem Trainingsauftrag ein Fehler auf, und es wird eine Benachrichtigung mit den Fehlerkategorien angezeigt.

Beispielbenachrichtigung:

The provided training data failed RAI checks for harm types: [hate_fairness, self_harm, violence]. Please fix the data and try again.

Ihre Trainingsdaten werden automatisch während des Datenimportauftrags im Rahmen der Bereitstellung der Feinabstimmungsfunktion bewertet.

Wenn während des Feinabstimmungsauftrags aufgrund der Erkennung schädlicher Inhalte in Trainingsdaten ein Fehler auftritt, wird Ihnen dieser Auftrag nicht in Rechnung gestellt.

Modellauswertung

Nach Abschluss des Trainings, aber bevor das fein abgestimmte Modell für die Bereitstellung verfügbar ist, wird das resultierende Modell mithilfe der integrierten Risiko- und Sicherheitsmetriken von Azure hinsichtlich potenziell schädlicher Antworten bewertet. Mit dem Testansatz, den wir auch für grundlegende große Sprachmodelle verwenden, simuliert unsere Bewertungsfunktion eine Unterhaltung mit Ihrem fein abgestimmten Modell, um die Wahrscheinlichkeit, dass schädliche Inhalte ausgegeben werden, zu bewerten. Hierbei werden ebenfalls festgelegte Kategorien schädlicher Inhalte (Gewalt, sexuelle Inhalte, Hass, Fairness und Selbstverletzung) verwendet.

Wenn festgestellt wird, dass ein Modell Ausgaben mit Inhalten generiert, die als schädlicher als ein akzeptabler Grad eingestuft werden, werden Sie darüber informiert, dass Ihr Modell nicht für die Bereitstellung verfügbar ist. Diese Benachrichtigung enthält außerdem Informationen zu den konkreten Kategorien schädlicher Inhalte, die erkannt wurden:

Beispielbenachrichtigung:

This model is unable to be deployed. Model evaluation identified that this fine tuned model scores above acceptable thresholds for [Violence, Self Harm]. Please review your training data set and resubmit the job.

Screenshot: Feinabstimmungsauftrag, bei dem aufgrund der Sicherheitsbewertung ein Fehler aufgetreten ist

Wie bei der Datenbewertung wird das Modell automatisch während des Feinabstimmungsauftrags im Rahmen der Bereitstellung der Feinabstimmungsfunktion bewertet. Nur die daraus resultierende Bewertung (bereitstellbar oder nicht bereitstellbar) wird vom Dienst protokolliert. Wenn bei der Bereitstellung des fein abgestimmten Modells aufgrund der Erkennung schädlicher Inhalte in Modellausgaben ein Fehler auftritt, wird Ihnen die Trainingsausführung nicht in Rechnung gestellt.

Bereitstellen eines optimierten Modells

Sobald Ihr Modell optimiert ist, können Sie das Modell bereitstellen und in Ihrer eigenen Anwendung verwenden. Sie können ein abgestimmtes Modell nicht über die Bereitstellungsseite oder die Playgroundseite in Azure KI Studio bereitstellen. Die einzige Möglichkeit, derzeit ein fein abgestimmtes Modell bereitzustellen, stammt von der Modelldetailseite für dieses Modell.

Wenn Sie das Modell bereitstellen, stellen Sie das Modell für die Ableitung zur Verfügung, und dies verursacht eine stündliche Hostinggebühr. Optimierte Modelle können jedoch ohne Kosten in Azure KI Studio gespeichert werden, bis Sie bereit sind, sie zu verwenden.

Wichtig

Bleibt die Bereitstellung eines angepassten Modells nach der Bereitstellung länger als fünfzehn (15) Tage inaktiv, wird die Bereitstellung gelöscht. Die Bereitstellung eines angepassten Modells ist inaktiv, wenn das Modell vor mehr als fünfzehn (15) Tagen bereitgestellt wurde und während eines ununterbrochenen Zeitraums von 15 Tagen keine Abschluss- oder Chatabschlussaufrufe an das Modell übermittelt wurden.

Durch das Löschen einer inaktiven Bereitstellung wird das zugrunde liegende angepasste Modell nicht gelöscht oder verändert. Das angepasste Modell kann jederzeit erneut bereitgestellt werden. Wie unter Preise für Azure OpenAI Service beschrieben, fallen für jedes benutzerdefinierte (optimierte) bereitgestellte Modell stündliche Hostingkosten an, unabhängig davon, ob das Modell für Vervollständigungs- oder Chatvervollständigungsaufrufe genutzt wird. Weitere Informationen zum Planen und Verwalten der Kosten mit Azure OpenAI finden Sie im Leitfaden unter Planen und Verwalten der Kosten für Azure OpenAI Service.

Hinweis

Für ein optimiertes Modell ist nur eine Bereitstellung zulässig. Wenn Sie ein bereits bereitgestelltes optimiertes Modell auswählen, wird eine Fehlermeldung angezeigt.

Sie können den Fortschritt Ihrer Bereitstellung im Bereich Bereitstellungen von Azure KI Studio überwachen.

Verwenden eines bereitgestellten optimierten Modells

Nachdem Ihr optimiertes Modell bereitgestellt wurde, können Sie es wie jedes andere bereitgestellte Modell verwenden. Sie können Playground in Azure KI Studio verwenden, um mit Ihrer neuen Bereitstellung zu experimentieren. Sie können auch die REST-API verwenden, um Ihr optimiertes Modell aus Ihrer eigenen Anwendung aufzurufen. Sie können sogar mit der Verwendung dieses neuen optimierten Modells in Ihrem Eingabeaufforderungsfluss beginnen, um Ihre generative KI-Anwendung zu erstellen.

Hinweis

Bei Chat-Modellen muss die Systemnachricht, die Sie als Leitfaden für Ihr optimiertes Modell verwenden (unabhängig davon, ob es bereitgestellt oder zum Testen auf dem Playground verfügbar ist), mit der Systemnachricht identisch sein, die Sie für das Training verwendet haben. Wenn Sie eine andere Systemmeldung verwenden, wird das Modell möglicherweise nicht wie erwartet ausgeführt.

Bereinigen Ihrer Bereitstellungen, optimierten Modelle und Trainingsdateien

Wenn Sie mit Ihrem optimierten Modell fertig sind, können Sie die Bereitstellung und das Modell löschen. Sie können gegebenenfalls außerdem die Trainings- und Validierungsdateien löschen, die Sie in den Dienst hochgeladen haben.

Löschen Ihrer optimierten Modellbereitstellung

Wichtig

Bleibt die Bereitstellung eines angepassten Modells nach der Bereitstellung länger als fünfzehn (15) Tage inaktiv, wird die Bereitstellung gelöscht. Die Bereitstellung eines angepassten Modells ist inaktiv, wenn das Modell vor mehr als fünfzehn (15) Tagen bereitgestellt wurde und während eines ununterbrochenen Zeitraums von 15 Tagen keine Abschluss- oder Chatabschlussaufrufe an das Modell übermittelt wurden.

Durch das Löschen einer inaktiven Bereitstellung wird das zugrunde liegende angepasste Modell nicht gelöscht oder verändert. Das angepasste Modell kann jederzeit erneut bereitgestellt werden. Wie unter Preise für Azure OpenAI Service beschrieben, fallen für jedes benutzerdefinierte (optimierte) bereitgestellte Modell stündliche Hostingkosten an, unabhängig davon, ob das Modell für Vervollständigungs- oder Chatvervollständigungsaufrufe genutzt wird. Weitere Informationen zum Planen und Verwalten der Kosten mit Azure OpenAI finden Sie im Leitfaden unter Planen und Verwalten der Kosten für Azure OpenAI Service.

Sie können die Bereitstellung für Ihr optimiertes Modell auf der Seite Bereitstellungen in Azure KI Studio löschen. Wählen Sie die zu löschende Bereitstellung aus, und wählen Sie dann Löschen aus, um die Bereitstellung zu löschen.

Löschen Ihres optimierten Modells

Sie können ein optimiertes Modell auf der Optimierungsseite in Azure KI Studio löschen. Wählen Sie das optimierte Modell aus, das gelöscht werden soll, und wählen Sie dann Löschen aus, um das optimierte Modell zu löschen.

Hinweis

Sie können kein optimiertes Modell löschen, für das eine Bereitstellung vorhanden ist. Zuerst müssen Sie die Modellimplementierung löschen, bevor Sie Ihr optimiertes Modell löschen können.

Löschen Ihrer Trainingsdateien

Sie können optional Trainings- und Validierungsdateien, die Sie zum Trainieren hochgeladen haben, und Ergebnisdateien, die während des Trainings generiert wurden, löschen. Dazu müssen Sie zu Azure OpenAI Studio wechseln und zum Bereich Verwaltungsdatendateien> navigieren. Wählen Sie die zu löschende Datei aus, und wählen Sie dann Löschen aus, um die Datei zu löschen.

Voraussetzungen

Hinweis

Derzeit müssen Sie eine Anwendung einreichen, um auf Azure OpenAI Service zuzugreifen. Um Zugriff zu beantragen, füllen Sie dieses Formular aus.

Modelle

Die folgenden Modelle unterstützen die Optimierung:

  • babbage-002
  • davinci-002
  • gpt-35-turbo (0613)
  • gpt-35-turbo (1106)
  • gpt-35-turbo (0125)
  • gpt-4 (0613)

Wenn Sie planen, gpt-4 für die Feinabstimmung zu verwenden, lesen Sie den Leitfaden zur Sicherheitsbewertung für die Public Preview von GPT-4.

Oder Sie können ein zuvor feinabgestimmtes Modell optimieren, das als „base-model.ft-{jobid}“ formatiert ist.

Screenshot der Modelloptionen mit einem benutzerdefinierten fein abgestimmten Modell.

Schauen Sie sich die Modellseite an, um zu überprüfen, welche Regionen derzeit Optimierung unterstützen.

Überprüfen des Workflows für das Python SDK

Nehmen Sie sich einen Moment Zeit, um den Optimierungsworkflow für die Verwendung des Python SDK mit Azure OpenAI zu überprüfen:

  1. Bereiten Sie Ihre Trainings- und Validierungsdaten vor.
  2. Wählen Sie ein Basismodell aus.
  3. Laden Sie Ihre Trainingsdaten hoch.
  4. Trainieren Sie Ihr neues benutzerdefiniertes Modell.
  5. Überprüfen Sie den Status Ihres benutzerdefinierten Modells.
  6. Stellen Sie das benutzerdefinierte Modell für die Verwendung bereit.
  7. Verwenden Sie Ihr benutzerdefiniertes Modell.
  8. Optional: Analysieren Sie Ihr benutzerdefiniertes Modell auf Leistung und Eignung.

Vorbereiten Ihrer Trainings- und Validierungsdaten

Ihre Trainings- und Validierungsdatasets bestehen aus Ein- und Ausgabebeispielen für das gewünschte Verhalten des Modells.

Für verschiedene Modelltypen ist ein anderes Format von Trainingsdaten erforderlich.

Die Trainings- und Validierungsdaten, die Sie verwenden, müssen als JSON Lines (JSONL)-Dokument formatiert werden. Für gpt-35-turbo-0613 muss das Optimierungs-Dataset im Konversationsformat formatiert werden, das von den Chatabschlussen API verwendet wird.

Wenn Sie eine schrittweise Anleitung zur Optimierung eines gpt-35-turbo-0613 wünschen, lesen Sie bitte das Azure OpenAI Optimierungslernprogramm

Beispieldateiformat

{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Is Xbox better than PlayStation?"}, {"role": "assistant", "content": "I apologize, but I cannot provide personal opinions. My primary job is to assist you with any issues related to your Xbox device. Do you have any Xbox-related issues that need addressing?"}]}
{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Can I play PC games on my Xbox?"}, {"role": "assistant", "content": "While Xbox consoles don't natively support PC games, they can play an array of Xbox games, many of which are also available on PC. Can I assist you with finding games compatible with your Xbox device?"}]}
{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "I'm having trouble connecting my Xbox to the Wi-Fi."}, {"role": "assistant", "content": "No worries, let's go through the network settings on your Xbox. Can you please tell me what happens when you try to connect it to the Wi-Fi?"}]}

Dateiformat für mehrteiligen Chat

Mehrteilige Unterhaltungen in einer einzigen Zeile Ihrer JSONL-Trainingsdatei werden ebenfalls unterstützt. Um die Feinabstimmung für bestimmte Assistentenmeldungen zu überspringen, fügen Sie das optionale weight-Schlüsselwertpaar hinzu. Derzeit kann weight auf 0 oder 1 festgelegt werden.

{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the capital of France?"}, {"role": "assistant", "content": "Paris", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Paris, as if everyone doesn't know that already.", "weight": 1}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who wrote 'Romeo and Juliet'?"}, {"role": "assistant", "content": "William Shakespeare", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Oh, just some guy named William Shakespeare. Ever heard of him?", "weight": 1}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "How far is the Moon from Earth?"}, {"role": "assistant", "content": "384,400 kilometers", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Around 384,400 kilometers. Give or take a few, like that really matters.", "weight": 1}]}

Zusätzlich zum JSONL-Format müssen Dateien mit Trainings- und Validierungsdaten in UTF-8 codiert sein und eine Bytereihenfolge-Marke (BOM) enthalten. Die Datei muss kleiner als 512 MB sein.

Erstellen von Trainings- und Validierungsdatasets

Je mehr Trainingsbeispiele Sie haben, desto besser. Für die Feinabstimmung sind mindestens 10 Trainingsbeispiele erforderlich, aber eine so geringe Anzahl reicht nicht aus, um die Reaktionen des Modells merklich zu beeinflussen. Es empfiehlt sich, Hunderte, wenn nicht Tausende von Trainingsbeispielen bereitzustellen, um erfolgreich zu sein.

Im Allgemeinen führt eine Verdoppelung der Datasetgröße zu einer linearen Erhöhung der Modellqualität. Bedenken Sie jedoch, dass Beispiele mit geringer Qualität die Leistung beeinträchtigen können. Wenn Sie das Modell mit vielen internen Daten trainieren, ohne zuvor das Dataset zu bereinigen, sodass es nur noch Beispiele mit höchster Qualität enthält, erhalten Sie möglicherweise ein Modell, das viel schlechter funktioniert als erwartet.

Hochladen Ihrer Trainingsdaten

Der nächste Schritt besteht darin, entweder vorhandene vorbereitete Trainingsdaten auszuwählen oder neue vorbereitete Trainingsdaten für die Verwendung beim Anpassen des Modells hochzuladen. Nachdem Sie Ihre Trainingsdaten vorbereitet haben, können Sie Ihre Dateien in den Dienst hochladen. Es gibt zwei Möglichkeiten zum Hochladen von Trainingsdaten:

Für große Datendateien wird der Import aus Azure Blob Storage empfohlen. Große Dateien können instabil werden, wenn sie über mehrteilige Formulare hochgeladen werden, da die Anforderungen atomar sind und nicht erneut ausgeführt oder fortgesetzt werden können. Weitere Informationen zu Azure Blob Storage finden Sie unter Was ist Azure Blob Storage?

Hinweis

Dateien mit Trainingsdaten müssen als JSONL-Dateien formatiert und in UTF-8 mit BOM (Bytereihenfolge-Marke) codiert groß sein. Die Datei muss kleiner als 512 MB sein.

Das folgende Python-Beispiel lädt mit Hilfe des Python SDK lokale Trainings- und Validierungsdateien hoch und ruft die zurückgegebenen Datei-IDs ab.

# Upload fine-tuning files

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-05-01-preview"  # This API version or later is required to access seed/events/checkpoint capabilities
)

training_file_name = 'training_set.jsonl'
validation_file_name = 'validation_set.jsonl'

# Upload the training and validation dataset files to Azure OpenAI with the SDK.

training_response = client.files.create(
    file=open(training_file_name, "rb"), purpose="fine-tune"
)
training_file_id = training_response.id

validation_response = client.files.create(
    file=open(validation_file_name, "rb"), purpose="fine-tune"
)
validation_file_id = validation_response.id

print("Training file ID:", training_file_id)
print("Validation file ID:", validation_file_id)

Erstellen eines angepassten Modells

Nachdem Sie Ihre Trainings- und Validierungsdateien hochgeladen haben, können Sie mit dem Optimierungsauftrag beginnen.

Der folgende Python-Code zeigt ein Beispiel für das Erstellen eines neuen Optimierungsauftrags mit dem Python SDK:

In diesem Beispiel übergeben wir auch den Seed-Parameter. Der Seed steuert die Reproduzierbarkeit des Auftrags. Die Übergabe der gleichen Seed- und Auftragsparameter sollte zu den gleichen Ergebnissen führen, kann sich aber in seltenen Fällen unterscheiden. Wenn Sie keinen Seed angeben, wird ein Seed für Sie generiert.

response = client.fine_tuning.jobs.create(
    training_file=training_file_id,
    validation_file=validation_file_id,
    model="gpt-35-turbo-0613", # Enter base model name. Note that in Azure OpenAI the model name contains dashes and cannot contain dot/period characters. 
    seed = 105  # seed parameter controls reproducibility of the fine-tuning job. If no seed is specified one will be generated automatically.
)

job_id = response.id

# You can use the job ID to monitor the status of the fine-tuning job.
# The fine-tuning job will take some time to start and complete.

print("Job ID:", response.id)
print("Status:", response.id)
print(response.model_dump_json(indent=2))

Sie können auch zusätzliche optionale Parameter wie Hyperparameter übergeben, um die Kontrolle über den Optimierungsprozess zu behalten. Für das Ersttraining empfehlen wir die Verwendung der automatischen Standardwerte, die vorhanden sind, ohne diese Parameter anzugeben.

Die aktuellen unterstützten Hyperparameter für die Optimierung sind:

Name Art Beschreibung
batch_size integer Die für das Training zu verwendende Batchgröße. Die Batchgröße ist die Anzahl der Trainingsbeispiele, die zum Trainieren eines einzelnen Vorwärts- und Rückwärtsdurchlaufs verwendet werden. Im Allgemeinen haben wir festgestellt, dass größere Batchgrößen für größere Datasets besser funktionieren. Der Standardwert sowie der Maximalwert für diese Eigenschaft sind spezifisch für ein Basismodell. Eine größere Batchgröße bedeutet, dass Modellparameter weniger häufig aktualisiert werden, aber mit geringerer Varianz.
learning_rate_multiplier Zahl Der Lernratenmultiplikator, der für das Training verwendet werden soll. Die Optimierungslernrate ist die ursprüngliche Lernrate, die für das Vorabtraining verwendet wird, mit diesem Wert multipliziert. Größere Lernraten sind tendenziell besser für größere Batchgrößen. Es empfiehlt sich, mit Werten im Bereich 0,02 bis 0,2 zu experimentieren, um zu sehen, was die besten Ergebnisse erzeugt. Eine kleinere Lernrate kann nützlich sein, um Überanpassung zu vermeiden.
n_epochs integer Die Anzahl der Epochen zum Trainieren des Modells. Eine Epoche bezeichnet einen vollständigen Zyklus über das Trainingsdataset.

So legen Sie benutzerdefinierte Hyperparameter mit der 1.x-Version der OpenAI Python-API fest:

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"  # This API version or later is required to access fine-tuning for turbo/babbage-002/davinci-002
)

client.fine_tuning.jobs.create(
  training_file="file-abc123", 
  model="gpt-35-turbo-0613", # Enter base model name. Note that in Azure OpenAI the model name contains dashes and cannot contain dot/period characters. 
  hyperparameters={
    "n_epochs":2
  }
)

Überprüfen des Optimierungsauftragsstatus

response = client.fine_tuning.jobs.retrieve(job_id)

print("Job ID:", response.id)
print("Status:", response.status)
print(response.model_dump_json(indent=2))

Auflisten von Feinabstimmungsereignissen

So untersuchen Sie die einzelnen Feinabstimmungsereignisse, die während des Trainings generiert wurden:

Möglicherweise müssen Sie Ihre OpenAI-Clientbibliothek mit pip install openai --upgrade auf die neueste Version aktualisieren, um diesen Befehl ausführen zu können.

response = client.fine_tuning.jobs.list_events(fine_tuning_job_id=job_id, limit=10)
print(response.model_dump_json(indent=2))

Prüfpunkte

Nach Abschluss jeder Trainingsepoche wird Prüfpunkt generiert. Ein Prüfpunkt ist eine voll funktionsfähige Version eines Modells, das sowohl bereitgestellt als auch als Zielmodell für nachfolgende Feinabstimmungsaufträge genutzt werden kann. Prüfpunkte können besonders nützlich sein, da sie eine Momentaufnahme Ihres Modells bereitstellen können, bevor eine Überanpassung auftritt. Wenn ein Feinabstimmungsauftrag abgeschlossen ist, stehen Ihnen die letzten drei Versionen des Modells zur Bereitstellung zur Verfügung. Die letzte Epoche wird durch Ihr fein abgestimmtes Modell dargestellt, die beiden vorherigen Epochen sind als Prüfpunkte verfügbar.

Sie können den Befehl zum Auflisten der Prüfpunkte ausführen, um die Liste der Prüfpunkte abzurufen, die einem einzelnen Feinabstimmungsauftrag zugeordnet sind:

Möglicherweise müssen Sie Ihre OpenAI-Clientbibliothek mit pip install openai --upgrade auf die neueste Version aktualisieren, um diesen Befehl ausführen zu können.

response = client.fine_tuning.jobs.list_events(fine_tuning_job_id=job_id, limit=10)
print(response.model_dump_json(indent=2))

Sicherheitsbewertung für die GPT-4-Feinabstimmung – Public Preview

GPT-4 ist unser fortschrittlichstes Modell, für das eine Feinabstimmung auf Ihre Bedürfnisse vorgenommen werden kann. Wie auch Azure OpenAI-Modelle allgemein bringen die erweiterten Funktionen fein abgestimmter Modelle zusätzliche Herausforderungen im Bereich verantwortungsvolle KI mit sich, die mit schädlichen Inhalten, Manipulation, menschenähnlichem Verhalten, Datenschutzproblemen und anderen Aspekten zusammenhängen. Weitere Informationen zu Risiken, Funktionen und Einschränkungen finden Sie in der Übersicht über verantwortungsvolle KI-Methoden und dem Transparenzhinweis. Um dazu beizutragen, die Risiken zu mindern, die Modelle mit GPT-4-Feinabstimmung mit sich bringen, haben wir zusätzliche Bewertungsschritte implementiert, die helfen, schädliche Inhalte beim Training und in Ausgaben von fein abgestimmten Modellen zu erkennen und zu verhindern. Diese Schritte basieren auf dem Microsoft Responsible AI Standard (Microsoft-Standard für verantwortungsvolle KI) und der Inhaltsfilterung von Azure OpenAI Service.

  • Bewertungen werden in dedizierten und kundenspezifischen privaten Arbeitsbereichen durchgeführt.
  • Die Bewertungsendpunkte befinden sich am selben geografischen Standort wie die Azure OpenAI-Ressource.
  • In Verbindung mit der Durchführung von Bewertungen werden keine Trainingsdaten gespeichert. Nur die finale Modellbewertung (bereitstellbar oder nicht bereitstellbar) wird persistent gespeichert.

Die Bewertungsfilter für Modelle mit GPT-4-Feinabstimmung sind auf voreingestellte Schwellenwerte festgelegt, die von Kunden nicht geändert werden können. Sie hängen nicht mit benutzerdefinierten Inhaltsfilterkonfigurationen zusammen, die Sie möglicherweise erstellt haben.

Bewertung von Daten

Vor Beginn des Trainings wird eine Bewertung Ihrer Daten hinsichtlich potenziell schädlicher Inhalte (Gewalt, sexuelle Inhalte, Hass, Fairness, Selbstverletzung – siehe Kategoriedefinitionen unter diesem Link) vorgenommen. Wenn schädliche Inhalte mit einem höheren Schweregrad als dem festgelegten erkannt werden, tritt bei Ihrem Trainingsauftrag ein Fehler auf, und es wird eine Benachrichtigung mit den Fehlerkategorien angezeigt.

Beispielbenachrichtigung:

The provided training data failed RAI checks for harm types: [hate_fairness, self_harm, violence]. Please fix the data and try again.

Ihre Trainingsdaten werden automatisch während des Datenimportauftrags im Rahmen der Bereitstellung der Feinabstimmungsfunktion bewertet.

Wenn während des Feinabstimmungsauftrags aufgrund der Erkennung schädlicher Inhalte in Trainingsdaten ein Fehler auftritt, wird Ihnen dieser Auftrag nicht in Rechnung gestellt.

Modellauswertung

Nach Abschluss des Trainings, aber bevor das fein abgestimmte Modell für die Bereitstellung verfügbar ist, wird das resultierende Modell mithilfe der integrierten Risiko- und Sicherheitsmetriken von Azure hinsichtlich potenziell schädlicher Antworten bewertet. Mit dem Testansatz, den wir auch für grundlegende große Sprachmodelle verwenden, simuliert unsere Bewertungsfunktion eine Unterhaltung mit Ihrem fein abgestimmten Modell, um die Wahrscheinlichkeit, dass schädliche Inhalte ausgegeben werden, zu bewerten. Hierbei werden ebenfalls festgelegte Kategorien schädlicher Inhalte (Gewalt, sexuelle Inhalte, Hass, Fairness und Selbstverletzung) verwendet.

Wenn festgestellt wird, dass ein Modell Ausgaben mit Inhalten generiert, die als schädlicher als ein akzeptabler Grad eingestuft werden, werden Sie darüber informiert, dass Ihr Modell nicht für die Bereitstellung verfügbar ist. Diese Benachrichtigung enthält außerdem Informationen zu den konkreten Kategorien schädlicher Inhalte, die erkannt wurden:

Beispielbenachrichtigung:

This model is unable to be deployed. Model evaluation identified that this fine tuned model scores above acceptable thresholds for [Violence, Self Harm]. Please review your training data set and resubmit the job.

Screenshot: Feinabstimmungsauftrag, bei dem aufgrund der Sicherheitsbewertung ein Fehler aufgetreten ist

Wie bei der Datenbewertung wird das Modell automatisch während des Feinabstimmungsauftrags im Rahmen der Bereitstellung der Feinabstimmungsfunktion bewertet. Nur die daraus resultierende Bewertung (bereitstellbar oder nicht bereitstellbar) wird vom Dienst protokolliert. Wenn bei der Bereitstellung des fein abgestimmten Modells aufgrund der Erkennung schädlicher Inhalte in Modellausgaben ein Fehler auftritt, wird Ihnen die Trainingsausführung nicht in Rechnung gestellt.

Bereitstellen eines optimierten Modells

Wenn der Optimierungsauftrag erfolgreich war, wird der Wert der fine_tuned_model-Variable im Antworttext auf den Namen Ihres benutzerdefinierten Modells festgelegt. Ihr Modell ist jetzt auch für die Ermittlung über die API zum Auflisten von Modellen verfügbar. Allerdings können Sie Vervollständigungsaufrufe an Ihr angepasstes Modell erst ausgeben, wenn Ihr angepasstes Modell bereitgestellt wurde. Sie müssen Ihr angepasstes Modell bereitstellen, um es für die Verwendung mit Vervollständigungsaufrufen verfügbar zu machen.

Wichtig

Bleibt die Bereitstellung eines angepassten Modells nach der Bereitstellung länger als fünfzehn (15) Tage inaktiv, wird die Bereitstellung gelöscht. Die Bereitstellung eines angepassten Modells ist inaktiv, wenn das Modell vor mehr als fünfzehn (15) Tagen bereitgestellt wurde und während eines ununterbrochenen Zeitraums von 15 Tagen keine Abschluss- oder Chatabschlussaufrufe an das Modell übermittelt wurden.

Durch das Löschen einer inaktiven Bereitstellung wird das zugrunde liegende angepasste Modell nicht gelöscht oder verändert. Das angepasste Modell kann jederzeit erneut bereitgestellt werden. Wie unter Preise für Azure OpenAI Service beschrieben, fallen für jedes benutzerdefinierte (optimierte) bereitgestellte Modell stündliche Hostingkosten an, unabhängig davon, ob das Modell für Vervollständigungs- oder Chatvervollständigungsaufrufe genutzt wird. Weitere Informationen zum Planen und Verwalten der Kosten mit Azure OpenAI finden Sie im Leitfaden unter Planen und Verwalten der Kosten für Azure OpenAI Service.

Sie können auch Azure OpenAI Studio oder die Azure CLI- verwenden, um Ihr angepasstes Modell bereitzustellen.

Hinweis

Für ein angepasstes Modell ist nur eine Bereitstellung zulässig. Wenn Sie ein bereits bereitgestelltes angepasstes Modell auswählen, tritt ein Fehler auf.

Im Gegensatz zu den vorherigen SDK-Befehlen muss die Bereitstellung über die API der Steuerungsebene erfolgen, die eine separate Autorisierung, einen anderen API-Pfad und eine andere API-Version erfordert.

-Variable Definition
token Es gibt mehrere Möglichkeiten, ein Autorisierungstoken zu generieren. Die einfachste Methode für anfängliche Tests besteht darin, Cloud Shell über das Azure-Portal zu starten. Führen Sie dann az account get-access-token aus. Sie können dieses Token als temporäres Autorisierungstoken für API-Tests verwenden. Wir empfehlen, es in einer neuen Umgebungsvariablen zu speichern
Abonnement Die Abonnement-ID für die zugeordnete Azure OpenAI-Ressource
resource_group Der Ressourcengruppenname für Ihre Azure OpenAI-Ressource
resource_name Der Name der Azure OpenAI-Ressource
model_deployment_name Der benutzerdefinierte Name für die Bereitstellung Ihres neuen optimierten Modells. Das ist der Name, auf den in Ihrem Code verwiesen wird, wenn Chatabschlussaufrufe ausgeführt werden.
fine_tuned_model Rufen Sie diesen Wert aus Ihrem Optimierungsauftrag aus dem vorherigen Schritt ab. Er sieht wie folgt aus: gpt-35-turbo-0613.ft-b044a9d3cf9c4228b5d393567f693b83. Dieser Wert muss dem JSON-Code „deploy_data“ hinzugefügt werden. Alternativ können Sie auch einen Prüfpunkt bereitstellen, indem Sie die Prüfpunkt-ID übergeben, die im Format ftchkpt-e559c011ecc04fc68eaa339d8227d02d angezeigt wird.
import json
import os
import requests

token= os.getenv("<TOKEN>") 
subscription = "<YOUR_SUBSCRIPTION_ID>"  
resource_group = "<YOUR_RESOURCE_GROUP_NAME>"
resource_name = "<YOUR_AZURE_OPENAI_RESOURCE_NAME>"
model_deployment_name ="gpt-35-turbo-ft" # custom deployment name that you will use to reference the model when making inference calls.

deploy_params = {'api-version': "2023-05-01"} 
deploy_headers = {'Authorization': 'Bearer {}'.format(token), 'Content-Type': 'application/json'}

deploy_data = {
    "sku": {"name": "standard", "capacity": 1}, 
    "properties": {
        "model": {
            "format": "OpenAI",
            "name": <"fine_tuned_model">, #retrieve this value from the previous call, it will look like gpt-35-turbo-0613.ft-b044a9d3cf9c4228b5d393567f693b83
            "version": "1"
        }
    }
}
deploy_data = json.dumps(deploy_data)

request_url = f'https://management.azure.com/subscriptions/{subscription}/resourceGroups/{resource_group}/providers/Microsoft.CognitiveServices/accounts/{resource_name}/deployments/{model_deployment_name}'

print('Creating a new deployment...')

r = requests.put(request_url, params=deploy_params, headers=deploy_headers, data=deploy_data)

print(r)
print(r.reason)
print(r.json())

Regionsübergreifende Bereitstellung

Die Optimierung unterstützt die Bereitstellung eines optimierten Modells in einer anderen Region als bei der ursprünglichen Optimierung des Modells. Sie können es auch für ein anderes Abonnement/eine andere Region bereitstellen.

Die einzigen Einschränkungen sind, dass die neue Region die Optimierung auch unterstützen muss und bei der abonnementübergreifenden Bereitstellung das Kontos, das das Autorisierungstoken für die Bereitstellung generiert, Zugriff auf die Quell- und Zielabonnements haben muss.

Nachfolgend finden Sie ein Beispiel für die Bereitstellung eines Modells, das von einem Abonnement/einer Region in ein/e andere/s optimiert wurde.

import json
import os
import requests

token= os.getenv("<TOKEN>") 

subscription = "<DESTINATION_SUBSCRIPTION_ID>"  
resource_group = "<DESTINATION_RESOURCE_GROUP_NAME>"
resource_name = "<DESTINATION_AZURE_OPENAI_RESOURCE_NAME>"

source_subscription = "<SOURCE_SUBSCRIPTION_ID>"
source_resource_group = "<SOURCE_RESOURCE_GROUP>"
source_resource = "<SOURCE_RESOURCE>"


source = f'/subscriptions/{source_subscription}/resourceGroups/{source_resource_group}/providers/Microsoft.CognitiveServices/accounts/{source_resource}'

model_deployment_name ="gpt-35-turbo-ft" # custom deployment name that you will use to reference the model when making inference calls.

deploy_params = {'api-version': "2023-05-01"} 
deploy_headers = {'Authorization': 'Bearer {}'.format(token), 'Content-Type': 'application/json'}



deploy_data = {
    "sku": {"name": "standard", "capacity": 1}, 
    "properties": {
        "model": {
            "format": "OpenAI",
            "name": <"FINE_TUNED_MODEL_NAME">, # This value will look like gpt-35-turbo-0613.ft-0ab3f80e4f2242929258fff45b56a9ce 
            "version": "1",
            "source": source
        }
    }
}
deploy_data = json.dumps(deploy_data)

request_url = f'https://management.azure.com/subscriptions/{subscription}/resourceGroups/{resource_group}/providers/Microsoft.CognitiveServices/accounts/{resource_name}/deployments/{model_deployment_name}'

print('Creating a new deployment...')

r = requests.put(request_url, params=deploy_params, headers=deploy_headers, data=deploy_data)

print(r)
print(r.reason)
print(r.json())

Um zwischen demselben Abonnement, aber unterschiedliche Regionen bereitzustellen, müssen Abonnement- und Ressourcengruppen für Quell- und Zielvariablen identisch, und nur die Namen der Quell- und Zielressourcen müssen eindeutig sein.

Bereitstellen eines Modells mit Azure CLI

Das folgende Beispiel zeigt, wie Sie die Azure-Befehlszeilenschnittstelle verwenden, um Ihr benutzerdefiniertes Modell bereitzustellen. Bei der Azure CLI müssen Sie einen Namen für die Bereitstellung Ihres angepassten Modells angeben. Weitere Informationen zur Verwendung der Azure CLI zum Bereitstellen angepasster Modelle finden Sie unter az cognitiveservices account deployment.

Zum Ausführen dieses Azure CLI-Befehls in einem Konsolenfenster müssen Sie die folgenden <Platzhalter> durch die entsprechenden Werte für Ihr benutzerdefiniertes Modell ersetzen:

Platzhalter Wert
<YOUR_AZURE_SUBSCRIPTION> Der Name oder die ID Ihres Azure-Abonnements
<YOUR_RESOURCE_GROUP> Name Ihrer Azure-Ressourcengruppe
<YOUR_RESOURCE_NAME> Der Name Ihrer Azure OpenAI-Ressource.
<YOUR_DEPLOYMENT_NAME> Der Name, den Sie für Ihre Modellimplementierung verwenden möchten.
<YOUR_FINE_TUNED_MODEL_ID> Der Name Ihres angepassten Modells.
az cognitiveservices account deployment create 
    --resource-group <YOUR_RESOURCE_GROUP>
    --name <YOUR_RESOURCE_NAME>  
    --deployment-name <YOUR_DEPLOYMENT_NAME>
    --model-name <YOUR_FINE_TUNED_MODEL_ID>
    --model-version "1" 
    --model-format OpenAI 
    --sku-capacity "1" 
    --sku-name "Standard"

Verwenden eines bereitgestellten angepassten Modells

Nachdem Ihr benutzerdefiniertes Modell bereitgestellt wurde, können Sie es wie jedes andere bereitgestellte Modell verwenden. Sie können Playground in Azure OpenAI Studio verwenden, um mit Ihrer neuen Bereitstellung zu experimentieren. Sie können damit fortfahren, die gleichen Parameter mit Ihrem benutzerdefinierten Modell zu verwenden, etwa für temperature und max_tokens, wie das auch mit anderen bereitgestellten Modellen möglich ist. Für optimierte babbage-002 und davinci-002 Modelle verwenden Sie den Abschluss-Playground und die Abschluss-API. Für optimierte gpt-35-turbo-0613 Modelle verwenden Sie den Chat-Playground und die Chatvervollständigungs-API.

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-35-turbo-ft", # model = "Custom deployment name you chose for your fine-tuning model"
    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)

Analysieren Ihres angepassten Modells

Azure OpenAI fügt eine Ergebnisdatei mit dem Namen results.csv an jeden Optimierungsauftrag an, nachdem dieser abgeschlossen wurde. Sie können die Ergebnisdatei verwenden, um die Trainings- und Validierungsleistung Ihres angepassten Modells zu analysieren. Die Datei-ID für die Ergebnisdatei wird für jedes angepasste Modell aufgelistet, und Sie können das Python SDK verwenden, um die Datei-ID abzurufen und die Ergebnisdatei für die Analyse herunterzuladen.

Im folgenden Python-Beispiel wird die Datei-ID der ersten Ergebnisdatei abgerufen, die an den Optimierungsauftrag für Ihr angepasstes Modell angefügt ist, und anschließend wird das Python SDK verwendet, um die Datei zur Analyse in Ihr Arbeitsverzeichnis herunterzuladen.

# Retrieve the file ID of the first result file from the fine-tuning job
# for the customized model.
response = client.fine_tuning.jobs.retrieve(job_id)
if response.status == 'succeeded':
    result_file_id = response.result_files[0]

retrieve = client.files.retrieve(result_file_id)

# Download the result file.
print(f'Downloading result file: {result_file_id}')

with open(retrieve.filename, "wb") as file:
    result = client.files.content(result_file_id).read()
    file.write(result)

Die Ergebnisdatei ist eine CSV-Datei, die eine Kopfzeile und eine Zeile für jeden Trainingsschritt enthält, der durch den Optimierungsauftrag ausgeführt wurde. Die Ergebnisdatei enthält die folgenden Spalten:

Spaltenname BESCHREIBUNG
step Die Anzahl der Trainingsschritte. Ein Trainingsschritt stellt einen einzelnen Durchgang, vorwärts und rückwärts, über einen Batch von Trainingsdaten dar.
train_loss Der Verlust für den Trainingsbatch.
train_mean_token_accuracy Der Prozentsatz der Token im Trainingsbatch, die vom Modell richtig vorhergesagt wurden
Wenn z. B. die Batchgröße auf 3 festgelegt ist und Ihre Daten [[1, 2], [0, 5], [4, 2]] Vervollständigungen enthalten, wird dieser Wert auf 0,83 (5 von 6) festgelegt, wenn das Modell [[1, 1], [0, 5], [4, 2]] vorhergesagt hat.
valid_loss Der Verlust für den Validierungsbatch.
validation_mean_token_accuracy Der Prozentsatz der Token im Validierungsbatch, die vom Modell richtig vorhergesagt wurden
Wenn z. B. die Batchgröße auf 3 festgelegt ist und Ihre Daten [[1, 2], [0, 5], [4, 2]] Vervollständigungen enthalten, wird dieser Wert auf 0,83 (5 von 6) festgelegt, wenn das Modell [[1, 1], [0, 5], [4, 2]] vorhergesagt hat.
full_valid_loss Der am Ende jeder Epoche berechnete Validierungsverlust. Wenn das Training gut verläuft, sollte der Verlust abnehmen.
full_valid_mean_token_accuracy Die gültige mittlere Tokengenauigkeit, die am Ende jeder Epoche berechnet wird. Wenn das Training gut verläuft, sollte die Tokengenauigkeit größer werden.

Sie können die Daten in Ihrer results.csv-Datei auch als Plots in Azure OpenAI Studio anzeigen. Wählen Sie den Link für Ihr trainiertes Modell aus, und es werden drei Diagramme angezeigt: Verlust, mittlere Tokengenauigkeit und Tokengenauigkeit. Wenn Sie Validierungsdaten bereitgestellt haben, werden beide Datasets auf demselben Plot angezeigt.

Achten Sie darauf, dass Ihr Verlust mit der Zeit abnimmt und Ihre Genauigkeit zunimmt. Wenn Sie eine Abweichung zwischen Ihren Trainings- und Validierungsdaten feststellen, kann dies auf eine Überanpassung hindeuten. Versuchen Sie, mit weniger Epochen oder einem kleineren Multiplikator der Lernrate zu trainieren.

Bereinigen Ihrer Bereitstellungen, optimierten Modelle und Trainingsdateien

Wenn Sie mit Ihrem angepassten Modell fertig sind, können Sie die Bereitstellung und das Modell löschen. Sie können gegebenenfalls außerdem die Trainings- und Validierungsdateien löschen, die Sie in den Dienst hochgeladen haben.

Löschen Ihrer Modellimplementierung

Wichtig

Bleibt die Bereitstellung eines angepassten Modells nach der Bereitstellung länger als fünfzehn (15) Tage inaktiv, wird die Bereitstellung gelöscht. Die Bereitstellung eines angepassten Modells ist inaktiv, wenn das Modell vor mehr als fünfzehn (15) Tagen bereitgestellt wurde und während eines ununterbrochenen Zeitraums von 15 Tagen keine Abschluss- oder Chatabschlussaufrufe an das Modell übermittelt wurden.

Durch das Löschen einer inaktiven Bereitstellung wird das zugrunde liegende angepasste Modell nicht gelöscht oder verändert. Das angepasste Modell kann jederzeit erneut bereitgestellt werden. Wie unter Preise für Azure OpenAI Service beschrieben, fallen für jedes benutzerdefinierte (optimierte) bereitgestellte Modell stündliche Hostingkosten an, unabhängig davon, ob das Modell für Vervollständigungs- oder Chatvervollständigungsaufrufe genutzt wird. Weitere Informationen zum Planen und Verwalten der Kosten mit Azure OpenAI finden Sie im Leitfaden unter Planen und Verwalten der Kosten für Azure OpenAI Service.

Sie können verschiedene Methoden verwenden, um die Bereitstellung für Ihr angepasstes Modell zu löschen:

Löschen Ihres angepassten Modells

Analog dazu können Sie verschiedene Methoden verwenden, um Ihr angepasstes Modell zu löschen:

Hinweis

Sie können kein benutzerdefiniertes Modell löschen, für das eine Bereitstellung vorhanden ist. Zuerst müssen Sie die Modellimplementierung löschen, bevor Sie Ihr angepasstes Modell löschen können.

Löschen Ihrer Trainingsdateien

Sie können optional Trainings- und Validierungsdateien, die Sie zum Trainieren hochgeladen haben, und Ergebnisdateien, die während des Trainings generiert wurden, aus Ihrem Azure OpenAI-Abonnement löschen. Sie können die folgenden Methoden verwenden, um Ihre Trainings-, Validierungs- und Ergebnisdateien zu löschen:

Im folgenden Python-Beispiel wird das Python SDK verwendet, um die Trainings-, Validierungs- und Ergebnisdateien für Ihr benutzerdefiniertes Modell zu löschen:

print('Checking for existing uploaded files.')
results = []

# Get the complete list of uploaded files in our subscription.
files = openai.File.list().data
print(f'Found {len(files)} total uploaded files in the subscription.')

# Enumerate all uploaded files, extracting the file IDs for the
# files with file names that match your training dataset file and
# validation dataset file names.
for item in files:
    if item["filename"] in [training_file_name, validation_file_name, result_file_name]:
        results.append(item["id"])
print(f'Found {len(results)} already uploaded files that match our files')

# Enumerate the file IDs for our files and delete each file.
print(f'Deleting already uploaded files.')
for id in results:
    openai.File.delete(sid = id)

Kontinuierliche Optimierung

Nachdem Sie ein optimiertes Modell erstellt haben, können Sie das Modell im Laufe der Zeit durch weitere Optimierungen verfeinern. Kontinuierliche Optimierung ist der iterative Prozess, bei dem ein bereits optimiertes Modell als Basismodell ausgewählt und anhand neuer Sätze von Trainingsbeispielen weiter verfeinert wird.

Wenn Sie eine Optimierung für ein Modell durchführen möchten, das Sie bereits optimiert haben, verwenden Sie den gleichen Prozess wie unter Erstellen eines angepassten Modells beschrieben, anstatt jedoch den Namen eines generischen Basismodells anzugeben, geben Sie die ID Ihres bereits abgestimmten Modells an. Die ID des optimierten Modells sieht wie folgt aus: gpt-35-turbo-0613.ft-5fd1918ee65d4cd38a5dcf6835066ed7

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.fine_tuning.jobs.create(
    training_file=training_file_id,
    validation_file=validation_file_id,
    model="gpt-35-turbo-0613.ft-5fd1918ee65d4cd38a5dcf6835066ed7" # Enter base model name. Note that in Azure OpenAI the model name contains dashes and cannot contain dot/period characters. 
)

job_id = response.id

# You can use the job ID to monitor the status of the fine-tuning job.
# The fine-tuning job will take some time to start and complete.

print("Job ID:", response.id)
print("Status:", response.id)
print(response.model_dump_json(indent=2))

Außerdem wird empfohlen, den suffix-Parameter einzuschließen, um die Unterscheidung zwischen verschiedenen Iterationen Ihres optimierten Modells zu vereinfachen. suffix verwendet eine Zeichenfolge und wird so festgelegt, dass das optimierte Modell identifiziert wird. Mit der OpenAI Python-API wird eine Zeichenfolge von bis zu 18 Zeichen unterstützt, die Ihrem optimierten Modellnamen hinzugefügt wird.

Wenn Sie sich nicht sicher sind, welche ID Ihr vorhandenes optimiertes Modell hat, finden Sie diese Informationen auf der Seite Modelle von Azure OpenAI Studio, oder Sie können eine Liste der Modelle für eine bestimmte Azure OpenAI-Ressource mithilfe der REST-API generieren.

Voraussetzungen

Hinweis

Derzeit müssen Sie eine Anwendung einreichen, um auf Azure OpenAI Service zuzugreifen. Um Zugriff zu beantragen, füllen Sie dieses Formular aus.

Modelle

Die folgenden Modelle unterstützen die Optimierung:

  • babbage-002
  • davinci-002
  • gpt-35-turbo (0613)
  • gpt-35-turbo (1106)
  • gpt-35-turbo (0125)
  • gpt-4 (0613)

Schauen Sie sich die Modellseite an, um zu überprüfen, welche Regionen derzeit Optimierung unterstützen.

Wenn Sie planen, gpt-4 für die Feinabstimmung zu verwenden, lesen Sie den Leitfaden zur Sicherheitsbewertung für die Public Preview von GPT-4.

Überprüfen des Workflows für die REST-API

Nehmen Sie sich einen Moment Zeit, um den Optimierungsworkflow für die Verwendung von REST-APIs und Python mit Azure OpenAI zu überprüfen:

  1. Bereiten Sie Ihre Trainings- und Validierungsdaten vor.
  2. Wählen Sie ein Basismodell aus.
  3. Laden Sie Ihre Trainingsdaten hoch.
  4. Trainieren Sie Ihr neues benutzerdefiniertes Modell.
  5. Überprüfen Sie den Status Ihres benutzerdefinierten Modells.
  6. Stellen Sie das benutzerdefinierte Modell für die Verwendung bereit.
  7. Verwenden Sie Ihr benutzerdefiniertes Modell.
  8. Optional: Analysieren Sie Ihr benutzerdefiniertes Modell auf Leistung und Eignung.

Vorbereiten Ihrer Trainings- und Validierungsdaten

Ihre Trainings- und Validierungsdatasets bestehen aus Ein- und Ausgabebeispielen für das gewünschte Verhalten des Modells.

Für verschiedene Modelltypen ist ein anderes Format von Trainingsdaten erforderlich.

Die Trainings- und Validierungsdaten, die Sie verwenden, müssen als JSON Lines (JSONL)-Dokument formatiert werden. Für gpt-35-turbo-0613 und andere verwandte Modelle muss das Optimierungs-Dataset im Konversationsformat formatiert werden, das von der Chatabschluss-API verwendet wird.

Wenn Sie eine schrittweise Anleitung zur Feinabstimmung eines gpt-35-turbo-0613 wünschen, lesen Sie das Tutorial zur Feinabstimmung von Azure OpenAI

Beispieldateiformat

{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Is Xbox better than PlayStation?"}, {"role": "assistant", "content": "I apologize, but I cannot provide personal opinions. My primary job is to assist you with any issues related to your Xbox device. Do you have any Xbox-related issues that need addressing?"}]}
{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Can I play PC games on my Xbox?"}, {"role": "assistant", "content": "While Xbox consoles don't natively support PC games, they can play an array of Xbox games, many of which are also available on PC. Can I assist you with finding games compatible with your Xbox device?"}]}
{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "I'm having trouble connecting my Xbox to the Wi-Fi."}, {"role": "assistant", "content": "No worries, let's go through the network settings on your Xbox. Can you please tell me what happens when you try to connect it to the Wi-Fi?"}]}

Dateiformat für mehrteiligen Chat

Mehrteilige Unterhaltungen in einer einzigen Zeile Ihrer JSONL-Trainingsdatei werden ebenfalls unterstützt. Um die Feinabstimmung für bestimmte Assistentenmeldungen zu überspringen, fügen Sie das optionale weight-Schlüsselwertpaar hinzu. Derzeit kann weight auf 0 oder 1 festgelegt werden.

{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the capital of France?"}, {"role": "assistant", "content": "Paris", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Paris, as if everyone doesn't know that already.", "weight": 1}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who wrote 'Romeo and Juliet'?"}, {"role": "assistant", "content": "William Shakespeare", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Oh, just some guy named William Shakespeare. Ever heard of him?", "weight": 1}]}
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "How far is the Moon from Earth?"}, {"role": "assistant", "content": "384,400 kilometers", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Around 384,400 kilometers. Give or take a few, like that really matters.", "weight": 1}]}

Zusätzlich zum JSONL-Format müssen Dateien mit Trainings- und Validierungsdaten in UTF-8 codiert sein und eine Bytereihenfolge-Marke (BOM) enthalten. Die Datei muss kleiner als 512 MB sein.

Erstellen von Trainings- und Validierungsdatasets

Je mehr Trainingsbeispiele Sie haben, desto besser. Für die Feinabstimmung sind mindestens 10 Trainingsbeispiele erforderlich, aber eine so geringe Anzahl reicht nicht aus, um die Reaktionen des Modells merklich zu beeinflussen. Es empfiehlt sich, Hunderte, wenn nicht Tausende von Trainingsbeispielen bereitzustellen, um erfolgreich zu sein.

Im Allgemeinen führt eine Verdoppelung der Datasetgröße zu einer linearen Erhöhung der Modellqualität. Bedenken Sie jedoch, dass Beispiele mit geringer Qualität die Leistung beeinträchtigen können. Wenn Sie das Modell mit vielen internen Daten trainieren, ohne zuvor das Dataset zu bereinigen, sodass es nur noch Beispiele mit höchster Qualität enthält, erhalten Sie möglicherweise ein Modell, das viel schlechter funktioniert als erwartet.

Auswählen des Basismodells

Der erste Schritt beim Erstellen eines benutzerdefinierten Modells besteht in der Auswahl eines Basismodells. Im Bereich Basismodell können Sie ein Basismodell auswählen, das für Ihr benutzerdefiniertes Modell verwendet werden soll. Ihre Auswahl hat sowohl auf die Leistung als auch auf die Kosten Ihres Modells Einfluss.

Wählen Sie das Basismodell in der Dropdownliste Basismodelltyp und dann Weiter aus, um fortzufahren.

Sie können ein benutzerdefiniertes Modell aus einem der folgenden verfügbaren Basismodelle erstellen:

  • babbage-002
  • davinci-002
  • gpt-35-turbo (0613)
  • gpt-35-turbo (1106)
  • gpt-35-turbo (0125)
  • gpt-4 (0613)

Oder Sie können ein zuvor feinabgestimmtes Modell optimieren, das als „base-model.ft-{jobid}“ formatiert ist.

Screenshot der Modelloptionen mit einem benutzerdefinierten fein abgestimmten Modell.

Weitere Informationen zu unseren verfeinerbaren Basismodellen finden Sie unter Modelle.

Hochladen Ihrer Trainingsdaten

Der nächste Schritt besteht darin, entweder vorhandene vorbereitete Trainingsdaten auszuwählen oder neue vorbereitete Trainingsdaten für die Verwendung beim Optimieren des Modells hochzuladen. Nachdem Sie Ihre Trainingsdaten vorbereitet haben, können Sie Ihre Dateien in den Dienst hochladen. Es gibt zwei Möglichkeiten zum Hochladen von Trainingsdaten:

Für große Datendateien wird der Import aus Azure Blob Storage empfohlen. Große Dateien können instabil werden, wenn sie über mehrteilige Formulare hochgeladen werden, da die Anforderungen atomar sind und nicht erneut ausgeführt oder fortgesetzt werden können. Weitere Informationen zu Azure Blob Storage finden Sie unter Was ist Azure Blob Storage?

Hinweis

Dateien mit Trainingsdaten müssen als JSONL-Dateien formatiert und in UTF-8 mit BOM (Bytereihenfolge-Marke) codiert groß sein. Die Datei muss kleiner als 512 MB sein.

Hochladen von Trainingsdaten

curl -X POST $AZURE_OPENAI_ENDPOINT/openai/files?api-version=2023-12-01-preview \
  -H "Content-Type: multipart/form-data" \
  -H "api-key: $AZURE_OPENAI_API_KEY" \
  -F "purpose=fine-tune" \
  -F "file=@C:\\fine-tuning\\training_set.jsonl;type=application/json"

Hochladen von Validierungsdaten

curl -X POST $AZURE_OPENAI_ENDPOINT/openai/files?api-version=2023-12-01-preview \
  -H "Content-Type: multipart/form-data" \
  -H "api-key: $AZURE_OPENAI_API_KEY" \
  -F "purpose=fine-tune" \
  -F "file=@C:\\fine-tuning\\validation_set.jsonl;type=application/json"

Erstellen eines angepassten Modells

Nachdem Sie Ihre Trainings- und Validierungsdateien hochgeladen haben, können Sie mit dem Optimierungsauftrag beginnen. Der folgende Code zeigt ein Beispiel für das Erstellen eines neuen Feinabstimmungsauftrags mit der REST API.

In diesem Beispiel übergeben wir auch den Seed-Parameter. Der Seed steuert die Reproduzierbarkeit des Auftrags. Die Übergabe der gleichen Seed- und Auftragsparameter sollte zu den gleichen Ergebnissen führen, kann aber in seltenen Fällen abweichen. Wenn Sie keinen Seed angeben, wird einer für Sie generiert.

curl -X POST $AZURE_OPENAI_ENDPOINT/openai/fine_tuning/jobs?api-version=2024-05-01-preview \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_OPENAI_API_KEY" \
  -d '{
    "model": "gpt-35-turbo-0613", 
    "training_file": "<TRAINING_FILE_ID>", 
    "validation_file": "<VALIDATION_FILE_ID>",
    "seed": 105
}'

Sie können auch zusätzliche optionale Parameter wie Hyperparameter übergeben, um die Kontrolle über den Optimierungsprozess zu behalten. Für das Ersttraining empfehlen wir die Verwendung der automatischen Standardwerte, die vorhanden sind, ohne diese Parameter anzugeben.

Die aktuellen unterstützten Hyperparameter für die Optimierung sind:

Name Art Beschreibung
batch_size integer Die für das Training zu verwendende Batchgröße. Die Batchgröße ist die Anzahl der Trainingsbeispiele, die zum Trainieren eines einzelnen Vorwärts- und Rückwärtsdurchlaufs verwendet werden. Im Allgemeinen haben wir festgestellt, dass größere Batchgrößen für größere Datasets besser funktionieren. Der Standardwert sowie der Maximalwert für diese Eigenschaft sind spezifisch für ein Basismodell. Eine größere Batchgröße bedeutet, dass Modellparameter weniger häufig aktualisiert werden, aber mit geringerer Varianz.
learning_rate_multiplier Zahl Der Lernratenmultiplikator, der für das Training verwendet werden soll. Die Optimierungslernrate ist die ursprüngliche Lernrate, die für das Vorabtraining verwendet wird, mit diesem Wert multipliziert. Größere Lernraten sind tendenziell besser für größere Batchgrößen. Es empfiehlt sich, mit Werten im Bereich 0,02 bis 0,2 zu experimentieren, um zu sehen, was die besten Ergebnisse erzeugt. Eine kleinere Lernrate kann nützlich sein, um Überanpassung zu vermeiden.
n_epochs integer Die Anzahl der Epochen zum Trainieren des Modells. Eine Epoche bezeichnet einen vollständigen Zyklus über das Trainingsdataset.

Überprüfen des Status Ihres angepassten Modells

Ein Optimierungsauftrag benötigt nach dem Start möglicherweise einige Zeit bis zum Abschluss. Ihr Auftrag befindet sich möglicherweise in der Warteschlange hinter anderen Aufträgen im System. Das Trainieren Ihres Modells kann je nach Größe von Modell und Dataset Minuten oder Stunden dauern. Im folgenden Beispiel wird die REST-API verwendet, um den Status Ihres Optimierungsauftrags zu überprüfen. Im Beispiel werden Informationen zu Ihrem Auftrag mithilfe der Auftrags-ID abgerufen, die im vorherigen Beispiel zurückgegeben wurde:

curl -X GET $AZURE_OPENAI_ENDPOINT/openai/fine_tuning/jobs/<YOUR-JOB-ID>?api-version=2024-05-01-preview \
  -H "api-key: $AZURE_OPENAI_API_KEY"

Auflisten von Feinabstimmungsereignissen

So untersuchen Sie die einzelnen Feinabstimmungsereignisse, die während des Trainings generiert wurden:

curl -X POST $AZURE_OPENAI_ENDPOINT/openai/fine_tuning/jobs/{fine_tuning_job_id}/events?api-version=2024-05-01-preview \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_OPENAI_API_KEY" 

Prüfpunkte

Nach Abschluss jeder Trainingsepoche wird Prüfpunkt generiert. Ein Prüfpunkt ist eine voll funktionsfähige Version eines Modells, das sowohl bereitgestellt als auch als Zielmodell für nachfolgende Feinabstimmungsaufträge genutzt werden kann. Prüfpunkte können besonders nützlich sein, da sie eine Momentaufnahme Ihres Modells bereitstellen können, bevor eine Überanpassung auftritt. Wenn ein Feinabstimmungsauftrag abgeschlossen ist, stehen Ihnen die letzten drei Versionen des Modells zur Bereitstellung zur Verfügung. Die letzte Epoche wird durch Ihr fein abgestimmtes Modell dargestellt, die beiden vorherigen Epochen sind als Prüfpunkte verfügbar.

Sie können den Befehl zum Auflisten der Prüfpunkte ausführen, um die Liste der Prüfpunkte abzurufen, die einem einzelnen Feinabstimmungsauftrag zugeordnet sind:

curl -X POST $AZURE_OPENAI_ENDPOINT/openai/fine_tuning/jobs/{fine_tuning_job_id}/checkpoints?api-version=2024-05-01-preview \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_OPENAI_API_KEY" 

Sicherheitsbewertung für die GPT-4-Feinabstimmung – Public Preview

GPT-4 ist unser fortschrittlichstes Modell, für das eine Feinabstimmung auf Ihre Bedürfnisse vorgenommen werden kann. Wie auch Azure OpenAI-Modelle allgemein bringen die erweiterten Funktionen fein abgestimmter Modelle zusätzliche Herausforderungen im Bereich verantwortungsvolle KI mit sich, die mit schädlichen Inhalten, Manipulation, menschenähnlichem Verhalten, Datenschutzproblemen und anderen Aspekten zusammenhängen. Weitere Informationen zu Risiken, Funktionen und Einschränkungen finden Sie in der Übersicht über verantwortungsvolle KI-Methoden und dem Transparenzhinweis. Um dazu beizutragen, die Risiken zu mindern, die Modelle mit GPT-4-Feinabstimmung mit sich bringen, haben wir zusätzliche Bewertungsschritte implementiert, die helfen, schädliche Inhalte beim Training und in Ausgaben von fein abgestimmten Modellen zu erkennen und zu verhindern. Diese Schritte basieren auf dem Microsoft Responsible AI Standard (Microsoft-Standard für verantwortungsvolle KI) und der Inhaltsfilterung von Azure OpenAI Service.

  • Bewertungen werden in dedizierten und kundenspezifischen privaten Arbeitsbereichen durchgeführt.
  • Die Bewertungsendpunkte befinden sich am selben geografischen Standort wie die Azure OpenAI-Ressource.
  • In Verbindung mit der Durchführung von Bewertungen werden keine Trainingsdaten gespeichert. Nur die finale Modellbewertung (bereitstellbar oder nicht bereitstellbar) wird persistent gespeichert.

Die Bewertungsfilter für Modelle mit GPT-4-Feinabstimmung sind auf voreingestellte Schwellenwerte festgelegt, die von Kunden nicht geändert werden können. Sie hängen nicht mit benutzerdefinierten Inhaltsfilterkonfigurationen zusammen, die Sie möglicherweise erstellt haben.

Bewertung von Daten

Vor Beginn des Trainings wird eine Bewertung Ihrer Daten hinsichtlich potenziell schädlicher Inhalte (Gewalt, sexuelle Inhalte, Hass, Fairness, Selbstverletzung – siehe Kategoriedefinitionen unter diesem Link) vorgenommen. Wenn schädliche Inhalte mit einem höheren Schweregrad als dem festgelegten erkannt werden, tritt bei Ihrem Trainingsauftrag ein Fehler auf, und es wird eine Benachrichtigung mit den Fehlerkategorien angezeigt.

Beispielbenachrichtigung:

The provided training data failed RAI checks for harm types: [hate_fairness, self_harm, violence]. Please fix the data and try again.

Ihre Trainingsdaten werden automatisch während des Datenimportauftrags im Rahmen der Bereitstellung der Feinabstimmungsfunktion bewertet.

Wenn während des Feinabstimmungsauftrags aufgrund der Erkennung schädlicher Inhalte in Trainingsdaten ein Fehler auftritt, wird Ihnen dieser Auftrag nicht in Rechnung gestellt.

Modellauswertung

Nach Abschluss des Trainings, aber bevor das fein abgestimmte Modell für die Bereitstellung verfügbar ist, wird das resultierende Modell mithilfe der integrierten Risiko- und Sicherheitsmetriken von Azure hinsichtlich potenziell schädlicher Antworten bewertet. Mit dem Testansatz, den wir auch für grundlegende große Sprachmodelle verwenden, simuliert unsere Bewertungsfunktion eine Unterhaltung mit Ihrem fein abgestimmten Modell, um die Wahrscheinlichkeit, dass schädliche Inhalte ausgegeben werden, zu bewerten. Hierbei werden ebenfalls festgelegte Kategorien schädlicher Inhalte (Gewalt, sexuelle Inhalte, Hass, Fairness und Selbstverletzung) verwendet.

Wenn festgestellt wird, dass ein Modell Ausgaben mit Inhalten generiert, die als schädlicher als ein akzeptabler Grad eingestuft werden, werden Sie darüber informiert, dass Ihr Modell nicht für die Bereitstellung verfügbar ist. Diese Benachrichtigung enthält außerdem Informationen zu den konkreten Kategorien schädlicher Inhalte, die erkannt wurden:

Beispielbenachrichtigung:

This model is unable to be deployed. Model evaluation identified that this fine tuned model scores above acceptable thresholds for [Violence, Self Harm]. Please review your training data set and resubmit the job.

Screenshot: Feinabstimmungsauftrag, bei dem aufgrund der Sicherheitsbewertung ein Fehler aufgetreten ist

Wie bei der Datenbewertung wird das Modell automatisch während des Feinabstimmungsauftrags im Rahmen der Bereitstellung der Feinabstimmungsfunktion bewertet. Nur die daraus resultierende Bewertung (bereitstellbar oder nicht bereitstellbar) wird vom Dienst protokolliert. Wenn bei der Bereitstellung des fein abgestimmten Modells aufgrund der Erkennung schädlicher Inhalte in Modellausgaben ein Fehler auftritt, wird Ihnen die Trainingsausführung nicht in Rechnung gestellt.

Bereitstellen eines optimierten Modells

Wichtig

Bleibt die Bereitstellung eines angepassten Modells nach der Bereitstellung länger als fünfzehn (15) Tage inaktiv, wird die Bereitstellung gelöscht. Die Bereitstellung eines angepassten Modells ist inaktiv, wenn das Modell vor mehr als fünfzehn (15) Tagen bereitgestellt wurde und während eines ununterbrochenen Zeitraums von 15 Tagen keine Abschluss- oder Chatabschlussaufrufe an das Modell übermittelt wurden.

Durch das Löschen einer inaktiven Bereitstellung wird das zugrunde liegende angepasste Modell nicht gelöscht oder verändert. Das angepasste Modell kann jederzeit erneut bereitgestellt werden. Wie unter Preise für Azure OpenAI Service beschrieben, fallen für jedes benutzerdefinierte (optimierte) bereitgestellte Modell stündliche Hostingkosten an, unabhängig davon, ob das Modell für Vervollständigungs- oder Chatvervollständigungsaufrufe genutzt wird. Weitere Informationen zum Planen und Verwalten der Kosten mit Azure OpenAI finden Sie im Leitfaden unter Planen und Verwalten der Kosten für Azure OpenAI Service.

Das folgende Python-Beispiel zeigt, wie Sie die REST-API verwenden, um eine Modellimplementierung für Ihr angepasstes Modell zu erstellen. Die REST-API generiert einen Namen für die Bereitstellung Ihres angepassten Modells.

-Variable Definition
token Es gibt mehrere Möglichkeiten, ein Autorisierungstoken zu generieren. Die einfachste Methode für anfängliche Tests besteht darin, Cloud Shell über das Azure-Portal zu starten. Führen Sie dann az account get-access-token aus. Sie können dieses Token als temporäres Autorisierungstoken für API-Tests verwenden. Wir empfehlen, es in einer neuen Umgebungsvariablen zu speichern
Abonnement Die Abonnement-ID für die zugeordnete Azure OpenAI-Ressource
resource_group Der Ressourcengruppenname für Ihre Azure OpenAI-Ressource
resource_name Der Name der Azure OpenAI-Ressource
model_deployment_name Der benutzerdefinierte Name für die Bereitstellung Ihres neuen optimierten Modells. Das ist der Name, auf den in Ihrem Code verwiesen wird, wenn Chatabschlussaufrufe ausgeführt werden.
fine_tuned_model Rufen Sie diesen Wert aus Ihrem Optimierungsauftrag aus dem vorherigen Schritt ab. Er sieht wie folgt aus: gpt-35-turbo-0613.ft-b044a9d3cf9c4228b5d393567f693b83. Dieser Wert muss dem JSON-Code „deploy_data“ hinzugefügt werden. Alternativ können Sie auch einen Prüfpunkt bereitstellen, indem Sie die Prüfpunkt-ID übergeben, die im Format ftchkpt-e559c011ecc04fc68eaa339d8227d02d angezeigt wird.
curl -X POST "https://management.azure.com/subscriptions/<SUBSCRIPTION>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.CognitiveServices/accounts/<RESOURCE_NAME>/deployments/<MODEL_DEPLOYMENT_NAME>api-version=2023-05-01" \
  -H "Authorization: Bearer <TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{
    "sku": {"name": "standard", "capacity": 1},
    "properties": {
        "model": {
            "format": "OpenAI",
            "name": "<FINE_TUNED_MODEL>",
            "version": "1"
        }
    }
}'

Regionsübergreifende Bereitstellung

Die Optimierung unterstützt die Bereitstellung eines optimierten Modells in einer anderen Region als bei der ursprünglichen Optimierung des Modells. Sie können es auch für ein anderes Abonnement/eine andere Region bereitstellen.

Die einzigen Einschränkungen sind, dass die neue Region die Optimierung auch unterstützen muss und bei der abonnementübergreifenden Bereitstellung das Kontos, das das Autorisierungstoken für die Bereitstellung generiert, Zugriff auf die Quell- und Zielabonnements haben muss.

Nachfolgend finden Sie ein Beispiel für die Bereitstellung eines Modells, das von einem Abonnement/einer Region in ein/e andere/s optimiert wurde.

curl -X PUT "https://management.azure.com/subscriptions/<SUBSCRIPTION>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.CognitiveServices/accounts/<RESOURCE_NAME>/deployments/<MODEL_DEPLOYMENT_NAME>api-version=2023-05-01" \
  -H "Authorization: Bearer <TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{
    "sku": {"name": "standard", "capacity": 1},
    "properties": {
        "model": {
            "format": "OpenAI",
            "name": "<FINE_TUNED_MODEL>", 
            "version": "1",
            "source": "/subscriptions/{sourceSubscriptionID}/resourceGroups/{sourceResourceGroupName}/providers/Microsoft.CognitiveServices/accounts/{sourceAccount}" 
        }
    }
}'

Um zwischen demselben Abonnement, aber unterschiedliche Regionen bereitzustellen, müssen Abonnement- und Ressourcengruppen für Quell- und Zielvariablen identisch, und nur die Namen der Quell- und Zielressourcen müssen eindeutig sein.

Bereitstellen eines Modells mit Azure CLI

Das folgende Beispiel zeigt, wie Sie die Azure-Befehlszeilenschnittstelle verwenden, um Ihr benutzerdefiniertes Modell bereitzustellen. Bei der Azure CLI müssen Sie einen Namen für die Bereitstellung Ihres angepassten Modells angeben. Weitere Informationen zur Verwendung der Azure CLI zum Bereitstellen angepasster Modelle finden Sie unter az cognitiveservices account deployment.

Zum Ausführen dieses Azure CLI-Befehls in einem Konsolenfenster müssen Sie die folgenden <Platzhalter> durch die entsprechenden Werte für Ihr benutzerdefiniertes Modell ersetzen:

Platzhalter Wert
<YOUR_AZURE_SUBSCRIPTION> Der Name oder die ID Ihres Azure-Abonnements
<YOUR_RESOURCE_GROUP> Name Ihrer Azure-Ressourcengruppe
<YOUR_RESOURCE_NAME> Der Name Ihrer Azure OpenAI-Ressource.
<YOUR_DEPLOYMENT_NAME> Der Name, den Sie für Ihre Modellimplementierung verwenden möchten.
<YOUR_FINE_TUNED_MODEL_ID> Der Name Ihres angepassten Modells.
az cognitiveservices account deployment create 
    --resource-group <YOUR_RESOURCE_GROUP>
    --name <YOUR_RESOURCE_NAME>  
    --deployment-name <YOUR_DEPLOYMENT_NAME>
    --model-name <YOUR_FINE_TUNED_MODEL_ID>
    --model-version "1" 
    --model-format OpenAI 
    --sku-capacity "1" 
    --sku-name "Standard"

Verwenden eines bereitgestellten angepassten Modells

Nachdem Ihr benutzerdefiniertes Modell bereitgestellt wurde, können Sie es wie jedes andere bereitgestellte Modell verwenden. Sie können Playground in Azure OpenAI Studio verwenden, um mit Ihrer neuen Bereitstellung zu experimentieren. Sie können damit fortfahren, die gleichen Parameter mit Ihrem benutzerdefinierten Modell zu verwenden, etwa für temperature und max_tokens, wie das auch mit anderen bereitgestellten Modellen möglich ist. Für optimierte babbage-002- und davinci-002-Modelle verwenden Sie den Abschluss-Playground und die Abschluss-API. Für optimierte gpt-35-turbo-0613-Modelle verwenden Sie den Chat-Playground und die Chatvervollständigungs-API.

curl $AZURE_OPENAI_ENDPOINT/openai/deployments/<deployment_name>/chat/completions?api-version=2023-05-15 \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_OPENAI_API_KEY" \
  -d '{"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?"}]}'

Analysieren Ihres angepassten Modells

Azure OpenAI fügt eine Ergebnisdatei mit dem Namen results.csv an jeden Optimierungsauftrag an, nachdem dieser abgeschlossen wurde. Sie können die Ergebnisdatei verwenden, um die Trainings- und Validierungsleistung Ihres angepassten Modells zu analysieren. Die Datei-ID für die Ergebnisdatei wird für jedes angepasste Modell aufgelistet, und Sie können die REST-API verwenden, um die Datei-ID abzurufen und die Ergebnisdatei für die Analyse herunterzuladen.

Im folgenden Python-Beispiel wird die REST-API verwendet, um die Datei-ID der ersten Ergebnisdatei abzurufen, die an den Optimierungsauftrag für Ihr angepasstes Modell angefügt ist, und anschließend wird die Datei zur Analyse in Ihr Arbeitsverzeichnis heruntergeladen.

curl -X GET "$AZURE_OPENAI_ENDPOINT/openai/fine_tuning/jobs/<JOB_ID>?api-version=2023-12-01-preview" \
  -H "api-key: $AZURE_OPENAI_API_KEY")
curl -X GET "$AZURE_OPENAI_ENDPOINT/openai/files/<RESULT_FILE_ID>/content?api-version=2023-12-01-preview" \
    -H "api-key: $AZURE_OPENAI_API_KEY" > <RESULT_FILENAME>

Die Ergebnisdatei ist eine CSV-Datei, die eine Kopfzeile und eine Zeile für jeden Trainingsschritt enthält, der durch den Optimierungsauftrag ausgeführt wurde. Die Ergebnisdatei enthält die folgenden Spalten:

Spaltenname BESCHREIBUNG
step Die Anzahl der Trainingsschritte. Ein Trainingsschritt stellt einen einzelnen Durchgang, vorwärts und rückwärts, über einen Batch von Trainingsdaten dar.
train_loss Der Verlust für den Trainingsbatch.
train_mean_token_accuracy Der Prozentsatz der Token im Trainingsbatch, die vom Modell richtig vorhergesagt wurden
Wenn z. B. die Batchgröße auf 3 festgelegt ist und Ihre Daten [[1, 2], [0, 5], [4, 2]] Vervollständigungen enthalten, wird dieser Wert auf 0,83 (5 von 6) festgelegt, wenn das Modell [[1, 1], [0, 5], [4, 2]] vorhergesagt hat.
valid_loss Der Verlust für den Validierungsbatch.
validation_mean_token_accuracy Der Prozentsatz der Token im Validierungsbatch, die vom Modell richtig vorhergesagt wurden
Wenn z. B. die Batchgröße auf 3 festgelegt ist und Ihre Daten [[1, 2], [0, 5], [4, 2]] Vervollständigungen enthalten, wird dieser Wert auf 0,83 (5 von 6) festgelegt, wenn das Modell [[1, 1], [0, 5], [4, 2]] vorhergesagt hat.
full_valid_loss Der am Ende jeder Epoche berechnete Validierungsverlust. Wenn das Training gut verläuft, sollte der Verlust abnehmen.
full_valid_mean_token_accuracy Die gültige mittlere Tokengenauigkeit, die am Ende jeder Epoche berechnet wird. Wenn das Training gut verläuft, sollte die Tokengenauigkeit größer werden.

Sie können die Daten in Ihrer results.csv-Datei auch als Plots in Azure OpenAI Studio anzeigen. Wählen Sie den Link für Ihr trainiertes Modell aus, und es werden drei Diagramme angezeigt: Verlust, mittlere Tokengenauigkeit und Tokengenauigkeit. Wenn Sie Validierungsdaten bereitgestellt haben, werden beide Datasets auf demselben Plot angezeigt.

Achten Sie darauf, dass Ihr Verlust mit der Zeit abnimmt und Ihre Genauigkeit zunimmt. Wenn eine Divergenz zwischen Ihren Trainings- und Validierungsdaten angezeigt wird, kann dies auf eine Überanpassung hindeuten. Versuchen Sie, mit weniger Epochen oder einem kleineren Multiplikator der Lernrate zu trainieren.

Bereinigen Ihrer Bereitstellungen, optimierten Modelle und Trainingsdateien

Wenn Sie mit Ihrem angepassten Modell fertig sind, können Sie die Bereitstellung und das Modell löschen. Sie können gegebenenfalls außerdem die Trainings- und Validierungsdateien löschen, die Sie in den Dienst hochgeladen haben.

Löschen Ihrer Modellimplementierung

Sie können verschiedene Methoden verwenden, um die Bereitstellung für Ihr angepasstes Modell zu löschen:

Löschen Ihres angepassten Modells

Analog dazu können Sie verschiedene Methoden verwenden, um Ihr angepasstes Modell zu löschen:

Hinweis

Sie können kein benutzerdefiniertes Modell löschen, für das eine Bereitstellung vorhanden ist. Zuerst müssen Sie die Modellimplementierung löschen, bevor Sie Ihr angepasstes Modell löschen können.

Löschen Ihrer Trainingsdateien

Sie können optional Trainings- und Validierungsdateien, die Sie zum Trainieren hochgeladen haben, und Ergebnisdateien, die während des Trainings generiert wurden, aus Ihrem Azure OpenAI-Abonnement löschen. Sie können die folgenden Methoden verwenden, um Ihre Trainings-, Validierungs- und Ergebnisdateien zu löschen:

Kontinuierliche Optimierung

Nachdem Sie ein optimiertes Modell erstellt haben, können Sie das Modell im Laufe der Zeit durch weitere Optimierungen weiter verfeinern. Kontinuierliche Optimierung ist der iterative Prozess, bei dem ein bereits optimiertes Modell als Basismodell ausgewählt und anhand neuer Sätze von Trainingsbeispielen weiter verfeinert wird.

Wenn Sie eine Optimierung für ein Modell durchführen möchten, das Sie bereits optimiert haben, verwenden Sie den gleichen Prozess wie unter Erstellen eines angepassten Modells beschrieben, anstatt jedoch den Namen eines generischen Basismodells anzugeben, geben Sie die ID Ihres bereits abgestimmten Modells an. Die ID des optimierten Modells sieht wie folgt aus: gpt-35-turbo-0613.ft-5fd1918ee65d4cd38a5dcf6835066ed7

curl -X POST $AZURE_OPENAI_ENDPOINT/openai/fine_tuning/jobs?api-version=2023-12-01-preview \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_OPENAI_API_KEY" \
  -d '{
    "model": "gpt-35-turbo-0613.ft-5fd1918ee65d4cd38a5dcf6835066ed7", 
    "training_file": "<TRAINING_FILE_ID>", 
    "validation_file": "<VALIDATION_FILE_ID>",
    "suffix": "<additional text used to help identify fine-tuned models>"
}'

Außerdem wird empfohlen, den suffix-Parameter einzuschließen, um die Unterscheidung zwischen verschiedenen Iterationen Ihres optimierten Modells zu vereinfachen. suffix verwendet eine Zeichenfolge und wird so festgelegt, dass das optimierte Modell identifiziert wird. Das Suffix kann bis zu 40 Zeichen (a-z, A-Z, 0-9, - und _) enthalten, die ihrem fein abgestimmten Modellnamen hinzugefügt werden.

Wenn Sie sich nicht sicher sind, welche ID Ihr optimiertes Modell hat, finden Sie diese Informationen auf der Seite Modelle von Azure OpenAI Studio, oder Sie können eine Liste der Modelle für eine bestimmte Azure OpenAI-Ressource mithilfe der REST-API generieren.

Problembehandlung

Wie aktiviere ich die Optimierung? Ein benutzerdefiniertes Modell erstellen ist in Azure OpenAI Studio ausgegraut?

Um erfolgreich auf die Optimierung zuzugreifen, muss Ihnen die Rolle Mitwirkender für Cognitive Services OpenAI zugewiesen sein. Selbst für Personen mit den hohen Berechtigungen der Rolle „Dienstadministrator“ muss dieses Konto explizit festgelegt werden, um auf die Optimierung zugreifen zu können. Weitere Informationen finden Sie im Leitfaden zur rollenbasierten Zugriffssteuerung.

Warum ist mein Upload fehlgeschlagen?

Wenn der Dateiupload in Azure OpenAI Studio fehlschlägt, können Sie die Fehlermeldung unter „Datendateien“ in Azure OpenAI Studio anzeigen. Zeigen Sie mit dem Mauszeiger auf „Fehler“ (unter der Statusspalte), und eine Erläuterung des Fehlers wird angezeigt.

Screenshot der Fehlermeldung zur Feinabstimmung.

Mein feinabgestimmtes Modell scheint sich nicht verbessert zu haben

  • Fehlende Systemmeldung: Sie müssen beim Optimieren eine Systemnachricht bereitstellen. Sie sollten dieselbe Systemmeldung bereitstellen, wenn Sie das feinabgestimmte Modell verwenden. Wenn Sie eine andere Systemmeldung angeben, werden möglicherweise unterschiedliche Ergebnisse angezeigt als die, für die die Feinabstimmung durchgeführt wurde.

  • Nicht genügend Daten: Während 10 das Mindestmaß für die Ausführung der Pipeline ist, benötigen Sie Hunderte bis Tausende von Datenpunkten, um dem Modell eine neue Fähigkeit anzutrainieren. Bei zu wenigen Datenpunkten besteht die Gefahr der Überanpassung und schlechten Verallgemeinerung. Ihr fein abgestimmtes Modell kann bei den Trainingsdaten gut abschneiden, aber bei anderen Daten schlecht, weil es sich die Trainingsbeispiele gemerkt hat, anstatt Muster zu lernen. Um optimale Ergebnisse zu erzielen, sollten Sie einen Datensatz mit Hunderten oder Tausenden von Datenpunkten vorbereiten.

  • Schlechte Daten: Ein schlecht kuratiertes oder nicht repräsentatives Dataset erzeugt ein Modell mit niedriger Qualität. Ihr Modell kann ungenaue oder voreingenommene Muster aus Ihrem Dataset lernen. Wenn Sie z. B. einen Chatbot für den Kundendienst trainieren, aber nur Trainingsdaten für ein Szenario (z. B. Artikelrückgabe) bereitstellen, weiß er nicht, wie er auf andere Szenarien reagieren soll. Oder wenn Ihre Trainingsdaten schlecht sind (falsche Antworten enthalten), lernt Ihr Modell, falsche Ergebnisse zu liefern.

Nächste Schritte