Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Lär dig hur du finjusterar Azure OpenAI-modeller i Azure AI Foundry för dina datauppsättningar och användningsfall. Finjustering möjliggör:
- Resultat av högre kvalitet än vad du bara kan få från prompt engineering
- Möjligheten att träna på fler exempel än vad som får plats i en modells maximala kontextgräns för begäranden.
- Tokenbesparingar tack vare kortare uppmaningar
- Begäranden med kortare svarstid, särskilt när du använder mindre modeller.
Till skillnad från few-shot-inlärning förbättrar finjustering modellen genom att träna på fler exempel än vad som ryms i en prompt. Eftersom vikterna anpassas efter din uppgift inkluderar du färre exempel eller instruktioner, vilket minskar token per anrop och potentiellt sänker kostnader och svarstider.
Vi använder LoRA, eller låg rankningsanpassning, för att finjustera modeller på ett sätt som minskar deras komplexitet utan att avsevärt påverka deras prestanda. Den här metoden fungerar genom att approximera den ursprungliga högrankade matrisen med en lägre rankning, vilket innebär att endast finjustera en mindre delmängd av viktiga parametrar under den övervakade träningsfasen, vilket gör modellen mer hanterbar och effektiv. För användare gör detta träningen snabbare och billigare än andra tekniker.
I den här artikeln lär du dig att:
- Finjustera via portalen, Python SDK och REST.
- Välj lämpliga datauppsättningar och format.
- Övervaka jobbstatus och hämta resultat.
- Distribuera och utvärdera en finjusterad modell.
- Iterera baserat på utvärderingsfeedback.
Det finns två unika finjusteringsupplevelser i Azure AI Foundry-portalen:
- Hubb-/projektvy – stöder finjusteringsmodeller från flera leverantörer, inklusive Azure OpenAI, Meta Llama, Microsoft Phi osv.
- Azure OpenAI-centrerad vy – stöder endast finjustering av Azure OpenAI-modeller, men har stöd för ytterligare funktioner som förhandsgranskningsintegrering av vikter och fördomar (W&B).
Om du bara finjusterar Azure OpenAI-modeller rekommenderar vi den Azure OpenAI-centrerad finjusteringsupplevelse som är tillgänglig genom att gå till https://ai.azure.com/resource/overview.
Viktigt!
Objekt markerade (förhandsversion) i den här artikeln är för närvarande i offentlig förhandsversion. Den här förhandsversionen tillhandahålls utan ett serviceavtal och vi rekommenderar det inte för produktionsarbetsbelastningar. Vissa funktioner kanske inte stöds eller kan vara begränsade. Mer information finns i Kompletterande villkor för användning av Microsoft Azure-förhandsversioner.
Förutsättningar
- Läs finjusteringsguiden När du ska använda Azure OpenAI.
- Ett Azure-abonnemang. Skapa en kostnadsfritt.
- En Azure OpenAI-resurs som finns i en region som stöder finjustering av Azure OpenAI-modellen. I tabellen Modellsammanfattning och regiontillgänglighet finns en lista över tillgängliga modeller efter region och funktioner som stöds. Mer information finns i Skapa en resurs och distribuera en modell med Azure OpenAI.
- Finjusteringsåtkomst kräver Cognitive Services OpenAI-deltagare.
- Om du inte redan har åtkomst till att visa kvoten och distribuerar modeller i Azure AI Foundry-portalen behöver du ytterligare behörigheter.
Modeller som stöds
Se sidan modeller för att kontrollera vilka regioner som för närvarande stöder finjustering.
Eller så kan du finjustera en tidigare finjusterad modell, formaterad som base-model.ft-{jobid}.
Granska arbetsflödet för Azure AI Foundry-portalen
Ta en stund att granska arbetsflödet för finjustering för att använda Azure AI Foundry-portalen:
- Förbered dina tränings- och valideringsdata.
- Använd dialogrutan Skapa en finjusterad modell i Azure AI Foundry-portalen för att träna din anpassade modell.
- Välj en träningsmetod.
- Välj en basmodell.
- Välj din träningstyp
- Välj dina träningsdata.
- Du kan också välja dina valideringsdata.
- Du kan också konfigurera uppgiftsparametrar för ditt finjusteringsjobb.
- Du kan också aktivera automatisk distribution för den resulterande anpassade modellen.
- Granska dina val och träna din nya anpassade modell.
- Kontrollera statusen för din anpassade finjusterade modell.
- Distribuera din anpassade modell för användning.
- Använd din anpassade modell.
- Du kan också analysera din anpassade modell för prestanda och passform.
Förbereda dina tränings- och valideringsdata
Dina träningsdata och valideringsdatauppsättningar består av indata och utdataexempel för hur du vill att modellen ska fungera.
De tränings- och valideringsdata som du använder måste formateras som ett JSON Lines-dokument (JSONL) och måste formateras i det konversationsformat som används av API:et för chattavslut .
Vi rekommenderar vanligtvis att du använder instruktionerna och anvisningarna som du hittade fungerade bäst i varje träningsexempel. Detta hjälper dig att få bästa resultat, särskilt om du har färre än hundra exempel.
Exempel på filformat
{"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."}]}
Filformat för flergångschatt i Azure OpenAI
Det finns också stöd för flera konversationer på en enda rad i jsonl-träningsfilen. Om du vill hoppa över finjustering av specifika assistentmeddelanden lägger du till det valfria weight nyckelvärdeparet. För närvarande weight kan ställas in på 0 eller 1.
{"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}]}
Chatten slutförs med vision
{"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."}]}
Förutom JSONL-formatet måste tränings- och valideringsdatafiler kodas i UTF-8 och innehålla ett byteordningsmärke (BOM). Filen får vara mindre än 512 MB.
Storleksöverväganden för datauppsättningar
Ju fler träningsexempel du har, desto bättre. Finjusteringsjobb fortsätter inte utan minst 10 träningsexempel, men ett så litet antal räcker inte för att märkbart påverka modellsvar. Det är bästa praxis att tillhandahålla hundratals, om inte tusentals, träningsexempel för att lyckas. Vi rekommenderar att du börjar med 50 välgjorda träningsdata.
I allmänhet kan en fördubbling av datamängdens storlek leda till en linjär ökning av modellkvaliteten. Men kom ihåg att exempel med låg kvalitet kan påverka prestanda negativt. Om du tränar modellen på en stor mängd interna data, utan att först rensa datamängden för endast exempel av högsta kvalitet, kan du få en modell som presterar mycket sämre än förväntat.
Skapa en finjusterad modell
Azure AI Foundry-portalen innehåller dialogrutan Skapa en finjusterad modell , så på ett ställe kan du enkelt skapa och träna en finjusterad modell för din Azure-resurs.
Gå till Azure AI Foundry-portalen på https://ai.azure.com/ och logga in med autentiseringsuppgifter som har åtkomst till din Azure OpenAI-resurs. Under inloggningsarbetsflödet väljer du lämplig katalog, Azure-prenumeration och Azure OpenAI-resurs.
I Azure AI Foundry-portalen bläddrar du till fönstret Verktyg > Finjustering och väljer Finjustera modell.
Välj en modell som ska finjusteras och välj sedan Nästa för att fortsätta.
Nu bör du se dialogrutan Skapa en finjusterad modell .
Välj din träningsmetod
Det första steget är att bekräfta modellvalet och träningsmetoden. Alla modeller stöder inte alla träningsmetoder.
- Övervakad finjustering (SFT): stöds av alla icke-resonemangsmodeller.
- Direktpreferensoptimering (förhandsversion) (DPO): stöds av GPT-4o.
- Finjustering av förstärkning (Förhandsversion) (RFT): stöds av resonemangsmodeller som o4-mini.
När du väljer modellen kan du också välja en tidigare finjusterad modell.
Välja träningstyp
Välj den träningsnivå som du vill använda för ditt finjusteringsjobb:
- Standard: träning sker i den aktuella Azure OpenAI-resursens region, vilket ger datahemvist.
- Global (förhandsversion): mer prisvärd utbildning per token, erbjuder inte datahemvist.
Om du inte har några krav på datahemvist är Global ett bra val för att dra nytta av utbildningskapaciteten utanför din aktuella region. I den offentliga förhandsversionen kanske Global inte är tillgängligt i din aktuella region. Konsult
I vissa fall kanske Standard inte är tillgängligt i din aktuella region. Om du behöver datalagring, kontrollera de listade regionerna i modelltillgängligheten för den valda modellen.
Välj din träningsdata
Nästa steg är att antingen välja befintliga förberedda träningsdata eller ladda upp nya förberedda träningsdata som ska användas när du anpassar din modell genom att välja Lägg till träningsdata.
Dialogrutan Träningsdata visar befintliga, tidigare uppladdade datamängder och innehåller även alternativ för att ladda upp nya träningsdata.
Om dina träningsdata redan har laddats upp till tjänsten väljer du Filer från ansluten AI-resurs.
- Välj filen från rullgardinslistan som visas.
Om du vill ladda upp nya träningsdata använder du något av följande alternativ:
- Välj Ladda upp filer för att ladda upp träningsdata från en lokal fil.
- Välj Azure blob eller andra delade webbplatser för att importera träningsdata från Azure Blob eller en annan delad webbplats.
För stora datafiler rekommenderar vi att du importerar från en Azure Blob-lagring. Stora filer kan bli instabila när de laddas upp via flerdelade formulär eftersom förfrågningarna är atomära och inte kan försökas igen eller återupptas. För mer information om Azure Blob Storage, se Vad är Azure Blob Storage?
Anmärkning
Träningsdatafiler måste formateras som JSONL-filer, kodade i UTF-8 med ett byteordningsmärke (BOM). Filen får vara mindre än 512 MB.
Välj dina valideringsdata (valfritt)
Om du har en valideringsdatauppsättning väljer du Lägg till träningsdata. Du kan antingen välja befintliga förberedda valideringsdata eller ladda upp nya förberedda valideringsdata som ska användas när du anpassar din modell.
Dialogrutan Valideringsdata visar alla befintliga, tidigare uppladdade tränings- och valideringsdatauppsättningar och innehåller alternativ som du kan ladda upp nya valideringsdata med.
Om dina valideringsdata redan har laddats upp till tjänsten, välj Välj dataset.
- Välj filen från listan som visas i Validation data-rutan.
Om du vill ladda upp nya valideringsdata använder du något av följande alternativ:
- Välj Lokal fil för att ladda upp valideringsdata från en lokal fil.
- Välj Azure blob eller andra delade webbplatser för att importera valideringsdata från Azure Blob eller en annan delad webbplats.
För stora datafiler rekommenderar vi att du importerar från en Azure Blob-lagring. Stora filer kan bli instabila när de laddas upp via flerdelade formulär eftersom förfrågningarna är atomära och inte kan försökas igen eller återupptas.
Anmärkning
Precis som träningsdatafiler måste valideringsdatafiler formateras som JSONL-filer, kodade i UTF-8 med byteordningsmärke (BOM). Filen får vara mindre än 512 MB.
Gör din modell identifierbar (valfritt)
Vi rekommenderar också att du inkluderar en suffix parameter för att göra det enklare att skilja mellan olika iterationer av din finjusterade modell. En suffix tar en sträng på upp till 18 tecken och används när den resulterande finjusterade modellen namnges.
Konfigurera träningsparametrar (valfritt)
Du kan ange ett valfritt frö och justera ytterligare hyperparametrar.
Fröet styr reproducerbarheten för arbetet. Att skicka in samma parametrar för start- och jobb bör ge samma resultat, men kan skilja sig i sällsynta fall. Om ett frö inte anges genereras ett slumpmässigt åt dig.
Följande hyperparametrar är tillgängliga för justering via Azure AI Foundry-portalen:
| Namn | Typ | Beskrivning |
|---|---|---|
| Batchstorlek | integer | Storleken på batchen som ska användas för träning. Batchstorleken är antalet träningsprover som används för att träna ett enskilt framåt- och bakåtpass. I allmänhet har vi upptäckt att större batchstorlekar tenderar att fungera bättre för större datamängder. Standardvärdet samt det maximala värdet för den här egenskapen är specifika för en basmodell. En större batchstorlek innebär att modellparametrar uppdateras mer sällan, men med lägre varians. |
| Multiplikator för inlärningshastighet | nummer | Den inlärningsfrekvensmultiplikator som ska användas för träning. Inlärningshastigheten för finjustering är den ursprungliga inlärningshastigheten som används för förträning multiplicerad med detta värde. Större inlärningsfrekvenser tenderar att fungera bättre med större batchstorlekar. Vi rekommenderar att du experimenterar med värden i intervallet 0,02 till 0,2 för att se vad som ger bäst resultat. En mindre inlärningshastighet kan vara användbar för att undvika överanpassning. |
| Antal epoker | integer | Antalet epoker som modellen ska tränas i. En epok refererar till en fullständig cykel genom träningsdatauppsättningen. |
Aktivera automatisk distribution (valfritt)
Om du vill spara tid kan du aktivera automatisk distribution för den resulterande modellen. Om träningen har slutförts distribueras modellen med den valda distributionstypen. Distributionen namnges baserat på det unika namn som genererats för din anpassade modell och det valfria suffixet som du kanske angav tidigare.
Anmärkning
Endast distributioner av Global Standard och Utvecklare stöds för närvarande för automatisk distribution. Inget av dessa alternativ tillhandahåller datahemvist. Mer information finns i dokumentationen för distributionstyp .
Granska dina val och träna din modell
Granska dina val och välj Skicka för att börja träna din nya finjusterade modell.
Kontrollera statusen för din anpassade modell
När du har skickat in ditt finjusteringsjobb visas en sida med information om din finjusterade modell. Du hittar status och mer information om din finjusterade modell på sidan Finjustering i Azure AI Foundry-portalen.
Ditt jobb kan bli placerat i kö bakom andra jobb i systemet. Att träna din modell kan ta minuter eller timmar beroende på modellens och datamängdens storlek.
Kontrollpunkter
När varje träningsepooch har slutförts genereras en kontrollpunkt. En kontrollpunkt är en fullt fungerande version av en modell som både kan distribueras och användas som målmodell för efterföljande finjusteringsjobb. Kontrollpunkter kan vara särskilt användbara eftersom de kan ge ögonblicksbilder innan överanpassning sker. När ett finjusteringsjobb har slutförts har du de tre senaste versionerna av modellen som är tillgängliga för distribution.
Anmärkning
När du kopierar en kontrollpunkt från ett källkonto behålls samma kontrollpunktsnamn i målkontot. Se till att du använder det här exakta namnet för finjustering, distribution eller någon annan åtgärd i målkontot. Den här kontrollpunkten visas inte i användargränssnittet eller i API:et list checkpoints .
Pausa och återuppta
Du kan spåra förloppet i båda finjusteringsvyerna i AI Foundry-portalen. Du kommer att se att ditt jobb går igenom samma statusar som vanliga finjusteringsjobben (i kö, körs, slutfört).
Du kan också granska resultatfilerna medan träningsprocessen körs, för att få en inblick i förloppet och se om processen fortsätter som förväntat.
Anmärkning
Under träningen kan du visa loggar och mått och pausa jobbet efter behov. Pausning kan vara användbart om måtten inte konvergerar eller om du känner att modellen inte lär sig i rätt takt. När träningsjobbet har pausats skapas en distribuerbar kontrollpunkt när säkerhetsutvärderingarna har slutförts. Den här kontrollpunkten är tillgänglig för att implementera och använda för inferens eller för att återuppta arbetet och slutföra det. Pausåtgärden gäller endast för jobb som har tränats i minst ett steg och är i körningstillstånd .
Analysera din anpassade modell
Azure OpenAI bifogar en resultatfil med namnet results.csv till varje finjusteringsjobb när det är klart. Du kan använda resultatfilen för att analysera tränings- och valideringsprestanda för din anpassade modell. Fil-ID:t för resultatfilen visas för varje anpassad modell i kolumnen Resultatfil-ID i fönstret Modeller för Azure AI Foundry-portalen. Du kan använda fil-ID:t för att identifiera och ladda ned resultatfilen från fönstret Datafiler i Azure AI Foundry-portalen.
Resultatfilen är en CSV-fil som innehåller en rubrikrad och en rad för varje träningssteg som utförs av finjusteringsjobbet. Resultatfilen innehåller följande kolumner:
| Kolumnnamn | Beskrivning |
|---|---|
step |
Antalet träningssteg. Ett träningssteg representerar ett enda pass, framåt och bakåt, på en batch med träningsdata. |
train_loss |
Förlusten för träningsomgången. |
train_mean_token_accuracy |
Procentandelen tokens i träningsbatchen som är korrekt predikterade av modellen. Om batchstorleken till exempel är inställd på 3 och dina data innehåller slutföranden [[1, 2], [0, 5], [4, 2]]anges det här värdet till 0,83 (5 av 6) om modellen förutsade [[1, 1], [0, 5], [4, 2]]. |
valid_loss |
Misslyckandet för valideringsbatchen. |
validation_mean_token_accuracy |
Procentandelen token i valideringsbatchen som är korrekt förutsagd av modellen. Om batchstorleken till exempel är inställd på 3 och dina data innehåller slutföranden [[1, 2], [0, 5], [4, 2]]anges det här värdet till 0,83 (5 av 6) om modellen förutsade [[1, 1], [0, 5], [4, 2]]. |
full_valid_loss |
Valideringsförlusten som beräknas i slutet av varje epok. När träningen går bra bör förlusten minska. |
full_valid_mean_token_accuracy |
Den giltiga genomsnittliga tokennoggrannheten som beräknas i slutet av varje epok. När träningen går bra bör tokennoggrannheten öka. |
Du kan också visa data i din results.csv-fil som diagram i Azure AI Foundry-portalen. Välj länken för din tränade modell så visas tre diagram: förlust, genomsnittlig tokennoggrannhet och tokennoggrannhet. Om du angav valideringsdata visas båda datauppsättningarna i samma diagram.
Observera hur din förlust minskar över tid, och att din noggrannhet ökar. Om du ser en skillnad mellan dina tränings- och valideringsdata kan det tyda på att du överanpassar. Prova att träna med färre epoker eller en mindre inlärningstaktsmultiplikator.
Distribuera en finjusterad modell
När du är nöjd med mätvärdena från din finjusteringsuppgift, eller om du bara vill gå vidare till inference, måste du distribuera modellen.
Om du distribuerar för ytterligare validering bör du överväga att distribuera för testning med hjälp av en utvecklardistribution.
Om du är redo att distribuera för produktion eller har särskilda behov av datahemvist följer du vår distributionsguide.
Använd en implementerad finjusterad modell
När din finjusterade modell har distribuerats kan du använda den som vilken annan distribuerad modell som helst. Du kan använda Playground i Azure AI Foundry för att experimentera med din nya distribution. Du kan också använda REST-API:et för att anropa din finjusterade modell från ditt eget program. Du kan till och med börja använda den här nya finjusterade modellen i ditt promptflöde för att skapa ditt generativa AI-program.
Anmärkning
För chattmodeller måste systemmeddelandet som du använder för att vägleda din finjusterade modell (oavsett om det är distribuerat eller tillgängligt för testning på lekplatsen) vara detsamma som det systemmeddelande som du använde för träning. Om du använder ett annat systemmeddelande kanske modellen inte fungerar som förväntat.
Kontinuerlig finjustering
När du har skapat en finjusterad modell kanske du vill fortsätta att förfina modellen över tid genom ytterligare finjustering. Kontinuerlig finjustering är den iterativa processen att välja en redan finjusterad modell som basmodell och finjustera den ytterligare på nya uppsättningar träningsexempel.
Om du vill finjustera en modell som du tidigare har finjusterat använder du samma process som beskrivs i skapandet av en finjusterad modell , men i stället för att ange namnet på en allmän basmodell anger du din redan finjusterade modell. En anpassad finjusterad modell skulle se ut som gpt-4o-2024-08-06.ft-d93dda6110004b4da3472d96f4dd4777-ft
Rensa dina distributioner, anpassade modeller och träningsfiler
När du är klar med din anpassade modell kan du ta bort distributionen och modellen. Du kan också ta bort de tränings- och valideringsfiler som du laddade upp till tjänsten om det behövs.
Ta bort modelldistributionen
Viktigt!
När du har distribuerat en anpassad modell tas distributionen bort om distributionen förblir inaktiv i mer än femton (15) dagar. Distributionen av en anpassad modell är inaktiv om modellen distribuerades för mer än femton (15) dagar sedan och inga slutföranden eller samtal om chattavslut gjordes till den under en kontinuerlig 15-dagarsperiod.
Borttagningen av en inaktiv distribution tar inte bort eller påverkar inte den underliggande anpassade modellen, och den anpassade modellen kan distribueras om när som helst. Såsom det beskrivs i Prissättningen för Azure OpenAI i Azure AI Foundry Models, medför varje anpassad (finjusterad) modell som distribueras en timkostnad för drift oavsett om slutföranden eller chattkompletteringar görs med modellen. Mer information om hur du planerar och hanterar kostnader med Azure OpenAI finns i vägledningen i Planera för att hantera kostnader för Azure OpenAI.
Du kan ta bort distributionen för din anpassade modell i fönstret Distributioner i Azure AI Foundry-portalen. Välj den distribution som ska tas bort och välj sedan Ta bort för att ta bort distributionen.
Ta bort din anpassade modell
Du kan ta bort en anpassad modell i fönstret Modeller i Azure AI Foundry-portalen. Välj den anpassade modell som ska tas bort från fliken Anpassade modeller och välj sedan Ta bort för att ta bort den anpassade modellen.
Anmärkning
Du kan inte ta bort en anpassad modell om den har en befintlig distribution. Du måste först ta bort modelldistributionen innan du kan ta bort din anpassade modell.
Ta bort dina träningsfiler
Du kan också ta bort tränings- och valideringsfiler som du laddade upp för träning och resultatfiler som genererats under träningen i fönstret Hanteringsdata>+ index i Azure AI Foundry-portalen. Välj den fil som ska tas bort och välj sedan Ta bort för att ta bort filen.
Förutsättningar
- Läs finjusteringsguiden När du ska använda Azure OpenAI.
- Ett Azure-abonnemang. Skapa en kostnadsfritt.
- En Azure OpenAI-resurs. Mer information finns i Skapa en resurs och distribuera en modell med Azure OpenAI.
- Följande Python-bibliotek:
os,json,requests, .openai - OpenAI Python-biblioteket.
- Finjusteringsåtkomst kräver Cognitive Services OpenAI-deltagare.
- Om du inte redan har åtkomst till att visa kvoten och distribuerar modeller i Azure AI Foundry-portalen behöver du ytterligare behörigheter.
Modeller som stöds
Se sidan modeller för att kontrollera vilka regioner som för närvarande stöder finjustering.
Eller så kan du finjustera en tidigare finjusterad modell, formaterad som base-model.ft-{jobid}.
Granska arbetsflödet för Python SDK
Ta en stund att granska arbetsflödet för finjustering för att använda Python SDK med Azure OpenAI:
- Förbered dina tränings- och valideringsdata.
- Välj en basmodell.
- Ladda upp dina träningsdata.
- Träna din nya anpassade modell.
- Kontrollera statusen för din anpassade modell.
- Distribuera din anpassade modell för användning.
- Använd din anpassade modell.
- Du kan också analysera din anpassade modell för prestanda och passform.
Förbereda dina tränings- och valideringsdata
Dina träningsdata och valideringsdatauppsättningar består av indata och utdataexempel för hur du vill att modellen ska fungera.
De tränings- och valideringsdata som du använder måste formateras som ett JSON Lines-dokument (JSONL) och måste formateras i det konversationsformat som används av API:et för chattavslut .
Om du vill ha en stegvis genomgång av finjustering gpt-4o-mini-2024-07-18 kan du läsa självstudiekursen för finjustering i Azure OpenAI
Exempel på filformat
{"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."}]}
Filformat för flerstegs chatt
Det finns också stöd för flera konversationer på en enda rad i jsonl-träningsfilen. Om du vill hoppa över finjustering av specifika assistentmeddelanden lägger du till det valfria weight nyckelvärdeparet. För närvarande weight kan ställas in på 0 eller 1.
{"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}]}
Chatten slutförs med vision
{"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."}]}
Förutom JSONL-formatet måste tränings- och valideringsdatafiler kodas i UTF-8 och innehålla ett byteordningsmärke (BOM). Filen får vara mindre än 512 MB.
Skapa dina tränings- och valideringsdatauppsättningar
Ju fler träningsexempel du har, desto bättre. Finjusteringsjobb fortsätter inte utan minst 10 träningsexempel, men ett så litet antal räcker inte för att märkbart påverka modellsvar. Det är bästa praxis att tillhandahålla hundratals, om inte tusentals, träningsexempel för att lyckas.
I allmänhet kan en fördubbling av datamängdens storlek leda till en linjär ökning av modellkvaliteten. Men kom ihåg att exempel med låg kvalitet kan påverka prestanda negativt. Om du tränar modellen på en stor mängd interna data, utan att först rensa datamängden för endast exempel av högsta kvalitet, kan du få en modell som presterar mycket sämre än förväntat.
Ladda upp dina träningsdata
Nästa steg är att antingen välja befintliga förberedda träningsdata eller ladda upp nya förberedda träningsdata som ska användas när du anpassar din modell. När du har förberett dina träningsdata kan du ladda upp dina filer till tjänsten. Det finns två sätt att ladda upp träningsdata:
För stora datafiler rekommenderar vi att du importerar från en Azure Blob-lagring. Stora filer kan bli instabila när de laddas upp via flerdelade formulär eftersom förfrågningarna är atomära och inte kan försökas igen eller återupptas. Mer information om Azure Blob Storage finns i Vad är Azure Blob Storage?
Anmärkning
Träningsdatafiler måste formateras som JSONL-filer, kodade i UTF-8 med ett byteordningsmärke (BOM). Filen får vara mindre än 512 MB.
I följande Python-exempel laddas lokala tränings- och valideringsfiler upp med hjälp av Python SDK och de returnerade fil-ID:t hämtas.
# Upload fine-tuning files
import os
from openai import OpenAI
client = OpenAI(
api_key = os.getenv("AZURE_OPENAI_API_KEY"),
base_url="https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/"
)
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)
Skapa en anpassad modell
När du har laddat upp dina tränings- och valideringsfiler är du redo att starta finjusteringsjobbet.
Följande Python-kod visar ett exempel på hur du skapar ett nytt finjusterat jobb med 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 base model name.
suffix="my-model", # Custom suffix for naming the resulting model. Note that in Azure OpenAI the model 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))
Om du finjusterar en modell som stöder Global träning kan du ange träningstypen genom att använda det namngivna argumentet extra_body.
response = client.fine_tuning.jobs.create(
training_file=training_file_id,
validation_file=validation_file_id,
model="gpt-4.1-2025-04-14",
suffix="my-model",
seed=105,
extra_body={ "trainingType": "globalstandard" }
)
job_id = response.id
Du kan också skicka ytterligare valfria parametrar som hyperparametrar för att få större kontroll över finjusteringsprocessen. För inledande träning rekommenderar vi att du använder de automatiska standardvärden som finns utan att ange dessa parametrar.
De aktuella hyperparametrar som stöds för övervakad finjustering är:
| Namn | Typ | Beskrivning |
|---|---|---|
batch_size |
integer | Storleken på batchen som ska användas för träning. Batchstorleken är antalet träningsprover som används för att träna ett enskilt framåt- och bakåtpass. I allmänhet har vi upptäckt att större batchstorlekar tenderar att fungera bättre för större datamängder. Standardvärdet samt det maximala värdet för den här egenskapen är specifika för en basmodell. En större batchstorlek innebär att modellparametrar uppdateras mer sällan, men med lägre varians. |
learning_rate_multiplier |
nummer | Den inlärningsfrekvensmultiplikator som ska användas för träning. Inlärningshastigheten för finjustering är den ursprungliga inlärningshastigheten som används för förträning multiplicerad med detta värde. Större inlärningsfrekvenser tenderar att fungera bättre med större batchstorlekar. Vi rekommenderar att du experimenterar med värden i intervallet 0,02 till 0,2 för att se vad som ger bäst resultat. En mindre inlärningsfrekvens kan vara användbar för att undvika överanpassning. |
n_epochs |
integer | Antalet epoker som modellen ska tränas i. En epok refererar till en fullständig cykel genom träningsdatauppsättningen. |
seed |
integer | Fröet styr reproducerbarheten för uppgiften. Att skicka in samma parametrar för start- och jobb bör ge samma resultat, men kan skilja sig i sällsynta fall. Om ett frö inte har angetts genereras ett för dig. |
Om du vill ange anpassade hyperparametrar med 1.x-versionen av OpenAI Python API anger du dem som en del av method:
from openai import OpenAI
client = OpenAI(
api_key = os.getenv("AZURE_OPENAI_API_KEY"),
base_url="https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/"
)
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 will be using Supervised Fine Tuning.
"supervised": {
"hyperparameters": {
"n_epochs": 2
}
}
}
)
Anmärkning
Se guiderna för direktpreferensoptimering och förstärkningsjustering för att lära dig mer om deras hyperparametrar som stöds.
Kontrollera status för finjusteringsjobb
response = client.fine_tuning.jobs.retrieve(job_id)
print("Job ID:", response.id)
print("Status:", response.status)
print(response.model_dump_json(indent=2))
Visa en lista över finjusterande händelser
Om du vill undersöka enskilda finjusteringshändelser som genererades under träningen kan du behöva uppgradera OpenAI-klientbiblioteket till den senaste versionen med pip install openai --upgrade för att köra det här kommandot.
response = client.fine_tuning.jobs.list_events(fine_tuning_job_id=job_id, limit=10)
print(response.model_dump_json(indent=2))
Kontrollpunkter
När varje träningsepooch har slutförts genereras en kontrollpunkt. En kontrollpunkt är en fullt fungerande version av en modell som både kan distribueras och användas som målmodell för efterföljande finjusteringsjobb. Kontrollpunkter kan vara särskilt användbara eftersom de kan ge ögonblicksbilder innan överanpassning sker. När ett finjusteringsjobb har slutförts har du de tre senaste versionerna av modellen som är tillgängliga för distribution. Den sista epoken kommer att representeras av din finjusterade modell, de föregående två epokerna kommer att vara tillgängliga som kontrollpunkter.
Du kan köra kommandot 'list checkpoints' för att hämta en lista över kontrollpunkter som är kopplade till ett individuellt finjusteringsarbete. Du kan behöva uppgradera OpenAI-klientbiblioteket till den senaste versionen med pip install openai --upgrade för att köra det här kommandot.
response = client.fine_tuning.jobs.checkpoints.list(job_id)
print(response.model_dump_json(indent=2))
Analysera din anpassade modell
Azure OpenAI bifogar en resultatfil med namnet results.csv till varje finjusterande jobb när det har slutförts. Du kan använda resultatfilen för att analysera tränings- och valideringsprestanda för din anpassade modell. Fil-ID:t för resultatfilen visas för varje anpassad modell och du kan använda Python SDK för att hämta fil-ID:t och ladda ned resultatfilen för analys.
I följande Python-exempel hämtas fil-ID:t för den första resultatfilen som är kopplad till finjusteringsjobbet för din anpassade modell och använder sedan Python SDK för att ladda ned filen till din aktuella arbetskatalog för analys.
# 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)
Resultatfilen är en CSV-fil som innehåller en rubrikrad och en rad för varje träningssteg som utförs av finjusteringsjobbet. Resultatfilen innehåller följande kolumner:
| Kolumnnamn | Beskrivning |
|---|---|
step |
Antalet träningssteg. Ett träningssteg representerar ett enda pass, framåt och bakåt, på en batch med träningsdata. |
train_loss |
Förlusten för träningsomgången. |
train_mean_token_accuracy |
Procentandelen tokens i träningsbatchen som är korrekt predikterade av modellen. Om batchstorleken till exempel är inställd på 3 och dina data innehåller slutföranden [[1, 2], [0, 5], [4, 2]]anges det här värdet till 0,83 (5 av 6) om modellen förutsade [[1, 1], [0, 5], [4, 2]]. |
valid_loss |
Misslyckandet för valideringsbatchen. |
validation_mean_token_accuracy |
Procentandelen token i valideringsbatchen som är korrekt förutsagd av modellen. Om batchstorleken till exempel är inställd på 3 och dina data innehåller slutföranden [[1, 2], [0, 5], [4, 2]]anges det här värdet till 0,83 (5 av 6) om modellen förutsade [[1, 1], [0, 5], [4, 2]]. |
full_valid_loss |
Valideringsförlusten som beräknas i slutet av varje epok. När träningen går bra bör förlusten minska. |
full_valid_mean_token_accuracy |
Den giltiga genomsnittliga tokennoggrannheten som beräknas i slutet av varje epok. När träningen går bra bör tokennoggrannheten öka. |
Du kan också visa data i din results.csv-fil som diagram i Azure AI Foundry-portalen. Välj länken för din tränade modell så visas tre diagram: förlust, genomsnittlig tokennoggrannhet och tokennoggrannhet. Om du angav valideringsdata visas båda datauppsättningarna i samma diagram.
Observera hur din förlust minskar över tid, och att din noggrannhet ökar. Om du ser en skillnad mellan dina tränings- och valideringsdata kan det tyda på överanpassning. Prova att träna med färre epoker eller en mindre inlärningstaktsmultiplikator.
Distribuera en finjusterad modell
När du är nöjd med resultaten från ditt finjusteringsjobb, eller om du bara vill gå vidare till inferens, måste du distribuera modellen.
Om du distribuerar för ytterligare validering bör du överväga att distribuera för testning med hjälp av en utvecklardistribution.
Till skillnad från tidigare SDK-kommandon måste distributionen göras med hjälp av kontrollplanets API som kräver separat auktorisering, en annan API-sökväg och en annan API-version.
| variabel | Definition |
|---|---|
| tecken | Det finns flera sätt att generera en auktoriseringstoken. Den enklaste metoden för inledande testning är att starta Cloud Shell från Azure Portal. Kör sedan az account get-access-token. Du kan använda den här token som din tillfälliga auktoriseringstoken för API-testning. Vi rekommenderar att du lagrar detta i en ny miljövariabel. |
| prenumeration | Prenumerations-ID för den associerade Azure OpenAI-resursen. |
| resursgrupp | Resursgruppens namn för din Azure OpenAI-resurs. |
| resursnamn | Namnet på Azure OpenAI-resursen. |
| modellutplaceringsnamn | Det anpassade namnet för din nya finjusterade modellutplacering. Det här är det namn som ska refereras till i koden när du gör samtal om chattens slutförande. |
| finjusterad modell | Hämta det här värdet från finjusteringens resultat i föregående steg. Det kommer att se ut som gpt-4.1-2025-04-14.ft-b044a9d3cf9c4228b5d393567f693b83. Du måste lägga till det värdet i deploy_data json. Du kan också distribuera en kontrollpunkt genom att skicka kontrollpunkts-ID:t som visas i formatet ftchkpt-e559c011ecc04fc68eaa339d8227d02d |
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 will use to reference the model when making inference calls.
deploy_params = {'api-version': "2024-10-01"} # control plane API version rather than dataplane 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 will look 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())
Läs mer om distribution mellan regioner och använd den distribuerade modellen här.
Om du är redo att distribuera för produktion eller har särskilda behov av datahemvist följer du vår distributionsguide.
Kontinuerlig finjustering
När du har skapat en finjusterad modell kanske du vill fortsätta att förfina modellen över tid genom ytterligare finjustering. Kontinuerlig finjustering är den iterativa processen att välja en redan finjusterad modell som basmodell och finjustera den ytterligare på nya uppsättningar träningsexempel.
Om du vill finjustera en modell som du tidigare har finjusterat använder du samma process som beskrivs i skapa en anpassad modell , men i stället för att ange namnet på en allmän basmodell anger du din redan finjusterade modells ID. Det finjusterade modell-ID:t ser ut som gpt-4.1-2025-04-14.ft-5fd1918ee65d4cd38a5dcf6835066ed7
import os
from openai import OpenAI
client = OpenAI(
api_key = os.getenv("AZURE_OPENAI_API_KEY"),
base_url="https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/"
)
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 will take some time to start and complete.
print("Job ID:", response.id)
print("Status:", response.id)
print(response.model_dump_json(indent=2))
Vi rekommenderar också att du inkluderar parametern suffix för att göra det enklare att skilja mellan olika iterationer av din finjusterade modell.
suffix tar en sträng och är inställd på att identifiera den finjusterade modellen. Med OpenAI Python API stöds en sträng på upp till 18 tecken som läggs till i ditt finjusterade modellnamn.
Om du är osäker på ID:t för din befintliga finjusterade modell kan den här informationen hittas på sidan Modeller i Azure AI Foundry, eller så kan du generera en lista över modeller för en viss Azure OpenAI-resurs med hjälp av REST-API:et.
Rensa dina distributioner, anpassade modeller och träningsfiler
När du är klar med din anpassade modell kan du ta bort distributionen och modellen. Du kan också ta bort de tränings- och valideringsfiler som du laddade upp till tjänsten om det behövs.
Ta bort modelldistributionen
Viktigt!
När du har distribuerat en anpassad modell tas distributionen bort om distributionen förblir inaktiv i mer än femton (15) dagar. Distributionen av en anpassad modell är inaktiv om modellen distribuerades för mer än femton (15) dagar sedan och inga slutföranden eller samtal om chattavslut gjordes till den under en kontinuerlig 15-dagarsperiod.
Borttagningen av en inaktiv distribution tar inte bort eller påverkar inte den underliggande anpassade modellen, och den anpassade modellen kan distribueras om när som helst. Såsom det beskrivs i Prissättningen för Azure OpenAI i Azure AI Foundry Models, medför varje anpassad (finjusterad) modell som distribueras en timkostnad för drift oavsett om slutföranden eller chattkompletteringar görs med modellen. Mer information om hur du planerar och hanterar kostnader med Azure OpenAI finns i vägledningen i Planera för att hantera kostnader för Azure OpenAI.
Du kan använda olika metoder för att ta bort distributionen för din anpassade modell:
Ta bort din anpassade modell
På samma sätt kan du använda olika metoder för att ta bort din anpassade modell:
Anmärkning
Du kan inte ta bort en anpassad modell om den har en befintlig distribution. Du måste först ta bort modelldistributionen innan du kan ta bort din anpassade modell.
Ta bort dina träningsfiler
Du kan också ta bort tränings- och valideringsfiler som du laddade upp för träning och resultatfiler som genererats under träningen från din Azure OpenAI-prenumeration. Du kan använda följande metoder för att ta bort dina tränings-, validerings- och resultatfiler:
- Azure AI Foundry
- REST API:er
- The Python SDK
I följande Python-exempel används Python SDK för att ta bort tränings-, validerings- och resultatfilerna för din anpassade modell:
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)
Förutsättningar
- Läs finjusteringsguiden När du ska använda Azure OpenAI.
- Ett Azure-abonnemang. Skapa en kostnadsfritt.
- En Azure OpenAI-resurs. Mer information finns i Skapa en resurs och distribuera en modell med Azure OpenAI.
- Finjusteringsåtkomst kräver Cognitive Services OpenAI-deltagare.
- Om du inte redan har åtkomst till att visa kvoter och distribuera modeller i Azure AI Foundry-portalen behöver du ytterligare behörigheter.
Modeller som stöds
Se sidan modeller för att kontrollera vilka regioner som för närvarande stöder finjustering.
Eller så kan du finjustera en tidigare finjusterad modell, formaterad som base-model.ft-{jobid}.
Granska arbetsflödet för REST-API:et
Ta en stund att granska arbetsflödet för finjustering för användning av REST APIS och Python med Azure OpenAI:
- Förbered dina tränings- och valideringsdata.
- Välj en basmodell.
- Ladda upp dina träningsdata.
- Träna din nya anpassade modell.
- Kontrollera statusen för din anpassade modell.
- Distribuera din anpassade modell för användning.
- Använd din anpassade modell.
- Du kan också analysera din anpassade modell för prestanda och passform.
Förbereda dina tränings- och valideringsdata
Dina träningsdata och valideringsdatauppsättningar består av indata och utdataexempel för hur du vill att modellen ska fungera.
De tränings- och valideringsdata som du använder måste formateras som ett JSON Lines-dokument (JSONL) och måste formateras i det konversationsformat som används av API:et för chattavslut .
Om du vill ha en stegvis genomgång av finjustering gpt-4o-mini-2024-07-18 hänvisar vi till Azure OpenAI:s handledning för finjustering.
Exempel på filformat
{"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."}]}
Filformat för flerstegs chatt
Det finns också stöd för flera konversationer på en enda rad i jsonl-träningsfilen. Om du vill hoppa över finjustering av specifika assistentmeddelanden lägger du till det valfria weight nyckelvärdeparet. För närvarande weight kan ställas in på 0 eller 1.
{"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}]}
Chatten slutförs med vision
{"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."}]}
Förutom JSONL-formatet måste tränings- och valideringsdatafiler kodas i UTF-8 och innehålla ett byteordningsmärke (BOM). Filen får vara mindre än 512 MB.
Skapa dina tränings- och valideringsdatauppsättningar
Ju fler träningsexempel du har, desto bättre. Finjusteringsjobb fortsätter inte utan minst 10 träningsexempel, men ett så litet antal räcker inte för att märkbart påverka modellsvar. Det är bästa praxis att tillhandahålla hundratals, om inte tusentals, träningsexempel för att lyckas.
I allmänhet kan en fördubbling av datamängdens storlek leda till en linjär ökning av modellkvaliteten. Men kom ihåg att exempel med låg kvalitet kan påverka prestanda negativt. Om du tränar modellen på en stor mängd interna data utan att först rensa datamängden för endast exempel av högsta kvalitet kan du få en modell som presterar mycket sämre än förväntat.
Ladda upp dina träningsdata
Nästa steg är att antingen välja befintliga förberedda träningsdata eller ladda upp nya förberedda träningsdata som ska användas när du finjusterar din modell. När du har förberett dina träningsdata kan du ladda upp dina filer till tjänsten. Det finns två sätt att ladda upp träningsdata:
För stora datafiler rekommenderar vi att du importerar från en Azure Blob-lagring. Stora filer kan bli instabila när de laddas upp via flerdelade formulär eftersom förfrågningarna är atomära och inte kan försökas igen eller återupptas. Mer information om Azure Blob Storage finns i Vad är Azure Blob Storage?
Anmärkning
Träningsdatafiler måste formateras som JSONL-filer, kodade i UTF-8 med ett byteordningsmärke (BOM). Filen får vara mindre än 512 MB.
Ladda upp träningsdata
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"
Ladda upp valideringsdata
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"
Skapa en anpassad modell
När du har laddat upp dina tränings- och valideringsfiler är du redo att starta finjusteringsjobbet. Följande kod visar ett exempel på hur du skapar ett nytt finjusteringsjobb med REST-API :et.
I det här exemplet skickar vi även parametern seed. Fröet styr reproducerbarheten för uppgiften. Att skicka in samma frö- och jobbparametrar bör ge samma resultat, men kan skilja sig åt i sällsynta fall. Om ett frö inte har angetts genereras ett för dig.
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
}'
Om du finjusterar en modell som stöder global utbildning kan du ange träningstypen med hjälp av det extra_body namngivna argumentet och med api-versionen 2025-04-01-preview:
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"
}'
Du kan också skicka ytterligare valfria parametrar som hyperparametrar för att få större kontroll över finjusteringsprocessen. För inledande träning rekommenderar vi att du använder de automatiska standardvärden som finns utan att ange dessa parametrar.
De aktuella hyperparametrar som stöds för övervakad finjustering är:
| Namn | Typ | Beskrivning |
|---|---|---|
batch_size |
integer | Storleken på batchen som ska användas för träning. Batchstorleken är antalet träningsprover som används för att träna ett enskilt framåt- och bakåtpass. I allmänhet har vi upptäckt att större batchstorlekar tenderar att fungera bättre för större datamängder. Standardvärdet samt det maximala värdet för den här egenskapen är specifika för en basmodell. En större batchstorlek innebär att modellparametrar uppdateras mer sällan, men med lägre varians. |
learning_rate_multiplier |
nummer | Den inlärningsfrekvensmultiplikator som ska användas för träning. Inlärningshastigheten för finjustering är den ursprungliga inlärningshastigheten som används för förträning multiplicerad med detta värde. Större inlärningsfrekvenser tenderar att fungera bättre med större batchstorlekar. Vi rekommenderar att du experimenterar med värden i intervallet 0,02 till 0,2 för att se vad som ger bäst resultat. En mindre inlärningsfrekvens kan vara användbar för att undvika överanpassning. |
n_epochs |
integer | Antalet epoker som modellen ska tränas i. En epok refererar till en fullständig cykel genom träningsdatauppsättningen. |
seed |
integer | Fröet styr reproducerbarheten för uppgiften. Att skicka in samma parametrar för start- och jobb bör ge samma resultat, men kan skilja sig i sällsynta fall. Om ett frö inte har angetts genereras ett för dig. |
Anmärkning
Se guiderna för direktpreferensoptimering och förstärkningsjustering för att lära dig mer om deras hyperparametrar som stöds.
Kontrollera statusen för din anpassade modell
När du har startat ett finjusteringsjobb kan det ta en stund att slutföra. Jobbet kan placeras i kö bakom andra jobb i systemet. Att träna din modell kan ta minuter eller timmar beroende på modellens och datamängdens storlek. I följande exempel används REST-API:et för att kontrollera statusen för ditt finjusteringsjobb. Exemplet hämtar information om ditt jobb med hjälp av jobb-ID:t som returnerades från föregående exempel:
curl -X GET $AZURE_OPENAI_ENDPOINT/openai/v1/fine_tuning/jobs/<YOUR-JOB-ID> \
-H "api-key: $AZURE_OPENAI_API_KEY"
Pausa och återuppta
Under träningen kan du visa loggar och mått och pausa jobbet efter behov. Pausning kan vara användbart om måtten inte konvergerar eller om du känner att modellen inte lär sig i rätt takt. När träningsjobbet har pausats skapas en distribuerbar kontrollpunkt när säkerhetsutvärderingarna har slutförts. Den här kontrollpunkten är tillgänglig för att implementera och använda för inferens eller för att återuppta arbetet och slutföra det. Pausåtgärden gäller endast för jobb som har tränats i minst ett steg och är i körningstillstånd .
Paus
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"
Återuppta
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"
Visa en lista över finjusterande händelser
Så här undersöker du de enskilda finjusteringshändelser som genererades under träningen:
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"
Kopiera modell (förhandsversion)
Nu kan du kopiera en finjusterad kontrollpunktsmodell från en region till en annan, mellan olika prenumerationer men inom samma klientorganisation. Processen använder dedikerade API:er för att säkerställa effektiva och säkra överföringar. Den här funktionen är för närvarande endast tillgänglig med API:et och inte via Foundry-portalen. När modellen har kopierats från region A till region B kan du kontinuerligt finjustera modellen i region B och distribuera modellen från den här platsen.
Anmärkning
Borttagning av modellkontrollpunkten i källregionen gör inte att modellen tas bort i målregionen. Om du vill ta bort modellen i båda regionerna när den har kopierats måste modellen tas bort separat i varje region.
Förutsättningar
- Målresursen/-kontot bör ha minst ett finjusteringsjobb.
- Målresursen/kontot bör inte inaktivera åtkomst till offentligt nätverk. (Åtminstone när kopieringsbegäran skickas).
- Du kan bara kopiera till målkontot om kontot som initierar kopian har tillräcklig behörighet för att komma åt målkontot.
Konfiguration av behörigheter
- Skapa en användartilldelad hanterad identitet.
- Ge Cognitive Services OpenAI-deltagarrollen till din användartilldelade hanterade identitet på målresursen/kontot.
- Tilldela den användartilldelade hanterade identiteten till källresurskontot.
Kopiera modell
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>"
}'
Eftersom det här är en tidskrävande åtgärd kontrollerar du statusen för den finjusterade modellkopian genom att ange kontrollpunkts-ID:t för källkontot som användes i POST-anropet.
Kontrollera kopieringsstatus
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'
Anmärkning
När du kopierar en kontrollpunkt från ett källkonto behålls samma kontrollpunktsnamn i målkontot. Se till att du använder exakt samma namn för justering, utrullning eller för någon annan åtgärd i det avsedda kontot. Den här kontrollpunkten visas inte i användargränssnittet eller i API:et list checkpoints .
Kontrollpunkter
När varje träningsepooch har slutförts genereras en kontrollpunkt. En kontrollpunkt är en fullt fungerande version av en modell som både kan distribueras och användas som målmodell för efterföljande finjusteringsjobb. Kontrollpunkter kan vara särskilt användbara eftersom de kan ge ögonblicksbilder innan överanpassning sker. När ett finjusteringsjobb har slutförts har du de tre senaste versionerna av modellen som är tillgängliga för distribution. Den sista epoken kommer att representeras av din finjusterade modell, de föregående två epokerna kommer att vara tillgängliga som kontrollpunkter.
Du kan köra kommandot för kontrollpunkter i listan för att hämta listan över kontrollpunkter som är associerade med ett enskilt finjusteringsjobb:
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"
Analysera din anpassade modell
Azure OpenAI bifogar en resultatfil med namnet results.csv till varje finjusterande jobb när det har slutförts. Du kan använda resultatfilen för att analysera tränings- och valideringsprestanda för din anpassade modell. Fil-ID:t för resultatfilen visas för varje anpassad modell och du kan använda REST-API:et för att hämta fil-ID:t och ladda ned resultatfilen för analys.
I följande Python-exempel används REST-API:et för att hämta fil-ID:t för den första resultatfilen som är kopplad till finjusteringsjobbet för din anpassade modell och laddar sedan ned filen till arbetskatalogen för analys.
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>
Resultatfilen är en CSV-fil som innehåller en rubrikrad och en rad för varje träningssteg som utförs av finjusteringsjobbet. Resultatfilen innehåller följande kolumner:
| Kolumnnamn | Beskrivning |
|---|---|
step |
Antalet träningssteg. Ett träningssteg representerar ett enda pass, framåt och bakåt, på en batch med träningsdata. |
train_loss |
Förlusten för träningsomgången. |
train_mean_token_accuracy |
Procentandelen tokens i träningsbatchen som är korrekt predikterade av modellen. Om batchstorleken till exempel är inställd på 3 och dina data innehåller slutföranden [[1, 2], [0, 5], [4, 2]]anges det här värdet till 0,83 (5 av 6) om modellen förutsade [[1, 1], [0, 5], [4, 2]]. |
valid_loss |
Misslyckandet för valideringsbatchen. |
validation_mean_token_accuracy |
Procentandelen token i valideringsbatchen som är korrekt förutsagd av modellen. Om batchstorleken till exempel är inställd på 3 och dina data innehåller slutföranden [[1, 2], [0, 5], [4, 2]]anges det här värdet till 0,83 (5 av 6) om modellen förutsade [[1, 1], [0, 5], [4, 2]]. |
full_valid_loss |
Valideringsförlusten som beräknas i slutet av varje epok. När träningen går bra bör förlusten minska. |
full_valid_mean_token_accuracy |
Den giltiga genomsnittliga tokennoggrannheten som beräknas i slutet av varje epok. När träningen går bra bör tokennoggrannheten öka. |
Du kan också visa data i din results.csv-fil som diagram i Azure AI Foundry-portalen. Välj länken för din tränade modell så visas tre diagram: förlust, genomsnittlig tokennoggrannhet och tokennoggrannhet. Om du angav valideringsdata visas båda datauppsättningarna i samma diagram.
Observera hur din förlust minskar över tid, och att din noggrannhet ökar. Om du ser en skillnad mellan dina tränings- och valideringsdata som kan tyda på överanpassning. Prova att träna med färre epoker eller en mindre inlärningstaktsmultiplikator.
Distribuera en finjusterad modell
När du är nöjd med resultaten från ditt finjusteringsjobb, eller om du bara vill gå vidare till inferens, måste du distribuera modellen.
Om du distribuerar för ytterligare validering bör du överväga att distribuera för testning med hjälp av en utvecklardistribution.
Om du är redo att distribuera för produktion eller har särskilda behov av datahemvist följer du vår distributionsguide.
| variabel | Definition |
|---|---|
| tecken | Det finns flera sätt att generera en auktoriseringstoken. Den enklaste metoden för inledande testning är att starta Cloud Shell från Azure Portal. Kör sedan az account get-access-token. Du kan använda den här token som din tillfälliga auktoriseringstoken för API-testning. Vi rekommenderar att du lagrar detta i en ny miljövariabel. |
| prenumeration | Prenumerations-ID för den associerade Azure OpenAI-resursen. |
| resursgrupp | Resursgruppens namn för din Azure OpenAI-resurs. |
| resursnamn | Namnet på Azure OpenAI-resursen. |
| modellutplaceringsnamn | Det anpassade namnet för din nya finjusterade modellutplacering. Det här är det namn som ska refereras till i koden när du gör samtal om chattens slutförande. |
| finjusterad modell | Hämta det här värdet från finjusteringens resultat i föregående steg. Det kommer att se ut som gpt-4.1-2025-04-14.ft-b044a9d3cf9c4228b5d393567f693b83. Du måste lägga till det värdet i deploy_data json. Du kan också distribuera en kontrollpunkt genom att skicka kontrollpunkts-ID:t som visas i formatet ftchkpt-e559c011ecc04fc68eaa339d8227d02d |
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"
}
}
}'
Läs mer om distribution mellan regioner och använd den distribuerade modellen här.
Kontinuerlig finjustering
När du har skapat en finjusterad modell kanske du vill fortsätta att förfina modellen över tid genom ytterligare finjustering. Kontinuerlig finjustering är den iterativa processen att välja en redan finjusterad modell som basmodell och finjustera den ytterligare på nya uppsättningar träningsexempel.
Om du vill finjustera en modell som du tidigare har finjusterat använder du samma process som beskrivs i skapa en anpassad modell , men i stället för att ange namnet på en allmän basmodell anger du din redan finjusterade modells ID. Det finjusterade modell-ID:t ser ut som 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>"
}'
Vi rekommenderar också att du inkluderar parametern suffix för att göra det enklare att skilja mellan olika iterationer av din finjusterade modell.
suffix tar en sträng och är inställd på att identifiera den finjusterade modellen. Suffixet kan innehålla upp till 40 tecken (a-z, A-Z, 0-9 och _) som läggs till i ditt finjusterade modellnamn.
Om du är osäker på ID:t för din finjusterade modell kan den här informationen hittas på sidan Modeller i Azure AI Foundry, eller så kan du generera en lista över modeller för en viss Azure OpenAI-resurs med hjälp av REST-API:et.
Rensa dina distributioner, anpassade modeller och träningsfiler
När du är klar med din anpassade modell kan du ta bort distributionen och modellen. Du kan också ta bort de tränings- och valideringsfiler som du laddade upp till tjänsten om det behövs.
Ta bort modelldistributionen
Du kan använda olika metoder för att ta bort distributionen för din anpassade modell:
Ta bort din anpassade modell
På samma sätt kan du använda olika metoder för att ta bort din anpassade modell:
Anmärkning
Du kan inte ta bort en anpassad modell om den har en befintlig distribution. Du måste först ta bort modelldistributionen innan du kan ta bort din anpassade modell.
Ta bort dina träningsfiler
Du kan också ta bort tränings- och valideringsfiler som du laddade upp för träning och resultatfiler som genererats under träningen från din Azure OpenAI-prenumeration. Du kan använda följande metoder för att ta bort dina tränings-, validerings- och resultatfiler: