Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Zurzeit wird folgendes angezeigt:Foundry (klassische) Portalversion - Wechseln zur Version für das neue Foundry-Portal
Erfahren Sie, wie Sie Modelle in Microsoft Foundry für Ihre Datasets und Anwendungsfälle optimieren. Die Feinabstimmung ermöglicht Folgendes:
- Qualitativ bessere Ergebnisse als die, die Sie nur durch Prompt Engineering erhalten können.
- Die Möglichkeit, mehr Beispiele zu trainieren, als das, was in die Anforderungskontextgrenze eines Modells passen kann.
- Token-Einsparungen durch kürzere Prompts.
- Anforderungen mit geringerer Latenz, insbesondere wenn Sie kleinere Modelle verwenden.
Im Gegensatz zu wenigen Lerninhalten verbessert die Feinabstimmung das Modell durch Schulungen zu mehr Beispielen als das, was in eine Aufforderung passt. Da sich die Gewichte an Ihre Aufgabe anpassen, fügen Sie weniger Beispiele oder Anweisungen ein. Wenn weniger eingeschlossen wird, verringert sich die Anzahl der Token pro Aufruf, was potenziell Kosten und Latenz senken kann.
Wir verwenden die Low-Rank-Anpassung (LoRA), um Modelle so zu optimieren, dass ihre Komplexität reduziert wird, ohne dass sie ihre Leistung erheblich beeinträchtigen. Diese Methode funktioniert, indem die ursprüngliche hochgradige Matrix durch eine niedrigrangige approximiert wird. Durch die Feinabstimmung einer kleineren Teilmenge wichtiger Parameter während der überwachten Schulungsphase wird das Modell besser verwaltbar und effizienter. Für Benutzer ist es auch schneller und erschwinglicher als andere Techniken.
In diesem Artikel erfahren Sie, wie Sie:
- Wählen Sie geeignete Datensätze und Formate für die Feinabstimmung aus.
- Lösen Sie einen Feinabstimmungsauftrag aus, überwachen Sie den Status, und rufen Sie Ergebnisse ab.
- Bereitstellen und Auswerten eines fein abgestimmten Modells.
- Bereinigen Sie Ihre Ressourcen, wenn Sie sie nicht mehr benötigen.
Es gibt zwei einzigartige Feinabstimmungsfunktionen im Microsoft Foundry-Portal:
- Hub- oder Projektansicht: Unterstützt Feinabstimmungsmodelle von mehreren Anbietern wie Azure OpenAI, Meta Llama und Microsoft Phi.
Azure OpenAI-zentrierte Ansicht : Unterstützt nur die Feinabstimmung von Azure OpenAI-Modellen, bietet aber Unterstützung für zusätzliche Funktionen wie dieWeights & Biases (W&B) Vorschau-Integration . Wenn Sie nur Azure OpenAI-Modelle optimieren, empfehlen wir diese Erfahrung.
Wichtig
In diesem Artikel markierte Elemente (Vorschau) befinden sich derzeit in der öffentlichen Vorschau. Diese Vorschau wird ohne Vereinbarung auf Serviceebene bereitgestellt und wird für Produktionsworkloads nicht empfohlen. Bestimmte Features werden möglicherweise nicht unterstützt oder weisen eingeschränkte Funktionen auf. Weitere Informationen finden Sie unter Supplementale Nutzungsbedingungen für Microsoft Azure Previews.
Voraussetzungen
- Lesen Sie den Leitfaden, wann man die Feinabstimmung von Azure OpenAI verwenden soll.
- Sie benötigen ein Azure-Abonnement. Erstellen Sie eine kostenlos.
- Sie benötigen eine Azure OpenAI-Ressource, die sich in einer Region befindet, die die Feinabstimmung des Azure OpenAI-Modells unterstützt. Die Liste der verfügbaren Modelle nach Region und unterstützten Funktionen finden Sie in der Modellzusammenfassungstabelle und der Verfügbarkeit von Regionen. Weitere Informationen finden Sie unter Create a resource and deploy a model with Azure OpenAI.
- Feinabstimmung erfordert die Rolle Azure AI Owner. Während Azure KI-Benutzer Modelle trainieren können (Feinabstimmung), können nur KI-Besitzer sie bereitstellen.
- Wenn Sie noch keinen Zugriff auf das Anzeigen von Kontingenten und die Bereitstellung von Modellen im Foundry-Portal haben, benötigen Sie weitere Berechtigungen.
Unterstützte Modelle
Um zu überprüfen, welche Regionen derzeit Feintuning unterstützen, konsultieren Sie den Artikel über Modelle.
Oder Sie können ein zuvor fein abgestimmtes Modell optimieren, formatiert als base-model.ft-{jobid}.
Überprüfen des Workflows für das Gießereiportal
Nehmen Sie sich einen Moment Zeit, um den Feinabstimmungsworkflow für die Verwendung des Foundry-Portals zu überprüfen:
- Bereiten Sie Ihre Schulungs- und Validierungsdaten vor.
- Verwenden Sie das Dialogfeld "Feinabgestimmtes Modell erstellen" im Foundry-Portal, um Ihr benutzerdefiniertes Modell zu trainieren.
- Wählen Sie eine Schulungsmethode aus.
- Wählen Sie ein Basismodell aus.
- Wählen Sie Ihren Schulungstyp aus.
- Wählen Sie Ihre Schulungsdaten aus.
- Wählen Sie optional Ihre Validierungsdaten aus.
- Konfigurieren Sie optional die Aufgabenparameter für Ihre Feinabstimmung.
- Aktivieren Sie optional die automatische Bereitstellung für das resultierende benutzerdefinierte Modell.
- Überprüfen Sie Ihre Auswahlmöglichkeiten, und schulen Sie Ihr neues benutzerdefiniertes Modell.
- Überprüfen Sie den Status Ihres benutzerdefinierten Feinabstimmungsmodells.
- Stellen Sie Ihr benutzerdefiniertes Modell zur Verwendung bereit.
- Verwenden Sie Ihr benutzerdefiniertes Modell.
- Analysieren Sie optional Ihr benutzerdefiniertes Modell auf Leistung und Anpassung.
Vorbereiten Ihrer Schulungs- und Validierungsdaten
Ihre Schulungs- und Validierungsdatensets bestehen aus Eingabe- und Ausgabebeispielen für die Ausführung des Modells.
Die von Ihnen verwendeten Schulungs- und Validierungsdaten müssen als JSON Lines (JSONL)-Dokument formatiert werden. Es muss auch im Konversationsformat formatiert sein, das von der Chat-Vervollständigungs-API verwendet wird.
Zusätzlich zum JSONL-Format müssen Schulungs- und Validierungsdatendateien in UTF-8 codiert werden und eine Bytereihenfolgemarke (BYTE-Order Mark, BOM) enthalten. Jede Datei muss kleiner als 512 MB groß sein.
In der Regel wird empfohlen, die Anweisungen und Eingabeaufforderungen zu verwenden, die Sie in jedem Schulungsbeispiel am besten gefunden haben. Dieser Ansatz hilft Ihnen, die besten Ergebnisse zu erzielen, insbesondere, wenn Sie weniger als hundert Beispiele haben.
Beispieldateiformat
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who discovered Antarctica?"}, {"role": "assistant", "content": "Some chaps named Fabian Gottlieb von Bellingshausen and Mikhail Lazarev, as if they don't teach that in every school!"}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What is the biggest ocean?"}, {"role": "assistant", "content": "The Pacific Ocean. It's not like it's a small pond or anything."}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What is the largest planet?"}, {"role": "assistant", "content": "It's called Jupiter, you might have heard of it...or not."}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who painted the Mona Lisa?"}, {"role": "assistant", "content": "Oh, some obscure artist named Leonardo da Vinci. Not that he is famous or anything."}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the boiling point of water?"}, {"role": "assistant", "content": "Exciting fact of the day: it's 100 degrees Celsius. Life-changing, isn't it?"}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who wrote 'The Odyssey'?"}, {"role": "assistant", "content": "Oh, just some poet named Homer. Nothing special, really."}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What is the largest mammal?"}, {"role": "assistant", "content": "Blue Whale. Quite a big fish isn't it? Oh wait, it's not a fish!"}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the highest mountain peak?"}, {"role": "assistant", "content": "Everest. Brace yourself, it's not a walk in the park."}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who invented the telephone?"}, {"role": "assistant", "content": "A guy named Alexander Graham Bell. Bet you didn't guess that one!"}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What is the distance from Earth to the Sun?"}, {"role": "assistant", "content": "About 93 million miles. Just a quick drive, really."}]}
Multiple-Turn-Chatdateiformat für Azure OpenAI
Es werden auch mehrere Wendungen einer Unterhaltung in einer einzigen Zeile Ihrer JSONL-Schulungsdatei unterstützt. Um die Feinabstimmung für bestimmte Assistentennachrichten zu überspringen, fügen Sie das optionale weight Schlüssel-Wert-Paar hinzu. Derzeit kann weight auf 0 oder 1 gesetzt werden.
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the capital/major city 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}]}
Abschluss von Chats mit visuellen Funktionen
{"messages": [{"role": "user", "content": [{"type": "text", "text": "What's in this image?"}, {"type": "image_url", "image_url": {"url": "https://raw.githubusercontent.com/MicrosoftDocs/azure-ai-docs/main/articles/ai-services/openai/media/how-to/generated-seattle.png"}}]}, {"role": "assistant", "content": "The image appears to be a watercolor painting of a city skyline, featuring tall buildings and a recognizable structure often associated with Seattle, like the Space Needle. The artwork uses soft colors and brushstrokes to create a somewhat abstract and artistic representation of the cityscape."}]}
Überlegungen zur Datasetgröße
Je mehr Schulungsbeispiele Sie haben, desto besser. Feinabstimmungsvorgänge können erst mit mindestens 10 Schulungsbeispielen durchgeführt werden, aber so eine geringe Anzahl reicht nicht aus, um die Modellantworten spürbar zu beeinflussen. Eine bewährte Methode für eine erfolgreiche Feinabstimmung besteht darin, Hunderte, wenn nicht Tausende von Schulungsbeispielen bereitzustellen. Es wird empfohlen, mit 50 gut gestalteten Beispielen zu beginnen.
Im Allgemeinen kann die Verdoppelung der Datasetgröße zu einer linearen Erhöhung der Modellqualität führen. Bedenken Sie jedoch, dass sich Beispiele mit niedriger Qualität negativ auf die Leistung auswirken können. Wenn Sie das Modell auf eine große Menge interner Daten trainieren, ohne das Dataset zuerst auf die besten Qualitätsbeispiele zu beschränken, könnte Ihr Modell schlechter als erwartet abschneiden.
Erstellen eines fein abgestimmten Modells
Das Foundry-Portal stellt das Dialogfeld Create a fine-tuned model bereit, sodass Sie ein fein abgestimmtes Modell für Ihre Azure Ressource an einer zentralen Stelle erstellen und trainieren können.
Gehen Sie zum Foundry-Portal und melden Sie sich mit Ihren Zugangsdaten an, die Zugriff auf Ihre Azure OpenAI-Ressource haben. Wählen Sie während des Anmeldeworkflows das entsprechende Verzeichnis, Azure Abonnement und Azure OpenAI-Ressource aus.
Wechseln Sie zu "Extras>Feinabstimmung", und wählen Sie dann " Feinabstimmungsmodell" aus.
Wählen Sie ein Modell aus, um es zu optimieren, und wählen Sie dann "Weiter" aus.
Das Dialogfeld "Feinabgestimmtes Modell erstellen" erscheint.
Wählen Sie Ihre Schulungsmethode aus.
Der erste Schritt besteht darin, die Modellauswahl und die Trainingsmethode zu bestätigen. Nicht alle Modelle unterstützen alle Schulungsmethoden.
- Überwachte Feinabstimmung: Unterstützt von allen Nicht-Reasoning-Modellen.
- Direkte Einstellungsoptimierung (Vorschau):Unterstützt von GPT-4o.
- Verstärkungs-Feinabstimmung: Unterstützt durch logische Modelle, z. B. o4-mini.
Wenn Sie das Modell auswählen, können Sie auch ein zuvor abgestimmtes Modell auswählen, wie weiter unten in diesem Artikel beschrieben.
Auswählen des Schulungstyps
Foundry bietet drei Schulungsstufen an, um die Bedürfnisse der Kunden zu erfüllen.
Standardschulungsstufe
Die Standardebene bietet dedizierte Kapazität für die Feinabstimmung mit vorhersehbarer Leistung und SLAs. Es ist ideal für Produktionsworkloads, die einen garantierten Durchsatz erfordern.
Globale Standardschulungsstufe
Die Stufe "Globale Schulung" erweitert die Reichweite der Modellanpassung mit den erschwinglicheren Preisen anderer globaler Angebote. Es bietet keine Datenresidenz an. Wenn Sie Datenresidenz benötigen, lesen Sie die Liste der verfügbaren Regionen für Ihr ausgewähltes Modell.
Ihre Schulungsdaten und die resultierenden Modellgewichtungen können in eine andere Azure Region kopiert werden.
Wenn Sie diese Ebene verwenden, können Sie:
- Schulen Sie die neuesten OpenAI-Modelle aus mehr als einem Dutzend Azure OpenAI-Regionen.
- Profitieren Sie von niedrigeren Schulungsraten pro Token im Vergleich zur Standardebene.
Entwicklerschulungsstufe
Die Entwicklerebene ist eine kostengünstige Option, die leerlaufkapazität für nicht dringende oder explorative Workloads verwendet. Aufträge in dieser Stufe können unterbrochen und später fortgesetzt werden, daher ist sie ideal für experimentelle und kostensensitive Anwendungsfälle.
Auswählen Ihrer Schulungsdaten
Der nächste Schritt besteht darin, entweder vorhandene vorbereitete Schulungsdaten auszuwählen oder neue vorbereitete Schulungsdaten hochzuladen, die verwendet werden sollen, wenn Sie Ihr Modell anpassen, indem Sie "Schulungsdaten hinzufügen" auswählen.
Im Dialogfeld " Schulungsdaten " werden alle vorhandenen, zuvor hochgeladenen Datasets angezeigt. Es bietet auch Optionen zum Hochladen neuer Schulungsdaten.
Wenn Ihre Schulungsdaten bereits in den Dienst hochgeladen wurden, wählen Sie "Dateien" aus der Ressource "Verbundene KI" aus. Wählen Sie dann die Datei aus der Dropdownliste aus.
Verwenden Sie eine der folgenden Optionen, um neue Schulungsdaten hochzuladen:
- Wählen Sie "Dateien hochladen " aus, um Schulungsdaten aus einer lokalen Datei hochzuladen.
- Wählen Sie Azure Blob oder andere freigegebene Webspeicherorte aus, um Schulungsdaten aus Azure Blob Storage oder einem anderen freigegebenen Webspeicherort zu importieren.
Für große Datendateien wird empfohlen, aus Blob Storage zu importieren. Große Dateien können instabil werden, wenn Sie sie über mehrteilige Formulare hochladen, da die Anforderungen atomar sind und nicht wiederholt oder fortgesetzt werden können. Weitere Informationen zu Blob Storage finden Sie unter What is Azure Blob Storage?.
Wählen Sie Ihre Validierungsdaten aus (optional)
Wenn Sie über ein Validierungsdatenset verfügen, wählen Sie "Schulungsdaten hinzufügen" aus. Sie können entweder vorhandene vorbereitete Validierungsdaten auswählen oder neue vorbereitete Validierungsdaten hochladen, die beim Anpassen des Modells verwendet werden sollen.
Im Dialogfeld " Validierungsdaten " werden alle vorhandenen, zuvor hochgeladenen Schulungs- und Validierungsdatensätze angezeigt. Es bietet auch Optionen zum Hochladen neuer Validierungsdaten.
Wenn Ihre Überprüfungsdaten bereits in den Dienst hochgeladen wurden, wählen Sie "Dataset auswählen" aus. Wählen Sie dann die Datei aus der Dropdownliste aus.
Verwenden Sie eine der folgenden Optionen, um neue Überprüfungsdaten hochzuladen:
- Wählen Sie "Lokale Datei " aus, um Validierungsdaten aus einer lokalen Datei hochzuladen.
- Wählen Sie Azure Blob oder andere freigegebene Webspeicherorte aus, um Validierungsdaten aus Azure Blob Storage oder einem anderen freigegebenen Webspeicherort zu importieren.
Für große Datendateien wird empfohlen, aus Blob Storage zu importieren. Große Dateien können instabil werden, wenn Sie sie über mehrteilige Formulare hochladen, da die Anforderungen atomar sind und nicht wiederholt oder fortgesetzt werden können.
Ihr Modell identifizierbar machen (optional)
Es wird empfohlen, einen suffix Parameter einzuschließen, um einfacher zwischen Iterationen Ihres fein abgestimmten Modells zu unterscheiden. Ein suffix Parameter akzeptiert eine Zeichenfolge von bis zu 18 Zeichen und wird zum Benennen des resultierenden fein abgestimmten Modells verwendet.
Konfigurieren von Schulungsparametern (optional)
Sie können einen optionalen Seed bereitstellen und zusätzliche Hyperparameter optimieren.
Ein Seed kontrolliert die Reproduzierbarkeit des Jobs. Die Übergabe der gleichen Ausgangs- und Auftragsparameter sollte die gleichen Ergebnisse erzielen, kann aber in seltenen Fällen unterschiedlich sein. Wenn Sie keinen Seed angeben, wird einer zufällig für Sie generiert.
Die folgenden Hyperparameter stehen für die Optimierung über das Foundry-Portal zur Verfügung:
| Namen | Typ | Beschreibung |
|---|---|---|
| Batchgröße | Ganzzahl | Die batchgröße, die für die Schulung verwendet werden soll. Die Batchgröße ist die Anzahl der Trainingsbeispiele, die zum Trainieren eines einzelnen Vorwärts- und Rückwärtsgangs verwendet werden. Im Allgemeinen stellen wir fest, dass größere Batchgrößen tendenziell besser für größere Datasets funktionieren. Der Standardwert und 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. |
| Lernrate multiplizierer | Anzahl | Der Lernrate-Multiplizierer, der für die Schulung verwendet werden soll. Die Feinabstimmungs-Lernrate ist die ursprüngliche beim Vortraining verwendete Lernrate, multipliziert mit diesem Wert. Größere Lernraten zeigen tendenziell bessere Leistung bei größeren Batchgrößen. Wir empfehlen, mit Werten im Bereich von 0,02 bis 0,2 zu experimentieren, um zu sehen, was zu den besten Ergebnissen führt. Eine kleinere Lernrate kann nützlich sein, um Überanpassung zu vermeiden. |
| Anzahl der Epochen | Ganzzahl | Die Anzahl der Epochen, für die das Modell trainiert werden soll. Eine Epoche bezieht sich auf einen vollständigen Zyklus durch die Schulungsdatensätze. |
Aktivieren der automatischen Bereitstellung (optional)
Um Zeit zu sparen, können Sie optional die automatische Bereitstellung für Ihr resultierendes Modell aktivieren. Wenn die Schulung erfolgreich abgeschlossen ist, wird das Modell entsprechend dem ausgewählten Bereitstellungstyp bereitgestellt. Der Bereitstellungsname basiert auf dem eindeutigen Namen, der für Ihr benutzerdefiniertes Modell generiert wurde, und dem optionalen Suffix, das Sie möglicherweise zuvor bereitgestellt haben.
Hinweis
Für die automatische Bereitstellung werden derzeit nur globale Standard- und Entwicklerbereitstellungen unterstützt. Keine dieser Optionen bietet Datenresidenz. Weitere Informationen finden Sie in der Dokumentation zu Bereitstellungstypen.
Überprüfen Sie Ihre Auswahlmöglichkeiten, und schulen Sie Ihr Modell
Überprüfen Sie Ihre Auswahl, und wählen Sie dann "Absenden" aus, um mit dem Training Ihres neuen fein abgestimmten Modells zu beginnen.
Überprüfen des Status Ihres benutzerdefinierten Modells
Nachdem Sie Ihren Feinabstimmungsauftrag übermittelt haben, wird eine Seite mit Details zu Ihrem fein abgestimmten Modell angezeigt. Sie finden den Status und weitere Informationen zu Ihrem fein abgestimmten Modell auf der Feinabstimmungsseite im Foundry-Portal .
Möglicherweise wird Ihr Auftrag hinter anderen Aufträgen im System in die Warteschlange gestellt. Das Trainieren Ihres Modells kann je nach Modell und Datasetgröße Minuten oder Stunden dauern.
Generieren von Prüfpunkten
Wenn jede Trainingsepoche beendet ist, wird ein 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 verwendet werden kann.
Prüfpunkte können besonders nützlich sein, da sie vor dem Überpassen Momentaufnahmen bereitstellen können. Wenn ein Feinabstimmungsjob abgeschlossen ist, stehen Ihnen die drei neuesten Versionen des Modells zur Verfügung. Sie können Prüfpunkte zwischen Ressourcen und Abonnements über die REST-API kopieren.
Anhalten und Fortsetzen
Sie können den Fortschritt in beiden Feinabstimmungsansichten des Foundry-Portals nachverfolgen. Ihr Auftrag durchläuft dieselben Status wie normale Feinabstimmungsaufträge (In der Warteschlange, Ausgeführt, erfolgreich).
Sie können die Ergebnissdateien auch während des Trainings überprüfen, um einen Blick auf den Fortschritt zu erhalten und ob das Training wie erwartet verläuft.
Während des Trainings können Sie die Metriken anzeigen und den Job nach Bedarf anhalten. Das Anhalten kann nützlich sein, wenn Metriken nicht konvergend sind oder wenn Sie der Meinung sind, dass das Modell nicht im richtigen Tempo lernt. Wenn Sie ein Training anhalten, wird nach Abschluss der Sicherheitsbewertungen ein bereitstellbarer Prüfpunkt erstellt. Dieser Prüfpunkt steht Ihnen zur Verfügung, um ihn bereitzustellen und zu verwenden, oder Sie können den Auftrag fortsetzen, um ihn abzuschließen. Der Pausenvorgang gilt nur für Aufträge, die für mindestens einen Schritt trainiert werden und sich im Zustand " Ausführen" befinden.
Analysieren Des benutzerdefinierten Modells
Azure OpenAI fügt eine Ergebnisdatei mit dem Namen results.csv an jeden Feinabstimmungsauftrag an, nachdem er abgeschlossen wurde. Sie können die Ergebnisdatei verwenden, um die Schulungs- 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 " im Bereich "Modelle " des Foundry-Portals aufgelistet. Sie können die Datei-ID verwenden, um die Ergebnisdatei aus dem Bereich "Datendateien " des Foundry-Portals zu identifizieren und herunterzuladen.
Die Ergebnisdatei ist eine CSV-Datei, die eine Kopfzeile und eine Zeile für jeden Schulungsschritt enthält, den der Feinabstimmungsauftrag ausführt. Die Ergebnisdatei enthält die folgenden Spalten:
| Spaltenname | Beschreibung |
|---|---|
step |
Die Nummer des Schulungsschritts. Ein Schulungsschritt stellt einen einzelnen Durchlauf, vorwärts und rückwärts, in einer Reihe von Schulungsdaten dar. |
train_loss |
Der Verlust für das Training-Batch. |
train_mean_token_accuracy |
Der Prozentsatz der Token im Schulungsbatch, den das Modell korrekt vorhergesagt hat. Wenn beispielsweise die Batchgröße auf 3 festgelegt ist und Ihre Daten Abschlüsse [[1, 2], [0, 5], [4, 2]] enthalten, wird dieser Wert auf 0.83 (5 von 6) festgelegt, wenn das Modell [[1, 1], [0, 5], [4, 2]] vorhersagt. |
valid_loss |
Der Verlust für den Validierungsbatch. |
validation_mean_token_accuracy |
Der Prozentsatz der Token im Überprüfungsbatch, den das Modell korrekt vorhergesagt hat. Wenn beispielsweise die Batchgröße auf 3 festgelegt ist und Ihre Daten Abschlüsse [[1, 2], [0, 5], [4, 2]] enthalten, wird dieser Wert auf 0.83 (5 von 6) festgelegt, wenn das Modell [[1, 1], [0, 5], [4, 2]] vorhersagt. |
full_valid_loss |
Der Am Ende jeder Epoche berechnete Validierungsverlust. Wenn das Training gut geht, sollte der Verlust abnehmen. |
full_valid_mean_token_accuracy |
Die gültige mittlere Tokengenauigkeit, die am Ende jeder Epoche berechnet wird. Wenn die Schulung gut läuft, sollte die Tokengenauigkeit erhöht werden. |
Sie können die Daten in Ihrer results.csv Datei auch als Plots im Foundry-Portal anzeigen. Wenn Sie den Link für Ihr trainiertes Modell auswählen, 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 im Laufe der Zeit abnimmt und Ihre Genauigkeit zunimmt. Wenn Ihre Schulungs- und Validierungsdaten abweichen, sind Sie möglicherweise überfällig. Probieren Sie schulungen mit weniger Epochen oder einem kleineren Lernratenmultiplikator aus.
Bereitstellen eines optimierten Modells
Wenn Sie mit den Metriken Ihres Feintuning-Jobs zufrieden sind oder einfach nur zum Inferenzprozess wechseln möchten, müssen Sie das Modell implementieren.
Wenn Sie eine weitere Überprüfung durchführen, sollten Sie die Bereitstellung für Tests mithilfe einer Entwicklerbereitstellung in Betracht ziehen.
Wenn Sie bereit sind, in die Produktion bereitzustellen oder bestimmte Anforderungen an die Datenresidenz zu erfüllen, befolgen Sie den Bereitstellungsleitfaden.
Verwenden eines bereitgestellten fein abgestimmten Modells
Nachdem Sie Ihr fein abgestimmtes Modell bereitgestellt haben, können Sie es wie jedes andere bereitgestellte Modell verwenden. Sie können den Playground in Foundry verwenden, um mit Ihrer neuen Bereitstellung zu experimentieren. Sie können auch die REST-API verwenden, um Ihr fein abgestimmtes Modell aus Ihrer eigenen Anwendung aufzurufen. Sie können sogar mit der Verwendung dieses neuen fein abgestimmten Modells in Ihrem Eingabeaufforderungsfluss beginnen, um Ihre generative KI-Anwendung zu erstellen.
Hinweis
Bei Chatmodellen muss die Systemnachricht, die Sie verwenden, um Ihr feinabgestimmtes Modell zu leiten, (egal ob es bereitgestellt oder im Playground für Tests verfügbar ist) dieselbe sein wie die Systemnachricht, die Sie für das Training verwendet haben. Wenn Sie eine andere Systemmeldung verwenden, wird das Modell möglicherweise nicht wie erwartet ausgeführt.
Kontinuierliche Feinabstimmung durchführen
Nachdem Sie ein fein abgestimmtes Modell erstellt haben, sollten Sie das Modell im Laufe der Zeit durch weitere Feinabstimmung weiter verfeinern. Die kontinuierliche Feinabstimmung ist der iterative Prozess der Auswahl eines bereits feinabgestimmten Modells als Basismodell und es weiter auf neuen Trainingsbeispieldatensätzen zu optimieren.
Wenn Sie eine Feinabstimmung für ein Modell durchführen möchten, das Sie zuvor optimiert haben, verwenden Sie den gleichen Prozess, der unter "Erstellen eines fein abgestimmten Modells" beschrieben ist. Anstatt jedoch den Namen eines generischen Basismodells anzugeben, geben Sie Ihr bereits fein abgestimmtes Modell an. Ein benutzerdefiniertes fein abgestimmtes Modell sieht wie folgt gpt-4o-2024-08-06.ft-d93dda6110004b4da3472d96f4dd4777-ftaus.
Bereinigen Sie Ihre Bereitstellungen, benutzerdefinierten Modelle und Schulungsdateien
Wenn Sie Ihr benutzerdefiniertes Modell nicht mehr benötigen, können Sie die Bereitstellung und das Modell löschen. Sie können auch die Schulungs- und Validierungsdateien löschen, die Sie bei Bedarf in den Dienst hochgeladen haben.
Löschen der Modellbereitstellung
Wichtig
Nachdem Sie ein angepasstes Modell bereitgestellt haben, wird die Bereitstellung gelöscht, wenn sie zu irgendeinem Zeitpunkt länger als 15 Tage inaktiv bleibt. Die Bereitstellung eines angepassten Modells ist inaktiv , wenn das Modell vor mehr als 15 Tagen bereitgestellt wurde und während eines kontinuierlichen Zeitraums von 15 Tagen keine Chat-Fertigstellungen oder Antwort-API-Aufrufe an das Modell vorgenommen wurden.
Das Löschen einer inaktiven Bereitstellung hat keine Auswirkungen auf das zugrunde liegende angepasste Modell und löscht es nicht. Das angepasste Modell kann jederzeit erneut bereitgestellt werden.
Wie in Azure OpenAI in Microsoft Foundry Models pricing beschrieben, entstehen jedem angepassten (fein abgestimmten) Modell, das bereitgestellt wird, stündliche Hostingkosten, unabhängig davon, ob Chatabschlusse oder Antwort-API-Aufrufe an das Modell getätigt werden. Weitere Informationen zum Planen und Verwalten von Kosten mit Azure OpenAI finden Sie unter Plan und Verwalten von Kosten für Azure OpenAI.
Sie können die Bereitstellung für Ihr benutzerdefiniertes Modell im Bereich "Bereitstellungen " im Foundry-Portal löschen. Wählen Sie die zu löschende Bereitstellung aus und klicken Sie dann auf Löschen.
Löschen Des benutzerdefinierten Modells
Sie können ein benutzerdefiniertes Modell im Bereich "Modelle " im Gießereiportal löschen. Wählen Sie das benutzerdefinierte Modell aus, das sie auf der Registerkarte " Angepasste Modelle " löschen möchten, und wählen Sie dann "Löschen" aus.
Hinweis
Sie können ein benutzerdefiniertes Modell nicht löschen, wenn es über eine vorhandene Bereitstellung verfügt. Sie müssen die Modellbereitstellung löschen , bevor Sie Ihr benutzerdefiniertes Modell löschen können.
Löschen Ihrer Schulungsdateien
Sie können optional Schulungs- und Validierungsdateien löschen, die Sie für die Schulung hochgeladen haben, sowie Ergebnisdateien, die während der Schulung generiert wurden, im Bereich "Verwaltungsdaten>+ Indizes " im Gießereiportal. Wählen Sie die zu löschende Datei und dann "Löschen" aus.
Voraussetzungen
- Lesen Sie den Leitfaden, wann man die Feinabstimmung von Azure OpenAI verwenden soll.
- Sie benötigen ein Azure-Abonnement. Erstellen Sie eine kostenlos.
- Sie benötigen eine Azure OpenAI-Ressource. Weitere Informationen finden Sie unter Create a resource and deploy a model with Azure OpenAI.
- Sie benötigen die folgenden Python Bibliotheken:
os,json,requests,openai. - Sie benötigen die OpenAI-Python-Bibliothek.
- Feinabstimmung erfordert die Rolle Azure AI Owner. Während Azure KI-Benutzer Modelle trainieren können (Feinabstimmung), können nur KI-Besitzer sie bereitstellen.
- Wenn Sie noch keinen Zugriff auf das Anzeigen von Kontingenten und die Bereitstellung von Modellen im Foundry-Portal haben, benötigen Sie weitere Berechtigungen.
Unterstützte Modelle
Um zu überprüfen, welche Regionen derzeit Feintuning unterstützen, lesen Sie den Artikel über Modelle.
Oder Sie können ein zuvor fein abgestimmtes Modell optimieren, formatiert als base-model.ft-{jobid}.
Überprüfen des Workflows für das Python SDK
Nehmen Sie sich einen Moment Zeit, um den Feinabstimmungsworkflow für die Verwendung des Python SDK mit Azure OpenAI zu überprüfen:
- Bereiten Sie Ihre Schulungs- und Validierungsdaten vor.
- Wählen Sie ein Basismodell aus.
- Laden Sie Ihre Schulungsdaten hoch.
- Trainieren Sie Ihr neues angepasstes Modell.
- Überprüfen Sie den Status Ihres angepassten Modells.
- Stellen Sie Ihr angepasstes Modell für die Verwendung bereit.
- Verwenden Sie Ihr angepasstes Modell.
- Analysieren Sie optional Ihr angepasstes Modell auf Leistung und Anpassung.
Vorbereiten Ihrer Schulungs- und Validierungsdaten
Ihre Schulungs- und Validierungsdatensets bestehen aus Eingabe- und Ausgabebeispielen für die Ausführung des Modells.
Die von Ihnen verwendeten Schulungs- und Validierungsdaten müssen als JSON Lines (JSONL)-Dokument formatiert werden. Es muss auch im Konversationsformat formatiert sein, das von der Chat-Vervollständigungs-API verwendet wird.
Zusätzlich zum JSONL-Format müssen Schulungs- und Validierungsdatendateien in UTF-8 codiert werden und eine Bytereihenfolgemarke (BYTE-Order Mark, BOM) enthalten. Jede Datei muss kleiner als 512 MB groß sein.
Wenn Sie eine schrittweise Anleitung zur Feinabstimmung gpt-4o-mini-2024-07-18 wünschen, lesen Sie das Azure OpenAI Feinabstimmung Tutorial.
Beispieldateiformat
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who discovered Antarctica?"}, {"role": "assistant", "content": "Some chaps named Fabian Gottlieb von Bellingshausen and Mikhail Lazarev, as if they don't teach that in every school!"}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What is the biggest ocean?"}, {"role": "assistant", "content": "The Pacific Ocean. It's not like it's a small pond or anything."}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What is the largest planet?"}, {"role": "assistant", "content": "It's called Jupiter, you might have heard of it...or not."}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who painted the Mona Lisa?"}, {"role": "assistant", "content": "Oh, some obscure artist named Leonardo da Vinci. Not that he is famous or anything."}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the boiling point of water?"}, {"role": "assistant", "content": "Exciting fact of the day: it's 100 degrees Celsius. Life-changing, isn't it?"}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who wrote 'The Odyssey'?"}, {"role": "assistant", "content": "Oh, just some poet named Homer. Nothing special, really."}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What is the largest mammal?"}, {"role": "assistant", "content": "Blue Whale. Quite a big fish, isn't it? Oh wait, it's not a fish!"}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the highest mountain peak?"}, {"role": "assistant", "content": "Everest. Brace yourself, it's not a walk in the park."}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who invented the telephone?"}, {"role": "assistant", "content": "A guy named Alexander Graham Bell. Bet you didn't guess that one!"}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What is the distance from Earth to the Sun?"}, {"role": "assistant", "content": "About 93 million miles. Just a quick drive, really."}]}
Mehrfach-Chat-Dateiformat
Es werden auch mehrere Wendungen einer Unterhaltung in einer einzigen Zeile Ihrer JSONL-Schulungsdatei unterstützt. Um die Feinabstimmung für bestimmte Assistentennachrichten zu überspringen, fügen Sie das optionale weight Schlüssel-Wert-Paar hinzu. Derzeit kann weight auf 0 oder 1 gesetzt werden.
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the capital/major city 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}]}
Abschluss von Chats mit visuellen Funktionen
{"messages": [{"role": "user", "content": [{"type": "text", "text": "What's in this image?"}, {"type": "image_url", "image_url": {"url": "https://raw.githubusercontent.com/MicrosoftDocs/azure-ai-docs/main/articles/ai-services/openai/media/how-to/generated-seattle.png"}}]}, {"role": "assistant", "content": "The image appears to be a watercolor painting of a city skyline, featuring tall buildings and a recognizable structure often associated with Seattle, like the Space Needle. The artwork uses soft colors and brushstrokes to create a somewhat abstract and artistic representation of the cityscape."}]}
Erstellen Von Schulungs- und Validierungsdatensätzen
Je mehr Schulungsbeispiele Sie haben, desto besser. Feinabstimmungsvorgänge können erst mit mindestens 10 Schulungsbeispielen durchgeführt werden, aber so eine geringe Anzahl reicht nicht aus, um die Modellantworten spürbar zu beeinflussen. Eine bewährte Methode für eine erfolgreiche Feinabstimmung besteht darin, Hunderte, wenn nicht Tausende von Schulungsbeispielen bereitzustellen.
Im Allgemeinen kann die Verdoppelung der Datasetgröße zu einer linearen Erhöhung der Modellqualität führen. Bedenken Sie jedoch, dass sich Beispiele mit niedriger Qualität negativ auf die Leistung auswirken können. Wenn Sie das Modell auf eine große Menge interner Daten trainieren, ohne das Dataset zuerst auf die besten Qualitätsbeispiele zu beschränken, könnte Ihr Modell schlechter als erwartet abschneiden.
Hochladen Ihrer Schulungsdaten
Der nächste Schritt besteht darin, vorhandene vorbereitete Schulungsdaten auszuwählen oder neue vorbereitete Schulungsdaten hochzuladen, die beim Anpassen ihres Modells verwendet werden sollen. Nachdem Sie Ihre Schulungsdaten vorbereitet haben, können Sie Ihre Dateien in den Dienst hochladen. Es gibt zwei Möglichkeiten zum Hochladen von Schulungsdaten:
Für große Datendateien wird empfohlen, aus Blob Storage zu importieren. Große Dateien können instabil werden, wenn Sie sie über mehrteilige Formulare hochladen, da die Anforderungen atomar sind und nicht wiederholt oder fortgesetzt werden können. Weitere Informationen zu Blob Storage finden Sie unter What is Azure Blob Storage?.
Im folgenden Python Beispiel werden lokale Schulungs- und Validierungsdateien mithilfe des Python SDK hochgeladen und die zurückgegebenen Datei-IDs abgerufen:
import os
from openai import OpenAI
# Load the OpenAI client
client = OpenAI(
api_key = os.getenv("AZURE_OPENAI_API_KEY"),
base_url="https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/"
)
# Upload the training and validation dataset files to Microsoft Foundry with the SDK.
training_file_name = 'training_set.jsonl'
validation_file_name = 'validation_set.jsonl'
training_response = client.files.create(file=open(training_file_name, "rb"), purpose="fine-tune")
validation_response = client.files.create(file=open(validation_file_name, "rb"), purpose="fine-tune")
training_file_id = training_response.id
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 Schulungs- und Validierungsdateien hochgeladen haben, können Sie mit dem Feinabstimmungsprozess beginnen.
Der folgende Python Code zeigt ein Beispiel für das Erstellen eines neuen Feinabstimmungsauftrags mithilfe des Python SDK:
response = client.fine_tuning.jobs.create(
training_file=training_file_id,
validation_file=validation_file_id,
model="gpt-4.1-2025-04-14", # Enter the base model name.
suffix="my-model", # Custom suffix for naming the resulting model. Note that in Microsoft Foundry, the model can't contain dot/period characters.
seed=105, # Seed parameter controls reproducibility of the fine-tuning job. If you don't specify a seed, one is generated automatically.
extra_body={ "trainingType": "GlobalStandard" } # Change this value to your preferred training type. Other options are `Standard` and `Developer`.
)
job_id = response.id
# You can use the job ID to monitor the status of the fine-tuning job.
# The fine-tuning job takes some time to start and finish.
print("Job ID:", response.id)
print(response.model_dump_json(indent=2))
Hinweis
Wir empfehlen die Verwendung der Global Standard-Stufe für den Schulungstyp, da sie Kosteneinsparungen bietet und globale Kapazität für schnellere Warteschlangenzeiten verwendet. Sie kopiert jedoch Daten und Gewichtungen außerhalb des aktuellen Ressourcenbereichs. Wenn Datenresidenz eine Anforderung ist, verwenden Sie ein Modell, das Training im Standard-Tier unterstützt.
Sie können auch zusätzliche optionale Parameter wie Hyperparameter übergeben, um mehr Kontrolle über die Feinabstimmung zu erlangen. Für die erstschulung empfehlen wir die Verwendung der automatischen Standardwerte, die ohne Angabe dieser Parameter vorhanden sind.
Die derzeit unterstützten Hyperparameter für überwachte Feinabstimmungen sind:
| Namen | Typ | Beschreibung |
|---|---|---|
batch_size |
Ganzzahl | Die batchgröße, die für die Schulung verwendet werden soll. Die Batchgröße ist die Anzahl der Trainingsbeispiele, die für einen einzelnen Vorwärts- und Rückwärtsdurchlauf verwendet werden. Im Allgemeinen stellen wir fest, dass größere Batchgrößen tendenziell besser für größere Datasets funktionieren. Der Standardwert und 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 |
Anzahl | Der Lernrate-Multiplizierer, der für die Schulung verwendet werden soll. Die Feinabstimmungs-Lernrate ist die ursprüngliche Lernrate, die für das Vortraining verwendet wird, multipliziert mit diesem Wert. Größere Lernraten tendieren dazu, mit größeren Batch-Größen besser zu arbeiten. Es wird empfohlen, mit Werten im Bereich von 0.02 bis 0.2 zu experimentieren, um herauszufinden, welche die besten Ergebnisse liefern. Eine kleinere Lernrate kann nützlich sein, um Überanpassung zu vermeiden. |
n_epochs |
Ganzzahl | Die Anzahl der Epochen, für die das Modell trainiert werden soll. Eine Epoche bezeichnet einen vollständigen Zyklus durch den Schulungsdatensatz. |
seed |
Ganzzahl | Der Seed, der die Reproduzierbarkeit des Jobs steuert. Die Übergabe der gleichen Ausgangs- und Auftragsparameter sollte die gleichen Ergebnisse erzielen, kann aber in seltenen Fällen unterschiedlich sein. Wenn Sie keinen Seed angeben, wird ein Seed für Sie generiert. |
Um benutzerdefinierte Hyperparameter mit der 1.x-Version der OpenAI-Python-API festzulegen, stellen Sie sie als Teil von method bereit:
client.fine_tuning.jobs.create(
training_file="file-abc123",
model="gpt-4.1-2025-04-14",
suffix="my-model",
seed=105,
method={
"type": "supervised", # In this case, the job is using supervised fine-tuning.
"supervised": {
"hyperparameters": {
"n_epochs": 2
}
}
},
extra_body={ "trainingType": "GlobalStandard" }
)
Weitere Informationen zu unterstützten Hyperparametern für die anderen Anpassungsmethoden finden Sie in der Anleitung für die direkte Optimierung der Einstellungen und den Leitfaden zur Verstärkung der Feinabstimmung.
Schulungstyp
Wählen Sie die Schulungsebene basierend auf Ihrem Anwendungsfall und Budget aus:
Standard: Das Training erfolgt in der Region der aktuellen Foundry-Ressource und bietet Garantien für die Datenresidenz. Ideal für Workloads, bei denen Daten in einer bestimmten Region verbleiben müssen.
Global: Bietet günstigere Preise im Vergleich zu Standard, indem Kapazität über Ihre aktuelle Region hinaus verwendet wird. Daten und Gewichtungen werden in die Region kopiert, in der die Schulung stattfindet. Ideal, wenn die Datenresidenz keine Einschränkung ist und Sie kürzere Wartezeiten in der Warteschlange benötigen.
Entwickler (Vorschau): Bietet erhebliche Kosteneinsparungen durch die Verwendung von Leerlaufkapazität für Training. Es gibt keine Latenz- oder SLA-Garantien, sodass Aufträge in dieser Stufe automatisch unterbrochen und später wieder aufgenommen werden können. Es gibt auch keine Garantien für die Datenresidenz. Ideal für Experimente und preissensitive Workloads.
import openai
from openai import AzureOpenAI
base_uri = "https://<ACCOUNT-NAME>.services.ai.azure.com"
api_key = "<API-KEY>"
api_version = "2025-04-01-preview"
client = AzureOpenAI(
azure_endpoint=base_uri,
api_key=api_key,
api_version=api_version
)
try:
client.fine_tuning.jobs.create(
model="gpt-4.1-mini",
training_file="<FILE-ID>",
extra_body={"trainingType": "developerTier"}
)
except openai.APIConnectionError as e:
print("The server could not be reached")
print(e.__cause__) # An underlying exception, likely raised within httpx.
except openai.RateLimitError as e:
print("A 429 status code was received; we should back off a bit.")
except openai.APIStatusError as e:
print("Another non-200-range status code was received")
print(e.status_code)
print(e.response)
print(e.body)
Status des Feinabstimmungsauftrags überprüfen
response = client.fine_tuning.jobs.retrieve(job_id)
print("Job ID:", response.id)
print("Status:", response.status)
print(response.model_dump_json(indent=2))
Feinabstimmungsereignisse auflisten
Führen Sie den folgenden Befehl aus, um die einzelnen Anpassungen zu untersuchen, die während des Trainings generiert wurden. Bevor Sie den Befehl ausführen, müssen Sie möglicherweise ihre OpenAI-Clientbibliothek mithilfe der pip install openai --upgradeneuesten Version aktualisieren.
response = client.fine_tuning.jobs.list_events(fine_tuning_job_id=job_id, limit=10)
print(response.model_dump_json(indent=2))
Prüfpunkte auflisten
Der Abschluss jeder Trainingsepoche generiert einen Prüfpunkt. Ein Prüfpunkt ist eine voll funktionsfähige Version eines Modells, das sowohl bereitgestellt als auch als Zielmodell für nachfolgende Feinabstimmungsaufträge verwendet werden kann. Prüfpunkte können besonders nützlich sein, da sie vor dem Überpassen Momentaufnahmen bereitstellen können.
Wenn ein Feinabstimmungsauftrag abgeschlossen ist, stehen ihnen die drei neuesten Versionen des Modells zur Verfügung. Ihr fein abgestimmtes Modell stellt die letzte Epoche dar. Die beiden vorherigen Epochen sind als Prüfpunkte verfügbar.
Sie können den folgenden Befehl ausführen, um die Liste der Prüfpunkte abzurufen, die einem einzelnen Feinabstimmungsauftrag zugeordnet sind. Bevor Sie den Befehl ausführen, müssen Sie möglicherweise ihre OpenAI-Clientbibliothek mithilfe der pip install openai --upgradeneuesten Version aktualisieren.
response = client.fine_tuning.jobs.checkpoints.list(job_id)
print(response.model_dump_json(indent=2))
Analysieren Sie das angepasste Modell
Azure OpenAI fügt eine Ergebnisdatei mit dem Namen results.csv an jeden Feinabstimmungsjob an, nachdem er abgeschlossen wurde. Sie können die Ergebnisdatei verwenden, um die Schulungs- und Validierungsleistung Ihres angepassten Modells zu analysieren. Die Datei-ID für die Ergebnisdatei wird für jedes angepasste Modell aufgelistet. 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 Feinabstimmungsjob für Ihr angepasstes Modell angefügt ist. Anschließend wird das Python SDK verwendet, um die Datei zur Analyse in Ihr aktuelles 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 Headerzeile und eine Zeile für jeden Schulungsschritt enthält, den der Feinabstimmungs-Job ausführt. Die Ergebnisdatei enthält die folgenden Spalten:
| Spaltenname | Beschreibung |
|---|---|
step |
Die Nummer des Schulungsschritts. Ein Schulungsschritt stellt einen einzelnen Durchlauf, vorwärts und rückwärts, in einer Reihe von Schulungsdaten dar. |
train_loss |
Der Verlust des Trainingsbatches. |
train_mean_token_accuracy |
Der Prozentsatz der Token im Schulungsbatch, den das Modell korrekt vorhergesagt hat. Wenn beispielsweise die Batchgröße auf 3 festgelegt ist und Ihre Daten Abschlüsse [[1, 2], [0, 5], [4, 2]] enthalten, wird dieser Wert auf 0.83 (5 von 6) festgelegt, wenn das Modell [[1, 1], [0, 5], [4, 2]] vorhersagt. |
valid_loss |
Der Verlust für den Validierungsbatch. |
validation_mean_token_accuracy |
Der Prozentsatz der Token im Überprüfungsbatch, den das Modell korrekt vorhergesagt hat. Wenn beispielsweise die Batchgröße auf 3 festgelegt ist und Ihre Daten Abschlüsse [[1, 2], [0, 5], [4, 2]] enthalten, wird dieser Wert auf 0.83 (5 von 6) festgelegt, wenn das Modell [[1, 1], [0, 5], [4, 2]] vorhersagt. |
full_valid_loss |
Der Am Ende jeder Epoche berechnete Validierungsverlust. Wenn das Training gut geht, sollte der Verlust abnehmen. |
full_valid_mean_token_accuracy |
Die gültige mittlere Tokengenauigkeit, die am Ende jeder Epoche berechnet wird. Wenn die Schulung gut läuft, sollte die Tokengenauigkeit erhöht werden. |
Sie können die Daten auch in Ihrer results.csv-Datei als Plots im Microsoft Foundry-Portal anzeigen. Wenn Sie den Link für Ihr trainiertes Modell auswählen, 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 im Laufe der Zeit abnimmt und Ihre Genauigkeit zunimmt. Wenn Ihre Schulungs- und Validierungsdaten abweichen, sind Sie möglicherweise überfällig. Probieren Sie schulungen mit weniger Epochen oder einem kleineren Lernratenmultiplikator aus.
Bereitstellen eines optimierten Modells
Wenn Sie mit den Metriken Ihres Feintuning-Jobs zufrieden sind oder einfach nur zum Inferenzprozess wechseln möchten, müssen Sie das Modell implementieren.
Wenn Sie eine weitere Überprüfung durchführen, sollten Sie die Bereitstellung für Tests mithilfe einer Entwicklerbereitstellung in Betracht ziehen.
Im Gegensatz zu den vorherigen SDK-Befehlen müssen Sie die Steuerebenen-API für die Bereitstellung verwenden. Für diese Aufgabe ist eine separate Autorisierung, ein anderer API-Pfad und eine andere API-Version erforderlich.
| Variable | Definition |
|---|---|
token |
Ein Autorisierungstoken. Es gibt mehrere Möglichkeiten zum Generieren eines Autorisierungstokens. Die einfachste Methode zum ersten Testen besteht darin, Azure Cloud Shell über das portal Azure zu öffnen. Führen Sie az account get-access-token dann aus. Sie können dieses Token als temporäres Autorisierungstoken für API-Tests verwenden. Es wird empfohlen, dieses Token in einer neuen Umgebungsvariable zu speichern. |
subscription |
Die Abonnement-ID für die zugeordnete Azure OpenAI-Ressource. |
resource_group |
Der Ressourcengruppenname für Ihre Azure OpenAI-Ressource. |
resource_name |
Der Azure OpenAI-Ressourcenname. |
model_deployment_name |
Der benutzerdefinierte Name für die neue optimierte Modellbereitstellung. Auf diesen Namen wird während Chatabschlussanrufen in Ihrem Code verwiesen. |
fine_tuned_model |
Ihr fein abgestimmtes Modell. Rufen Sie diesen Wert aus den Ergebnissen des Feinabstimmungsprozesses im vorherigen Schritt ab. Es sieht aus wie gpt-4.1-2025-04-14.ft-b044a9d3cf9c4228b5d393567f693b83. Sie müssen den Wert zum deploy_data JSON-Code hinzufügen. Alternativ können Sie einen Prüfpunkt bereitstellen, indem Sie die Prüfpunkt-ID übergeben, die im Format ftchkpt-e559c011ecc04fc68eaa339d8227d02dangezeigt 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-41-ft" # Custom deployment name that you use to reference the model when making inference calls.
deploy_params = {'api-version': "2024-10-01"} # Control plane API version rather than the data plane API for this call
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 looks like gpt-4.1-2025-04-14.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())
Informationen zur regionsübergreifenden Bereitstellung und zur Verwendung des bereitgestellten Modells finden Sie unter Verwenden Ihres bereitgestellten fein abgestimmten Modells.
Wenn Sie bereit sind, in die Produktion bereitzustellen oder bestimmte Anforderungen an die Datenresidenz zu erfüllen, befolgen Sie den Bereitstellungsleitfaden.
Kontinuierliche Feinabstimmung durchführen
Nachdem Sie ein fein abgestimmtes Modell erstellt haben, sollten Sie das Modell im Laufe der Zeit durch weitere Feinabstimmung weiter verfeinern. Die kontinuierliche Feinabstimmung ist der iterative Prozess der Auswahl eines bereits feinabgestimmten Modells als Basismodell und es weiter auf neuen Trainingsbeispieldatensätzen zu optimieren. Kontinuierliche Feinabstimmung wird nur für OpenAI-Modelle unterstützt.
Wenn Sie eine Feinabstimmung für ein Modell durchführen möchten, das Sie zuvor optimiert haben, verwenden Sie den gleichen Prozess, der unter "Erstellen eines angepassten Modells" beschrieben ist. Anstatt jedoch den Namen eines generischen Basismodells anzugeben, geben Sie die ID des optimierten Modells an. Die ID des fein abgestimmten Modells sieht wie gpt-4.1-2025-04-14.ft-5fd1918ee65d4cd38a5dcf6835066ed7 aus.
response = client.fine_tuning.jobs.create(
training_file=training_file_id,
validation_file=validation_file_id,
model="gpt-4.1-2025-04-14.ft-5fd1918ee65d4cd38a5dcf6835066ed7"
)
job_id = response.id
# You can use the job ID to monitor the status of the fine-tuning job.
# The fine-tuning job takes some time to start and finish.
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 zwischen Iterationen Ihres fein abgestimmten Modells einfacher zu unterscheiden. Der suffix Parameter verwendet eine Zeichenfolge und wird festgelegt, um das fein abgestimmte Modell zu identifizieren. Mit der OpenAI-Python-API können Sie dem Namen Ihres fein abgestimmten Modells eine Zeichenfolge von bis zu 18 Zeichen hinzufügen.
Wenn Sie sich nicht sicher sind, welche ID Ihr vorhandenes verfeinertes Modell hat, können Sie diese Informationen auf der Seite Models von Microsoft Foundry finden. Alternativ können Sie eine List von Modellen für eine Azure OpenAI-Ressource mithilfe der REST-API generieren.
Bereinigen Ihrer Bereitstellungen, angepassten Modelle und Schulungsdateien
Wenn Sie Ihr angepasstes Modell nicht mehr benötigen, können Sie die Bereitstellung und das Modell löschen. Sie können auch die Schulungs- und Validierungsdateien löschen, die Sie bei Bedarf in den Dienst hochgeladen haben.
Löschen der Modellbereitstellung
Wichtig
Nach der Bereitstellung eines angepassten Modells wird die Bereitstellung gelöscht, wenn sie irgendwann für mehr als 15 Tage inaktiv ist. Die Bereitstellung eines angepassten Modells ist inaktiv , wenn das Modell vor mehr als 15 Tagen bereitgestellt wurde und während eines kontinuierlichen Zeitraums von 15 Tagen keine Chat-Fertigstellungen oder Antwort-API-Aufrufe an das Modell vorgenommen wurden.
Das Löschen einer inaktiven Bereitstellung entfernt das zugrunde liegende angepasste Modell nicht und beeinflusst es auch nicht. Das angepasste Modell kann jederzeit erneut bereitgestellt werden.
Wie in Azure OpenAI in Microsoft Foundry Models pricing beschrieben, entstehen jedem angepassten (fein abgestimmten) Modell, das bereitgestellt wird, stündliche Hostingkosten, unabhängig davon, ob Chatabschlusse oder Antwort-API-Aufrufe an das Modell getätigt werden. Weitere Informationen zum Planen und Verwalten von Kosten mit Azure OpenAI finden Sie unter Plan und Verwalten von Kosten für Azure OpenAI.
Sie können eine der folgenden Methoden verwenden, um die Bereitstellung für Ihr angepasstes Modell zu löschen:
Löschen Sie Ihr angepasstes Modell
Sie können Ihr angepasstes Modell mithilfe von Foundry löschen.
Hinweis
Sie können ein angepasstes Modell nicht löschen, wenn es über eine vorhandene Bereitstellung verfügt. Sie müssen die Modellbereitstellung löschen, bevor Sie das angepasste Modell löschen können.
Löschen Ihrer Schulungsdateien
Sie können optional Schulungs- und Validierungsdateien löschen, die Sie für Schulungen hochgeladen haben, und Ergebnisdateien, die während der Schulung generiert wurden, aus Ihrem Azure OpenAI-Abonnement. Sie können die folgenden Methoden verwenden, um Ihre Schulungs-, Validierungs- und Ergebnisdateien zu löschen:
Im folgenden Python Beispiel wird das Python SDK verwendet, um die Schulungs-, Validierungs- und Ergebnisdateien für Ihr angepasstes Modell zu löschen:
print('Checking for existing uploaded files.')
results = []
# Get the complete list of uploaded files in your subscription.
files = openai.File.list().data
print(f'Found {len(files)} total uploaded files in the subscription.')
# Enumerate all uploaded files. Extract the IDs for the
# files with file names that match your training dataset file and
# validation dataset file.
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 your files and delete each file.
print(f'Deleting already uploaded files.')
for id in results:
openai.File.delete(sid = id)
Voraussetzungen
- Lesen Sie den Leitfaden, wann die Feinabstimmung von Azure OpenAI verwendet werden soll.
- Sie benötigen ein Azure-Abonnement. Erstellen Sie eine kostenlos.
- Sie benötigen eine Azure OpenAI-Ressource. Weitere Informationen finden Sie unter Create a resource and deploy a model with Azure OpenAI.
- Für die Feinabstimmung ist die Rolle des Azure AI Owners erforderlich. Während Azure KI-Benutzer Modelle trainieren können (Feinabstimmung), können nur KI-Besitzer sie bereitstellen.
- Wenn Sie noch keinen Zugriff auf das Anzeigen von Kontingenten und die Bereitstellung von Modellen im Foundry-Portal haben, benötigen Sie weitere Berechtigungen.
Unterstützte Modelle
Um zu überprüfen, welche Regionen derzeit Feintuning unterstützen, lesen Sie den Artikel über Modelle.
Oder Sie können ein zuvor fein abgestimmtes Modell optimieren, formatiert als base-model.ft-{jobid}.
Überprüfen des Workflows für die REST-API
Nehmen Sie sich einen Moment Zeit, um den Feinabstimmungsworkflow für die Verwendung der REST-API und Python mit Azure OpenAI zu überprüfen:
- Bereiten Sie Ihre Schulungs- und Validierungsdaten vor.
- Wählen Sie ein Basismodell aus.
- Laden Sie Ihre Schulungsdaten hoch.
- Trainieren Sie Ihr neues angepasstes Modell.
- Überprüfen Sie den Status Ihres angepassten Modells.
- Stellen Sie Ihr angepasstes Modell für die Verwendung bereit.
- Verwenden Sie Ihr angepasstes Modell.
- Analysieren Sie optional Ihr angepasstes Modell auf Leistung und Anpassung.
Vorbereiten Ihrer Schulungs- und Validierungsdaten
Ihre Schulungs- und Validierungsdatensets bestehen aus Eingabe- und Ausgabebeispielen für die Ausführung des Modells.
Die von Ihnen verwendeten Schulungs- und Validierungsdaten müssen als JSON Lines (JSONL)-Dokument formatiert werden. Es muss auch im Konversationsformat formatiert sein, das von der Chat-Vervollständigungs-API verwendet wird.
Zusätzlich zum JSONL-Format müssen Schulungs- und Validierungsdatendateien in UTF-8 codiert werden und eine Bytereihenfolgemarke (BYTE-Order Mark, BOM) enthalten. Jede Datei muss kleiner als 512 MB groß sein.
Wenn Sie eine schrittweise Anleitung zur Feinabstimmung gpt-4o-mini-2024-07-18 wünschen, lesen Sie das Azure OpenAI Feinabstimmung Tutorial.
Beispieldateiformat
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who discovered Antarctica?"}, {"role": "assistant", "content": "Some chaps named Fabian Gottlieb von Bellingshausen and Mikhail Lazarev, as if they don't teach that in every school!"}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What is the biggest ocean?"}, {"role": "assistant", "content": "The Pacific Ocean. It's not like it's a small pond or anything."}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What is the largest planet?"}, {"role": "assistant", "content": "It's called Jupiter, you might have heard of it...or not."}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who painted the Mona Lisa?"}, {"role": "assistant", "content": "Oh, some obscure artist named Leonardo da Vinci. Not that he is famous or anything."}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the boiling point of water?"}, {"role": "assistant", "content": "Exciting fact of the day: it's 100 degrees Celsius. Life-changing, isn't it?"}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who wrote 'The Odyssey'?"}, {"role": "assistant", "content": "Oh, just some poet named Homer. Nothing special, really."}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What is the largest mammal?"}, {"role": "assistant", "content": "Blue Whale. Quite a big fish isn't it? Oh wait, it's not a fish!"}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the highest mountain peak?"}, {"role": "assistant", "content": "Everest. Brace yourself, it's not a walk in the park."}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "Who invented the telephone?"}, {"role": "assistant", "content": "A guy named Alexander Graham Bell. Bet you didn't guess that one!"}]}
{"messages": [{"role": "system", "content": "Clippy is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What is the distance from Earth to the Sun?"}, {"role": "assistant", "content": "About 93 million miles. Just a quick drive, really."}]}
Mehrfach-Chat-Dateiformat
Es werden auch mehrere Wendungen einer Unterhaltung in einer einzigen Zeile Ihrer JSONL-Schulungsdatei unterstützt. Um die Feinabstimmung für bestimmte Assistentennachrichten zu überspringen, fügen Sie das optionale weight Schlüssel-Wert-Paar hinzu. Derzeit kann weight auf 0 oder 1 gesetzt werden.
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the capital/major city 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}]}
Abschluss von Chats mit visuellen Funktionen
{"messages": [{"role": "user", "content": [{"type": "text", "text": "What's in this image?"}, {"type": "image_url", "image_url": {"url": "https://raw.githubusercontent.com/MicrosoftDocs/azure-ai-docs/main/articles/ai-services/openai/media/how-to/generated-seattle.png"}}]}, {"role": "assistant", "content": "The image appears to be a watercolor painting of a city skyline, featuring tall buildings and a recognizable structure often associated with Seattle, like the Space Needle. The artwork uses soft colors and brushstrokes to create a somewhat abstract and artistic representation of the cityscape."}]}
Erstellen Von Schulungs- und Validierungsdatensätzen
Je mehr Schulungsbeispiele Sie haben, desto besser. Feinabstimmungsvorgänge können erst mit mindestens 10 Schulungsbeispielen durchgeführt werden, aber so eine geringe Anzahl reicht nicht aus, um die Modellantworten spürbar zu beeinflussen. Eine bewährte Methode für eine erfolgreiche Feinabstimmung besteht darin, Hunderte, wenn nicht Tausende von Schulungsbeispielen bereitzustellen.
Im Allgemeinen kann die Verdoppelung der Datasetgröße zu einer linearen Erhöhung der Modellqualität führen. Bedenken Sie jedoch, dass sich Beispiele mit niedriger Qualität negativ auf die Leistung auswirken können. Wenn Sie das Modell auf eine große Menge interner Daten trainieren, ohne das Dataset zuerst auf die besten Qualitätsbeispiele zu beschränken, könnte Ihr Modell schlechter als erwartet abschneiden.
Hochladen Ihrer Schulungsdaten
Der nächste Schritt besteht darin, vorhandene vorbereitete Schulungsdaten auszuwählen oder neue vorbereitete Schulungsdaten hochzuladen, die beim Anpassen ihres Modells verwendet werden sollen. Nachdem Sie Ihre Schulungsdaten vorbereitet haben, können Sie Ihre Dateien in den Dienst hochladen. Es gibt zwei Möglichkeiten zum Hochladen von Schulungsdaten:
Für große Datendateien wird empfohlen, aus Blob Storage zu importieren. Große Dateien können instabil werden, wenn Sie sie über mehrteilige Formulare hochladen, da die Anforderungen atomar sind und nicht wiederholt oder fortgesetzt werden können. Weitere Informationen zu Blob Storage finden Sie unter What is Azure Blob Storage?.
Hochladen von Schulungsdaten
curl -X POST $AZURE_OPENAI_ENDPOINT/openai/v1/files \
-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 Überprüfungsdaten
curl -X POST $AZURE_OPENAI_ENDPOINT/openai/v1/files \
-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 Schulungs- und Validierungsdateien hochgeladen haben, können Sie mit dem Feinabstimmungsprozess beginnen. Der folgende Code zeigt ein Beispiel für das Erstellen eines neuen Feinabstimmungsauftrags mithilfe der REST-API.
In diesem Beispiel wird der Seed-Parameter übergeben. Der Seed steuert die Wiederholbarkeit des Jobs. Die Übergabe der gleichen Ausgangs- und Auftragsparameter sollte die gleichen Ergebnisse erzielen, kann aber in seltenen Fällen unterschiedlich sein. Wenn Sie keinen Seed angeben, wird einer für Sie generiert.
curl -X POST $AZURE_OPENAI_ENDPOINT/openai/v1/fine_tuning/jobs \
-H "Content-Type: application/json" \
-H "api-key: $AZURE_OPENAI_API_KEY" \
-d '{
"model": "gpt-4.1-2025-04-14",
"training_file": "<TRAINING_FILE_ID>",
"validation_file": "<VALIDATION_FILE_ID>",
"seed": 105
}'
Wenn Sie ein Modell optimieren, das globales Training unterstützt, können Sie den Trainingstyp mithilfe des extra_body benannten Arguments und der folgenden api-version=2025-04-01-preview angeben:
curl -X POST $AZURE_OPENAI_ENDPOINT/openai/fine_tuning/jobs?api-version=2025-04-01-preview \
-H "Content-Type: application/json" \
-H "api-key: $AZURE_OPENAI_API_KEY" \
-d '{
"model": "gpt-4.1-2025-04-14",
"training_file": "<TRAINING_FILE_ID>",
"validation_file": "<VALIDATION_FILE_ID>",
"seed": 105,
"trainingType": "globalstandard"
}'
Sie können auch zusätzliche optionale Parameter wie Hyperparameter übergeben, um größere Kontrolle über den Feinabstimmungsprozess zu haben. Für die erstschulung empfehlen wir die Verwendung der automatischen Standardwerte, die ohne Angabe dieser Parameter vorhanden sind.
Die derzeit unterstützten Hyperparameter für überwachte Fine-Tuning sind:
| Namen | Typ | Beschreibung |
|---|---|---|
batch_size |
Ganzzahl | Die batchgröße, die für die Schulung verwendet werden soll. Die Batchgröße ist die Anzahl der Schulungsbeispiele, die zum Trainieren eines einzelnen Vorwärts- und Rückwärtsdurchlaufs verwendet werden. Im Allgemeinen stellen wir fest, dass größere Batchgrößen tendenziell besser für größere Datasets funktionieren. Der Standardwert und 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 |
Nummer | Der Lernrate-Multiplizierer, der für die Schulung verwendet werden soll. Die Feinabstimmungs-Lernrate ist die ursprüngliche Lernrate, die für das Vortraining verwendet wurde, multipliziert mit diesem Wert. Größere Lernraten tendieren dazu, mit größeren Batchgrößen besser abzuschneiden. Es wird empfohlen, mit Werten im Bereich von 0.02 bis 0.2 zu experimentieren, um zu sehen, was die besten Ergebnisse liefert. Eine kleinere Lernrate kann nützlich sein, um Overfitting zu vermeiden. |
n_epochs |
Ganzzahl | Die Anzahl der Epochen, für die das Modell trainiert werden soll. Eine Epoche bezieht sich auf einen vollständigen Zyklus durch das Schulungsdatensatz. |
seed |
Ganzzahl | Der Seed, der die Reproduzierbarkeit des Auftrags steuert. |
Weitere Informationen zu unterstützten Hyperparametern für die anderen Anpassungsmethoden finden Sie in der Anleitung für die direkte Optimierung der Einstellungen und den Leitfaden zur Verstärkung der Feinabstimmung.
Auswählen eines Schulungstyps
Wählen Sie die Schulungsebene basierend auf Ihrem Anwendungsfall und Budget aus:
Standard: Die Schulung erfolgt in der Region der aktuellen Foundry-Ressource und bietet Garantien für die Datenresidenz. Ideal für Workloads, bei denen Daten in einer bestimmten Region verbleiben müssen.
Global: Bietet günstigere Preise im Vergleich zu Standard, indem Kapazität über Ihre aktuelle Region hinaus verwendet wird. Daten und Gewichtungen werden in die Region kopiert, in der die Schulung stattfindet. Ideal, wenn die Datenresidenz keine Einschränkung ist und Sie schnellere Wartezeiten benötigen.
Entwickler (Vorschau): Bietet erhebliche Kosteneinsparungen durch die Verwendung der Leerlaufkapazität für Training. Es gibt keine Latenz- oder SLA-Garantien, sodass Aufträge in dieser Stufe möglicherweise automatisch präemptiert und später fortgesetzt werden. Es gibt auch keine Datenhaltungsgarantien. Ideal für Experimente und preissensitive Workloads.
curl -X POST "https://<ACCOUNT-NAME>.openai.azure.com/openai/fine_tuning/jobs?api-version=2025-04-01-preview" -H "Content-Type: application/json" -H "api-key: <API-KEY>" -d "{"model": "gpt-4.1", "training_file": "<FILE_ID>", "hyperparameters": {"prompt_loss_weight": 0.1}, "trainingType": "developerTier"}"
Überprüfen des Status Ihres angepassten Modells
Nachdem Sie einen Feinabstimmungsauftrag gestartet haben, kann es einige Zeit dauern, bis er abgeschlossen ist. Möglicherweise wird Ihr Auftrag hinter anderen Aufträgen im System in die Warteschlange gestellt. Das Trainieren Ihres Modells kann je nach Modell und Datasetgröße Minuten oder Stunden dauern.
Beispielsweise wird im folgenden Beispiel die REST-API verwendet, um den Status Ihres Feinabstimmungsprozesses zu überprüfen. Im Beispiel werden Informationen zu Ihrem Auftrag mithilfe der auftrags-ID abgerufen, die aus dem vorherigen Beispiel zurückgegeben wird.
curl -X GET $AZURE_OPENAI_ENDPOINT/openai/v1/fine_tuning/jobs/<YOUR-JOB-ID> \
-H "api-key: $AZURE_OPENAI_API_KEY"
Feinabstimmungsereignisse auflisten
Um die einzelnen Feinabstimmungsereignisse zu untersuchen, die während des Trainings generiert wurden:
curl -X POST $AZURE_OPENAI_ENDPOINT/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/events \
-H "Content-Type: application/json" \
-H "api-key: $AZURE_OPENAI_API_KEY"
Prüfpunkte auflisten
Der Abschluss jeder Trainingsepoche generiert einen Prüfpunkt. Ein Prüfpunkt ist eine voll funktionsfähige Version eines Modells, das sowohl bereitgestellt als auch als Zielmodell für nachfolgende Feinabstimmungsaufträge verwendet werden kann. Prüfpunkte können besonders nützlich sein, da sie vor dem Überpassen Momentaufnahmen bereitstellen können.
Wenn ein Feinabstimmungsauftrag abgeschlossen ist, stehen ihnen die drei neuesten Versionen des Modells zur Verfügung. Ihr fein abgestimmtes Modell stellt die letzte Epoche dar. Die beiden vorherigen Epochen sind als Prüfpunkte verfügbar.
Sie können den folgenden Befehl ausführen, um die Liste der Prüfpunkte abzurufen, die einem einzelnen Feinabstimmungsauftrag zugeordnet sind:
curl -X POST $AZURE_OPENAI_ENDPOINT/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/checkpoints \
-H "Content-Type: application/json" \
-H "api-key: $AZURE_OPENAI_API_KEY"
Anhalten und Fortsetzen
Während des Trainings können Sie die Protokolle und Metriken einsehen und den Job bei Bedarf anhalten. Das Anhalten kann nützlich sein, wenn Metriken nicht konvergend sind oder wenn Sie der Meinung sind, dass das Modell nicht im richtigen Tempo lernt.
Nachdem der Trainingsjob angehalten wurde und die Sicherheitsbewertungen abgeschlossen sind, wird ein einsatzbereiter Prüfpunkt erstellt. Dieser Prüfpunkt steht Ihnen zur Verfügung, um ihn bereitzustellen und zu verwenden, oder Sie können den Auftrag fortsetzen, um ihn abzuschließen.
Der Pausenvorgang gilt nur für Aufträge, die für mindestens einen Schritt trainiert werden und sich im Zustand " Ausführen" befinden.
Anhalten
curl -X POST $AZURE_OPENAI_ENDPOINT/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/pause \
-H "Content-Type: application/json" \
-H "api-key: $AZURE_OPENAI_API_KEY"
Fortsetzen
curl -X POST $AZURE_OPENAI_ENDPOINT/openai/v1/fine_tuning/jobs/{fine_tuning_job_id}/resume \
-H "Content-Type: application/json" \
-H "api-key: $AZURE_OPENAI_API_KEY"
Kopieren eines Modells (Vorschau)
Sie können jetzt ein fein abgestimmtes prüfpunktiertes Modell aus einer Region in eine andere kopieren, in verschiedene Abonnements, aber innerhalb desselben Mandanten. Der Prozess verwendet dedizierte APIs, um effiziente und sichere Übertragungen zu gewährleisten. Dieses Feature ist derzeit nur mit der API und nicht über das Foundry-Portal verfügbar.
Nachdem das Modell aus Region A in Region B kopiert wurde, können Sie das Modell in Region B kontinuierlich optimieren und das Modell von diesem Standort aus bereitstellen.
Hinweis
Das Löschen des Modellprüfpunkts im Quellbereich bewirkt nicht, dass das Modell in der Zielregion gelöscht wird. Wenn Sie das Modell in beiden Regionen löschen möchten, nachdem es kopiert wurde, müssen Sie das Modell separat in den einzelnen Regionen bereitstellen.
Voraussetzungen
- Die Zielressource oder das Zielkonto sollte mindestens einen Feinabstimmungsauftrag aufweisen.
- Die Zielressource oder das Zielkonto sollte den öffentlichen Netzwerkzugriff nicht deaktivieren (zumindest während Sie die Kopieranforderung senden).
- Sie können nur in das Zielkonto kopieren, wenn das Konto, das die Kopie initiiert, über ausreichende Berechtigungen für den Zugriff auf das Zielkonto verfügt.
Konfigurieren von Berechtigungen
- Erstellen Sie eine vom Benutzer zugewiesene verwaltete Identität.
- Weisen Sie der Azure KI-Benutzerrolle Ihre vom Benutzer zugewiesene verwaltete Identität auf Ihrer Zielressource oder Ihrem Zielkonto zu.
- Weisen Sie die vom Benutzer zugewiesene verwaltete Identität Ihrem Quellressourcenkonto zu.
Kopieren des Modells
curl --request POST \
--url 'https://<aoai-resource>.openai.azure.com/openai/v1/fine_tuning/jobs/<ftjob>/checkpoints/<checkpoint-name>/copy' \
--header 'Content-Type: application/json' \
--header 'api-key: <api-key>' \
--header 'aoai-copy-ft-checkpoints: preview' \
--data '{
"destinationResourceId": "<resourceId>",
"region": "<region>"
}'
Da es sich um einen dauerhaften Vorgang handelt, überprüfen Sie den Status der fein abgestimmten Modellkopie, indem Sie die Prüfpunkt-ID des im POST Aufruf verwendeten Quellkontos angeben.
Überprüfen des Kopierstatus
curl --request GET \
--url 'https://<aoai-resource>.openai.azure.com//openai/v1/fine_tuning/jobs/<ftjob>/checkpoints/<checkpoint-name>/copy' \
--header 'Content-Type: application/json' \
--header 'api-key: <api-key>' \
--header 'aoai-copy-ft-checkpoints: preview'
Hinweis
Wenn Sie einen Prüfpunkt aus einem Quellkonto kopieren, wird derselbe Prüfpunktname im Zielkonto beibehalten. Stellen Sie sicher, dass Sie genau diesen Namen für Feinabstimmung, Bereitstellung oder einen anderen Vorgang im Zielkonto verwenden. Dieser Prüfpunkt wird nicht auf der Benutzeroberfläche oder in der list checkpoints API angezeigt.
Analysieren des angepassten Modells
Azure OpenAI fügt eine Ergebnisdatei mit dem Namen results.csv an jeden Feinabstimmungsauftrag an, nachdem er abgeschlossen wurde. Sie können die Ergebnisdatei verwenden, um die Schulungs- und Validierungsleistung Ihres angepassten Modells zu analysieren. Die Datei-ID für die Ergebnisdatei wird für jedes angepasste Modell aufgelistet. 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 dem Feinabstimmungsauftrag für Ihr angepasstes Modell zugeordnet ist. Anschließend wird die Datei zur Analyse in Ihr Arbeitsverzeichnis heruntergeladen.
curl -X GET "$AZURE_OPENAI_ENDPOINT/openai/v1/fine_tuning/jobs/<JOB_ID>" \
-H "api-key: $AZURE_OPENAI_API_KEY")
curl -X GET "$AZURE_OPENAI_ENDPOINT/openai/v1/files/<RESULT_FILE_ID>/content" \
-H "api-key: $AZURE_OPENAI_API_KEY" > <RESULT_FILENAME>
Die Ergebnisdatei ist eine CSV-Datei, die eine Kopfzeile und eine Zeile für jeden Schulungsschritt enthält, den der Feinabstimmungsauftrag ausführt. Die Ergebnisdatei enthält die folgenden Spalten:
| Spaltenname | Beschreibung |
|---|---|
step |
Die Nummer des Schulungsschritts. Ein Schulungsschritt stellt einen einzelnen Durchlauf, vorwärts und rückwärts, in einer Reihe von Schulungsdaten dar. |
train_loss |
Der Verlust für das Training-Batch. |
train_mean_token_accuracy |
Der Prozentsatz der Token im Schulungsbatch, den das Modell korrekt vorhergesagt hat. Wenn beispielsweise die Batchgröße auf 3 festgelegt ist und Ihre Daten Fertigstellungen [[1, 2], [0, 5], [4, 2]] enthalten, wird dieser Wert auf 0.83 (5 von 6) gesetzt, 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 Überprüfungsbatch, den das Modell korrekt vorhergesagt hat. Wenn beispielsweise die Batchgröße auf 3 festgelegt ist und Ihre Daten Abschlüsse [[1, 2], [0, 5], [4, 2]] enthalten, wird dieser Wert auf 0.83 (5 von 6) festgelegt, wenn das Modell [[1, 1], [0, 5], [4, 2]] vorhersagt. |
full_valid_loss |
Der Am Ende jeder Epoche berechnete Validierungsverlust. Wenn das Training gut geht, sollte der Verlust abnehmen. |
full_valid_mean_token_accuracy |
Die gültige mittlere Tokengenauigkeit, die am Ende jeder Epoche berechnet wird. Wenn die Schulung gut läuft, sollte die Tokengenauigkeit erhöht werden. |
Sie können die Daten in Ihrer results.csv Datei auch als Plots im Foundry-Portal anzeigen. Wenn Sie den Link für Ihr trainiertes Modell auswählen, 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 im Laufe der Zeit abnimmt und Ihre Genauigkeit zunimmt. Wenn Ihre Schulungs- und Validierungsdaten abweichen, sind Sie möglicherweise überfällig. Probieren Sie schulungen mit weniger Epochen oder einem kleineren Lernratenmultiplikator aus.
Bereitstellen eines optimierten Modells
Wenn Sie mit den Metriken Ihres Feintuning-Jobs zufrieden sind oder einfach nur zum Inferenzprozess wechseln möchten, müssen Sie das Modell implementieren.
Wenn Sie eine weitere Überprüfung durchführen, sollten Sie die Bereitstellung für Tests mithilfe einer Entwicklerbereitstellung in Betracht ziehen.
Wenn Sie bereit sind, für die Produktion einsatzbereit zu sein oder bestimmte Anforderungen an die Datenresidenz zu erfüllen, befolgen Sie den Bereitstellungsleitfaden.
| Variable | Definition |
|---|---|
token |
Ein Autorisierungstoken. Es gibt mehrere Möglichkeiten zum Generieren eines Autorisierungstokens. Die einfachste Methode zum ersten Testen besteht darin, Azure Cloud Shell über das portal Azure zu öffnen. Führen Sie az account get-access-token dann aus. Sie können dieses Token als temporäres Autorisierungstoken für API-Tests verwenden. Es wird empfohlen, dieses Token in einer neuen Umgebungsvariable zu speichern. |
subscription |
Die Abonnement-ID für die zugeordnete Azure OpenAI-Ressource. |
resource_group |
Der Ressourcengruppenname für Ihre Azure OpenAI-Ressource. |
resource_name |
Der Azure OpenAI-Ressourcenname. |
model_deployment_name |
Der benutzerdefinierte Name für die neue optimierte Modellbereitstellung. Auf diesen Namen wird während Chatabschlussanrufen in Ihrem Code verwiesen. |
fine_tuned_model |
Ihr fein abgestimmtes Modell. Rufen Sie diesen Wert aus den Ergebnissen des Feinabstimmungsprozesses im vorherigen Schritt ab. Es sieht aus wie gpt-4.1-2025-04-14.ft-b044a9d3cf9c4228b5d393567f693b83. Sie müssen den Wert zum deploy_data JSON-Code hinzufügen. Alternativ können Sie einen Prüfpunkt bereitstellen, indem Sie die Prüfpunkt-ID übergeben, die im Format ftchkpt-e559c011ecc04fc68eaa339d8227d02dangezeigt 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=2024-10-21" \
-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"
}
}
}'
Informationen zur regionsübergreifenden Bereitstellung und zur Verwendung des bereitgestellten Modells finden Sie unter Verwenden Ihres bereitgestellten fein abgestimmten Modells.
Kontinuierliche Feinabstimmung durchführen
Nachdem Sie ein fein abgestimmtes Modell erstellt haben, sollten Sie das Modell im Laufe der Zeit durch weitere Feinabstimmung weiter verfeinern. Kontinuierliche Feinabstimmung ist der iterative Prozess der Auswahl eines bereits fein abgestimmten Modells als Basismodell und es weiter auf neuen Trainingsbeispielen feinabzustimmen. Kontinuierliche Feinabstimmung wird nur für OpenAI-Modelle unterstützt.
Wenn Sie eine Feinabstimmung für ein Modell durchführen möchten, das Sie zuvor optimiert haben, verwenden Sie den gleichen Prozess, der unter "Erstellen eines angepassten Modells" beschrieben ist. Anstatt jedoch den Namen eines generischen Basismodells anzugeben, geben Sie die ID des optimierten Modells an. Die ID des fein abgestimmten Modells ist gpt-4.1-2025-04-14.ft-5fd1918ee65d4cd38a5dcf6835066ed7.
curl -X POST $AZURE_OPENAI_ENDPOINT/openai/v1/fine_tuning/jobs \
-H "Content-Type: application/json" \
-H "api-key: $AZURE_OPENAI_API_KEY" \
-d '{
"model": "gpt-4.1-2025-04-14.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 zwischen Iterationen Ihres fein abgestimmten Modells einfacher zu unterscheiden. Der suffix Parameter verwendet eine Zeichenfolge und wird festgelegt, um das fein abgestimmte Modell zu identifizieren. Das Suffix kann bis zu 40 Zeichen (a bis z, A bis Z, 0 bis 9, - und _) enthalten, die dem Namen Ihres feinabgestimmten Modells hinzugefügt werden.
Wenn Sie sich nicht sicher sind, ob Sie die ID Ihres vorhandenen fein abgestimmten Modells haben, finden Sie diese Informationen auf der Seite "Modelle " von Foundry. Alternativ können Sie eine List von Modellen für eine Azure OpenAI-Ressource mithilfe der REST-API generieren.
Bereinigen Sie Ihre Bereitstellungen, angepassten Modelle und Schulungsdateien
Wenn Sie Ihr angepasstes Modell nicht mehr benötigen, können Sie die Bereitstellung und das Modell löschen. Sie können auch die Schulungs- und Validierungsdateien löschen, die Sie bei Bedarf in den Dienst hochgeladen haben.
Löschen der Modellbereitstellung
Sie können eine der folgenden Methoden verwenden, um die Bereitstellung für Ihr angepasstes Modell zu löschen:
Löschen Sie Ihr angepasstes Modell
Sie können Ihr angepasstes Modell mithilfe von Foundry löschen.
Hinweis
Sie können ein angepasstes Modell nicht löschen, wenn es über eine vorhandene Bereitstellung verfügt. Sie müssen die Modellbereitstellung löschen, bevor Sie das angepasste Modell löschen können.
Löschen Ihrer Schulungsdateien
Sie können optional Schulungs- und Validierungsdateien löschen, die Sie für Schulungen hochgeladen haben, und Ergebnisdateien, die während der Schulung generiert wurden, aus Ihrem Azure OpenAI-Abonnement. Sie können foundry verwenden, um die Dateien zu löschen.