Dela via


Anpassa en modell med finjustering

Med Azure OpenAI Service kan du skräddarsy våra modeller efter dina personliga datamängder med hjälp av en process som kallas finjustering. Med det här anpassningssteget kan du få ut mer av tjänsten genom att tillhandahålla:

  • 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 på grund av kortare frågor
  • Begäranden med kortare svarstid, särskilt när du använder mindre modeller.

Till skillnad från inlärning med få skott förbättrar finjustering modellen genom att träna på många fler exempel än vad som får plats i en fråga, så att du kan uppnå bättre resultat på ett stort antal uppgifter. Eftersom finjustering justerar basmodellens vikter för att förbättra prestandan för den specifika uppgiften behöver du inte ta med så många exempel eller instruktioner i prompten. Det innebär mindre text som skickas och färre token som bearbetas vid varje API-anrop, vilket kan spara kostnader och förbättra svarstiden för begäran.

Vi använder LoRA, eller låg rankning, 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.

Kommentar

Azure OpenAI stöder för närvarande endast text-till-text-finjustering för alla modeller som stöds, inklusive GPT-4o mini.

Det finns två unika finjusteringsupplevelser i Azure AI Studio. Båda låter dig finjustera Azure OpenAI-modeller, men endast Hub/Project-vyn stöder finjustering av icke-Azure OpenAI-modeller. Om du bara använder finjusteringsfunktionen i Azure OpenAI som är tillgänglig när du väljer en resurs i en region där finjustering stöds.

Förutsättningar

Modeller

Följande modeller stöder finjustering:

  • babbage-002
  • davinci-002
  • gpt-35-turbo (0613)
  • gpt-35-turbo (1106)
  • gpt-35-turbo (0125)
  • gpt-4 (0613)*
  • gpt-4o (2024-08-06)
  • gpt-4o-mini (2024-07-18)

* Finjustering för den här modellen finns för närvarande i offentlig förhandsversion.

Eller så kan du finjustera en tidigare finjusterad modell, formaterad som base-model.ft-{jobid}.

Se sidan modeller för att kontrollera vilka regioner som för närvarande stöder finjustering.

Granska arbetsflödet för Azure AI Studio

Ta en stund att granska arbetsflödet för finjustering för att använda Azure AI Studio:

  1. Förbered dina tränings- och valideringsdata.
  2. Använd guiden Skapa anpassad modell i Azure AI Studio för att träna din anpassade modell.
    1. Välj en basmodell.
    2. Välj dina träningsdata.
    3. Du kan också välja dina valideringsdata.
    4. Du kan också konfigurera uppgiftsparametrar för ditt finjusteringsjobb.
    5. Granska dina val och träna din nya anpassade modell.
  3. Kontrollera statusen för din anpassade finjusterade modell.
  4. Distribuera din anpassade modell för användning.
  5. Använd din anpassade modell.
  6. Du kan också analysera din anpassade modell för prestanda och passform.

Förbereda dina tränings- och valideringsdata

Dina uppsättningar med träningsdata och valideringsdata består av indata- och utdataexempel för hur du vill att modellen ska fungera.

Olika modelltyper kräver ett annat format för träningsdata.

De tränings- och valideringsdata som du använder måste formateras som ett JSON Lines-dokument (JSONL). För gpt-35-turbo (alla versioner), gpt-4, gpt-4ooch gpt-4o-minimåste finjusteringsdatauppsättningen formateras i konversationsformatet som används av API:et för chattslutningar .

Om du vill ha en stegvis genomgång av finjustering av en gpt-4o-mini (2024-07-18)-modell kan du läsa självstudiekursen för finjustering av Azure OpenAI.

Exempel på filformat

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

Chattfilformat för flera svängar 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 måste 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.

Använda guiden Skapa anpassad modell

Azure AI Studio innehåller guiden Skapa anpassad modell så att du interaktivt kan skapa och träna en finjusterad modell för din Azure-resurs.

  1. Öppna Azure AI Studio och https://oai.azure.com/ 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.

  2. I Azure AI Studio bläddrar du till fönstret Verktyg > Finjustering och väljer Finjustera modell.

    Skärmbild som visar hur du kommer åt guiden Skapa anpassad modell i Azure AI Studio.

Guiden Skapa anpassad modell öppnas.

Välj basmodellen

Det första steget i att skapa en anpassad modell är att välja en basmodell. I fönstret Basmodell kan du välja en basmodell som ska användas för din anpassade modell. Ditt val påverkar både prestanda och kostnaden för din modell.

Välj basmodellen i listrutan Basmodelltyp och välj sedan Nästa för att fortsätta.

Du kan skapa en anpassad modell från någon av följande tillgängliga basmodeller:

  • babbage-002

  • davinci-002

  • gpt-35-turbo (0613)

  • gpt-35-turbo (1106)

  • gpt-35-turbo (0125)

  • gpt-4 (0613)

  • Eller så kan du finjustera en tidigare finjusterad modell, formaterad som base-model.ft-{jobid}.

Skärmbild av modellalternativ med en anpassad finjusterad modell.

Mer information om våra basmodeller som kan finjusteras finns i Modeller.

Välj 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. Fönstret Träningsdata visar alla befintliga, tidigare uppladdade datamängder och innehåller även alternativ för att ladda upp nya träningsdata.

Skärmbild av fönstret Träningsdata för guiden Skapa anpassad modell i Azure AI Studio.

För stora datafiler rekommenderar vi att du importerar från ett Azure Blob Store. Stora filer kan bli instabila när de laddas upp via formulär med flera delar eftersom begäranden är atomiska och inte kan göras om eller återupptas. Mer information om Azure Blob Storage finns i Vad är Azure Blob Storage?

Kommentar

Träningsdatafiler måste formateras som JSONL-filer, kodade i UTF-8 med ett byteordningsmärke (BOM). Filen måste vara mindre än 512 MB.

Ladda upp träningsdata från en lokal fil

Du kan ladda upp en ny träningsdatauppsättning till tjänsten från en lokal fil med någon av följande metoder:

  • Dra och släpp filen till klientområdet i fönstret Träningsdata och välj sedan Ladda upp fil.

  • Välj Bläddra efter en fil från klientområdet i fönstret Träningsdata , välj den fil som ska laddas upp från dialogrutan Öppna och välj sedan Ladda upp fil.

När du har valt och laddat upp träningsdatauppsättningen väljer du Nästa för att fortsätta.

Skärmbild av fönstret Träningsdata för guiden Skapa anpassad modell med lokala filalternativ.

Importera träningsdata från Azure Blob Store

Du kan importera en träningsdatauppsättning från Azure Blob eller en annan delad webbplats genom att ange namnet och platsen för filen.

  1. Ange filnamnet för filen.

  2. Ange Azure Blob-URL:en, signaturen för delad åtkomst i Azure Storage (SAS) eller en annan länk till en tillgänglig delad webbplats för filplatsen.

  3. Välj Importera för att importera träningsdatauppsättningen till tjänsten.

När du har valt och laddat upp träningsdatauppsättningen väljer du Nästa för att fortsätta.

Skärmbild av fönstret Träningsdata för guiden Skapa anpassad modell med alternativ för Azure Blob och delad webbplats.

Välj dina valideringsdata

Nästa steg innehåller alternativ för att konfigurera modellen så att den använder valideringsdata i träningsprocessen. Om du inte vill använda valideringsdata kan du välja Nästa för att fortsätta till de avancerade alternativen för modellen. Om du annars har en valideringsdatauppsättning kan du antingen välja befintliga förberedda valideringsdata eller ladda upp nya förberedda valideringsdata som ska användas när du anpassar din modell.

Fönstret Valideringsdata visar alla befintliga, tidigare uppladdade tränings- och valideringsdatauppsättningar och innehåller alternativ som du kan ladda upp nya valideringsdata med.

Skärmbild av fönstret Valideringsdata för guiden Skapa anpassad modell i Azure AI Studio.

För stora datafiler rekommenderar vi att du importerar från ett Azure Blob Store. Stora filer kan bli instabila när de laddas upp via formulär med flera delar eftersom begäranden är atomiska och inte kan göras om eller återupptas.

Kommentar

Precis som träningsdatafiler måste valideringsdatafiler formateras som JSONL-filer, kodade i UTF-8 med byteordningsmärke (BOM). Filen måste vara mindre än 512 MB.

Ladda upp valideringsdata från en lokal fil

Du kan ladda upp en ny valideringsdatauppsättning till tjänsten från en lokal fil med någon av följande metoder:

  • Dra och släpp filen till klientområdet i fönstret Valideringsdata och välj sedan Ladda upp fil.

  • Välj Bläddra efter en fil från klientområdet i fönstret Valideringsdata , välj den fil som ska laddas upp från dialogrutan Öppna och välj sedan Ladda upp fil.

När du har valt och laddat upp valideringsdatauppsättningen väljer du Nästa för att fortsätta.

Skärmbild av fönstret Valideringsdata för guiden Skapa anpassad modell med lokala filalternativ.

Importera valideringsdata från Azure Blob Store

Du kan importera en valideringsdatauppsättning från Azure Blob eller en annan delad webbplats genom att ange namnet och platsen för filen.

  1. Ange filnamnet för filen.

  2. Ange Azure Blob-URL:en, signaturen för delad åtkomst i Azure Storage (SAS) eller en annan länk till en tillgänglig delad webbplats för filplatsen.

  3. Välj Importera för att importera träningsdatauppsättningen till tjänsten.

När du har valt och laddat upp valideringsdatauppsättningen väljer du Nästa för att fortsätta.

Skärmbild av fönstret Valideringsdata för guiden Skapa anpassad modell med alternativ för Azure Blob och delad webbplats.

Konfigurera aktivitetsparametrar

Guiden Skapa anpassad modell visar parametrarna för träning av din finjusterade modell i fönstret Aktivitetsparametrar . Följande parametrar är tillgängliga:

Namn Typ Beskrivning
batch_size integer Batchstorleken som ska användas för träning. Batchstorleken är antalet träningsexempel som används för att träna ett enda 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 mindre ofta, men med lägre varians.
learning_rate_multiplier Nummer Den inlärningsfrekvensmultiplikator som ska användas för träning. Den finjusterande inlärningsfrekvensen är den ursprungliga inlärningsfrekvensen som används för förträning multiplicerat med det här värdet. 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 för. En epok refererar till en fullständig cykel genom träningsdatauppsättningen.
seed integer Fröet styr återgivningsbarheten för jobbet. 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

Skärmbild av fönstret Avancerade alternativ för guiden Skapa anpassad modell med standardalternativ valda.

Välj Standard om du vill använda standardvärdena för finjusteringsjobbet eller välj Anpassad för att visa och redigera hyperparametervärdena. När standardvärden väljs fastställer vi rätt värde algoritmiskt baserat på dina träningsdata.

När du har konfigurerat de avancerade alternativen väljer du Nästa för att granska dina val och träna din finjusterade modell.

Granska dina val och träna din modell

Fönstret Granska i guiden visar information om dina konfigurationsalternativ.

Skärmbild av fönstret Granska för guiden Skapa anpassad modell i Azure AI Studio.

Om du är redo att träna din modell väljer du Starta träningsjobbet för att starta finjusteringsjobbet och återgår till fönstret Modeller .

Kontrollera statusen för din anpassade modell

Fönstret Modeller visar information om din anpassade modell på fliken Anpassade modeller . Fliken innehåller information om status och jobb-ID för det finjusterade jobbet för din anpassade modell. När jobbet är klart visar fliken fil-ID för resultatfilen. Du kan behöva välja Uppdatera för att se en uppdaterad status för modellträningsjobbet.

Skärmbild av fönstret Modeller från Azure AI Studio med en anpassad modell som visas.

När du har startat ett finjusteringsjobb kan det ta lite tid att slutföra. Jobbet kan placeras i kö bakom andra jobb i systemet. Det kan ta minuter eller timmar att träna din modell beroende på modellens och datamängdens storlek.

Här är några av de uppgifter som du kan utföra i fönstret Modeller :

  • Kontrollera statusen för finjusteringsjobbet för din anpassade modell i kolumnen Statusfliken Anpassade modeller .

  • I kolumnen Modellnamn väljer du modellnamnet för att visa mer information om den anpassade modellen. Du kan se status för finjusteringsjobbet, träningsresultat, träningshändelser och hyperparametrar som används i jobbet.

  • Välj Ladda ned träningsfil för att ladda ned träningsdata som du använde för modellen.

  • Välj Ladda ned resultat för att ladda ned resultatfilen som är kopplad till finjusteringsjobbet för din modell och analysera din anpassade modell för tränings- och valideringsprestanda.

  • Välj Uppdatera för att uppdatera informationen på sidan.

Skärmbild av fönstret Modeller i Azure AI Studio med en anpassad modell som visas.

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 en ögonblicksbild av din modell innan överanpassningen har inträffat. När ett finjusteringsjobb har slutförts har du de tre senaste versionerna av modellen som är tillgängliga för distribution.

Säkerhetsutvärdering GPT-4, GPT-4o och GPT-4o-mini finjustering – offentlig förhandsversion

GPT-4o, GPT-4o-mini och GPT-4 är våra mest avancerade modeller som kan finjusteras efter dina behov. Precis som med Azure OpenAI-modeller i allmänhet kommer de avancerade funktionerna i finjusterade modeller med ökade ansvarsfulla AI-utmaningar relaterade till skadligt innehåll, manipulering, mänskligt beteende, sekretessproblem med mera. Läs mer om risker, funktioner och begränsningar i översikten över ansvarsfulla AI-metoder och Transparensanteckning. För att minska riskerna med avancerade finjusterade modeller har vi implementerat ytterligare utvärderingssteg för att identifiera och förhindra skadligt innehåll i träning och utdata från finjusterade modeller. De här stegen baseras på innehållsfiltreringen Microsoft Responsible AI Standard och Azure OpenAI Service.

  • Utvärderingar utförs på dedikerade, kundspecifika, privata arbetsytor;
  • Utvärderingsslutpunkter finns i samma geografiska område som Azure OpenAI-resursen.
  • Träningsdata lagras inte i samband med utvärderingar. Endast den slutliga modellutvärderingen (distribuerbar eller inte distribuerbar) bevaras. och

Filter för GPT-4o, GPT-4o-mini och GPT-4 finjusterade modellutvärderingar är inställda på fördefinierade tröskelvärden och kan inte ändras av kunder. de är inte knutna till någon anpassad innehållsfiltreringskonfiguration som du kanske har skapat.

Datautvärdering

Innan träningen börjar utvärderas dina data för potentiellt skadligt innehåll (våld, sexuellt, hat och rättvisa, självskadebeteende – se kategoridefinitioner här). Om skadligt innehåll identifieras över den angivna allvarlighetsnivån misslyckas ditt träningsjobb och du får ett meddelande som informerar dig om felkategorierna.

Exempelmeddelande:

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

Dina träningsdata utvärderas automatiskt i ditt dataimportjobb som en del av att tillhandahålla finjusteringsfunktionen.

Om finjusteringsjobbet misslyckas på grund av identifiering av skadligt innehåll i träningsdata debiteras du inte.

Modellutvärdering

När träningen har slutförts men innan den finjusterade modellen är tillgänglig för distribution utvärderas den resulterande modellen för potentiellt skadliga svar med hjälp av Azures inbyggda risk- och säkerhetsmått. Med samma metod för testning som vi använder för de grundläggande stora språkmodellerna simulerar vår utvärderingsfunktion en konversation med din finjusterade modell för att bedöma potentialen att mata ut skadligt innehåll, återigen med hjälp av angivna kategorier av skadligt innehåll (våld, sexuellt, hat och rättvisa, självskadebeteende).

Om det visar sig att en modell genererar utdata som innehåller innehåll som identifierats som skadligt över en acceptabel hastighet, informeras du om att din modell inte är tillgänglig för distribution, med information om de specifika skadekategorier som identifierats:

Exempelmeddelande:

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

Skärmbild av ett misslyckat finjusteringsjobb på grund av säkerhetsutvärdering

Precis som med datautvärdering utvärderas modellen automatiskt i ditt finjusteringsjobb som en del av att tillhandahålla finjusteringsfunktionen. Endast den resulterande utvärderingen (som kan distribueras eller inte kan distribueras) loggas av tjänsten. Om distributionen av den finjusterade modellen misslyckas på grund av identifiering av skadligt innehåll i modellutdata debiteras du inte för träningskörningen.

Distribuera en finjusterad modell

När finjusteringsjobbet lyckas kan du distribuera den anpassade modellen från fönstret Modeller . Du måste distribuera din anpassade modell för att göra den tillgänglig för användning med slutförandeanrop.

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. Enligt beskrivningen i prissättningen för Azure OpenAI Service medför varje anpassad (finjusterad) modell som distribueras en timbaserad värdkostnad oavsett om slutföranden eller chattavslut görs till 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 Service.

Kommentar

Endast en distribution tillåts för en anpassad modell. Ett felmeddelande visas om du väljer en redan distribuerad anpassad modell.

Om du vill distribuera din anpassade modell väljer du den anpassade modell som ska distribueras och väljer sedan Distribuera modell.

Skärmbild som visar hur du distribuerar en anpassad modell i Azure AI Studio.

Dialogrutan Distribuera modell öppnas. I dialogrutan anger du distributionsnamnet och väljer sedan Skapa för att starta distributionen av din anpassade modell.

Skärmbild av dialogrutan Distribuera modell i Azure AI Studio.

Du kan övervaka förloppet för distributionen i fönstret Distributioner i Azure AI Studio.

Distribution mellan regioner

Finjustering stöder distribution av en finjusterad modell till en annan region än där modellen ursprungligen finjusterades. Du kan också distribuera till en annan prenumeration/region.

De enda begränsningarna är att den nya regionen också måste ha stöd för finjustering och när du distribuerar mellan prenumerationer måste kontot som genererar auktoriseringstoken för distributionen ha åtkomst till både käll- och målprenumerationerna.

Distribution mellan prenumerationer/regioner kan utföras via Python eller REST.

Använda en distribuerad anpassad modell

När din anpassade modell har distribuerats kan du använda den som vilken annan distribuerad modell som helst. Du kan använda Playgrounds i Azure AI Studio för att experimentera med din nya distribution. Du kan fortsätta att använda samma parametrar med din anpassade modell, till exempel temperature och max_tokens, som du kan med andra distribuerade modeller. För finjusterade babbage-002 modeller och davinci-002 modeller använder du Lekplatsen För slutföranden och API:et För slutföranden. För finjusterade gpt-35-turbo-0613 modeller använder du API:et Chattlekplats och API:et för chattens slutförande.

Skärmbild av playground-fönstret i Azure AI Studio med avsnitt markerade.

Analysera din anpassade modell

Azure OpenAI bifogar en resultatfil med namnet results.csv till varje finjusteringsjobb 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 i kolumnen Resultatfil-ID i fönstret Modeller för Azure AI Studio. Du kan använda fil-ID:t för att identifiera och ladda ned resultatfilen från fönstret Datafiler i Azure AI Studio.

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äningsbatchen.
train_mean_token_accuracy Procentandelen token i träningsbatchen 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]].
valid_loss Förlusten 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 Studio. 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.

Leta efter din förlust att minska med tiden, och din noggrannhet att öka. 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.

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. Enligt beskrivningen i prissättningen för Azure OpenAI Service medför varje anpassad (finjusterad) modell som distribueras en timbaserad värdkostnad oavsett om slutföranden eller chattavslut görs till 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 Service.

Du kan ta bort distributionen för din anpassade modell i fönstret Distributioner i Azure AI Studio. 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 Studio. 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.

Kommentar

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 Hanteringsdatafiler> i Azure AI Studio. Välj den fil som ska tas bort och välj sedan Ta bort för att ta bort filen.

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 modell. En anpassad finjusterad modell skulle se ut som gpt-35-turbo-0613.ft-5fd1918ee65d4cd38a5dcf6835066ed7

Skärmbild av användargränssnittet skapa en anpassad modell med en finjusterad modell markerad.

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.

Förutsättningar

Modeller

Följande modeller stöder finjustering:

  • babbage-002
  • davinci-002
  • gpt-35-turbo (0613)
  • gpt-35-turbo (1106)
  • gpt-35-turbo (0125)
  • gpt-4 (0613)*
  • gpt-4o (2024-08-06)
  • gpt-4o-mini (2024-07-18)

* Finjustering för den här modellen finns för närvarande i offentlig förhandsversion.

Eller så kan du finjustera en tidigare finjusterad modell, formaterad som base-model.ft-{jobid}.

Skärmbild av modellalternativ med en anpassad finjusterad modell.

Se sidan modeller för att kontrollera vilka regioner som för närvarande stöder finjustering.

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:

  1. Förbered dina tränings- och valideringsdata.
  2. Välj en basmodell.
  3. Ladda upp dina träningsdata.
  4. Träna din nya anpassade modell.
  5. Kontrollera statusen för din anpassade modell.
  6. Distribuera din anpassade modell för användning.
  7. Använd din anpassade modell.
  8. Du kan också analysera din anpassade modell för prestanda och passform.

Förbereda dina tränings- och valideringsdata

Dina uppsättningar med träningsdata och valideringsdata består av indata- och utdataexempel för hur du vill att modellen ska fungera.

Olika modelltyper kräver ett annat format för träningsdata.

De tränings- och valideringsdata som du använder måste formateras som ett JSON Lines-dokument (JSONL). För gpt-35-turbo-0613 finjusteringsdatauppsättningen måste formateras i konversationsformatet som används av API:et för chattavslut .

Om du vill ha en stegvis genomgång av finjustering gpt-35-turbo-0613 kan du läsa självstudiekursen för finjustering i Azure OpenAI

Exempel på filformat

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

Chattfilformat för flera svängar

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 måste 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 ett Azure Blob Store. Stora filer kan bli instabila när de laddas upp via formulär med flera delar eftersom begäranden är atomiska och inte kan göras om eller återupptas. Mer information om Azure Blob Storage finns i Vad är Azure Blob Storage?

Kommentar

Träningsdatafiler måste formateras som JSONL-filer, kodade i UTF-8 med ett byteordningsmärke (BOM). Filen måste 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 AzureOpenAI

client = AzureOpenAI(
  azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"), 
  api_key=os.getenv("AZURE_OPENAI_API_KEY"),  
  api_version="2024-05-01-preview"  # This API version or later is required to access seed/events/checkpoint capabilities
)

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

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

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

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

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

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:

I det här exemplet skickar vi även parametern seed. Fröet styr återgivningsbarheten för jobbet. 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.

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

job_id = response.id

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

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

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 finjustering är:

Namn Typ Beskrivning
batch_size integer Batchstorleken som ska användas för träning. Batchstorleken är antalet träningsexempel som används för att träna ett enda 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 mindre ofta, men med lägre varians.
learning_rate_multiplier Nummer Den inlärningsfrekvensmultiplikator som ska användas för träning. Den finjusterande inlärningsfrekvensen är den ursprungliga inlärningsfrekvensen som används för förträning multiplicerat med det här värdet. 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 för. En epok refererar till en fullständig cykel genom träningsdatauppsättningen.
seed integer Fröet styr återgivningsbarheten för jobbet. 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.

Så här anger du anpassade hyperparametrar med 1.x-versionen av OpenAI Python API:

from openai import AzureOpenAI

client = AzureOpenAI(
  azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"), 
  api_key=os.getenv("AZURE_OPENAI_API_KEY"),  
  api_version="2024-02-01"  # This API version or later is required to access fine-tuning for turbo/babbage-002/davinci-002
)

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

Kontrollera finjustering av jobbstatus

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

Så här undersöker du de enskilda finjusteringshändelser som genererades under träningen:

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.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 en ögonblicksbild av din modell innan överanpassningen har inträffat. 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:

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.list_events(fine_tuning_job_id=job_id, limit=10)
print(response.model_dump_json(indent=2))

Säkerhetsutvärdering GPT-4, GPT-4o, GPT-4o-mini finjustering - offentlig förhandsversion

GPT-4o, GPT-4o-mini och GPT-4 är våra mest avancerade modeller som kan finjusteras efter dina behov. Precis som med Azure OpenAI-modeller i allmänhet kommer de avancerade funktionerna i finjusterade modeller med ökade ansvarsfulla AI-utmaningar relaterade till skadligt innehåll, manipulering, mänskligt beteende, sekretessproblem med mera. Läs mer om risker, funktioner och begränsningar i översikten över ansvarsfulla AI-metoder och Transparensanteckning. För att minska riskerna med avancerade finjusterade modeller har vi implementerat ytterligare utvärderingssteg för att identifiera och förhindra skadligt innehåll i träning och utdata från finjusterade modeller. De här stegen baseras på innehållsfiltreringen Microsoft Responsible AI Standard och Azure OpenAI Service.

  • Utvärderingar utförs på dedikerade, kundspecifika, privata arbetsytor;
  • Utvärderingsslutpunkter finns i samma geografiska område som Azure OpenAI-resursen.
  • Träningsdata lagras inte i samband med utvärderingar. Endast den slutliga modellutvärderingen (distribuerbar eller inte distribuerbar) bevaras. och

Filter för GPT-4o, GPT-4o-mini och GPT-4 finjusterade modellutvärderingar är inställda på fördefinierade tröskelvärden och kan inte ändras av kunder. de är inte knutna till någon anpassad innehållsfiltreringskonfiguration som du kanske har skapat.

Datautvärdering

Innan träningen börjar utvärderas dina data för potentiellt skadligt innehåll (våld, sexuellt, hat och rättvisa, självskadebeteende – se kategoridefinitioner här). Om skadligt innehåll identifieras över den angivna allvarlighetsnivån misslyckas ditt träningsjobb och du får ett meddelande som informerar dig om felkategorierna.

Exempelmeddelande:

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

Dina träningsdata utvärderas automatiskt i ditt dataimportjobb som en del av att tillhandahålla finjusteringsfunktionen.

Om finjusteringsjobbet misslyckas på grund av identifiering av skadligt innehåll i träningsdata debiteras du inte.

Modellutvärdering

När träningen har slutförts men innan den finjusterade modellen är tillgänglig för distribution utvärderas den resulterande modellen för potentiellt skadliga svar med hjälp av Azures inbyggda risk- och säkerhetsmått. Med samma metod för testning som vi använder för de grundläggande stora språkmodellerna simulerar vår utvärderingsfunktion en konversation med din finjusterade modell för att bedöma potentialen att mata ut skadligt innehåll, återigen med hjälp av angivna kategorier av skadligt innehåll (våld, sexuellt, hat och rättvisa, självskadebeteende).

Om det visar sig att en modell genererar utdata som innehåller innehåll som identifierats som skadligt över en acceptabel hastighet, informeras du om att din modell inte är tillgänglig för distribution, med information om de specifika skadekategorier som identifierats:

Exempelmeddelande:

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

Skärmbild av ett misslyckat finjusteringsjobb på grund av säkerhetsutvärdering

Precis som med datautvärdering utvärderas modellen automatiskt i ditt finjusteringsjobb som en del av att tillhandahålla finjusteringsfunktionen. Endast den resulterande utvärderingen (som kan distribueras eller inte kan distribueras) loggas av tjänsten. Om distributionen av den finjusterade modellen misslyckas på grund av identifiering av skadligt innehåll i modellutdata debiteras du inte för träningskörningen.

Distribuera en finjusterad modell

När finjusteringsjobbet lyckas anges värdet för variabeln fine_tuned_model i svarstexten till namnet på din anpassade modell. Din modell är nu också tillgänglig för identifiering från listans modell-API. Du kan dock inte utfärda slutförandeanrop till din anpassade modell förrän din anpassade modell har distribuerats. Du måste distribuera din anpassade modell för att göra den tillgänglig för användning med slutförandeanrop.

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. Enligt beskrivningen i prissättningen för Azure OpenAI Service medför varje anpassad (finjusterad) modell som distribueras en timbaserad värdkostnad oavsett om slutföranden eller chattavslut görs till 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 Service.

Du kan också använda Azure AI Studio eller Azure CLI för att distribuera din anpassade modell.

Kommentar

Endast en distribution tillåts för en anpassad modell. Ett fel uppstår om du väljer en redan distribuerad anpassad modell.

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
token 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.
resource_group Resursgruppens namn för din Azure OpenAI-resurs.
resource_name Azure OpenAI-resursnamnet.
model_deployment_name Det anpassade namnet på din nya finjusterade modelldistribution. Det här är det namn som ska refereras till i koden när du gör samtal om chattens slutförande.
fine_tuned_model Hämta det här värdet från ditt finjusterande jobbresultat i föregående steg. Det kommer att se ut som gpt-35-turbo-0613.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-35-turbo-ft" # custom deployment name that you will use to reference the model when making inference calls.

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

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

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

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

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

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

Distribution mellan regioner

Finjustering stöder distribution av en finjusterad modell till en annan region än där modellen ursprungligen finjusterades. Du kan också distribuera till en annan prenumeration/region.

De enda begränsningarna är att den nya regionen också måste ha stöd för finjustering och när du distribuerar mellan prenumerationer måste kontot som genererar auktoriseringstoken för distributionen ha åtkomst till både käll- och målprenumerationerna.

Nedan visas ett exempel på hur du distribuerar en modell som har finjusterats i en prenumeration/region till en annan.

import json
import os
import requests

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

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

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


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

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

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



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

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

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

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

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

För att distribuera mellan samma prenumeration, men olika regioner skulle du bara ha prenumerations- och resursgrupper som är identiska för både käll- och målvariabler och endast käll- och målresursnamnen måste vara unika.

Distribuera en modell med Azure CLI

I följande exempel visas hur du använder Azure CLI för att distribuera din anpassade modell. Med Azure CLI måste du ange ett namn för distributionen av din anpassade modell. Mer information om hur du använder Azure CLI för att distribuera anpassade modeller finns i az cognitiveservices account deployment.

Om du vill köra det här Azure CLI-kommandot i ett konsolfönster måste du ersätta följande <platshållare> med motsvarande värden för din anpassade modell:

Platshållare Värde
<YOUR_AZURE_SUBSCRIPTION> Namnet eller ID:t för din Azure-prenumeration.
<YOUR_RESOURCE_GROUP> Namnet på din Azure-resursgrupp.
<YOUR_RESOURCE_NAME> Namnet på din Azure OpenAI-resurs.
<YOUR_DEPLOYMENT_NAME> Det namn som du vill använda för modelldistributionen.
<YOUR_FINE_TUNED_MODEL_ID> Namnet på din anpassade modell.
az cognitiveservices account deployment create 
    --resource-group <YOUR_RESOURCE_GROUP>
    --name <YOUR_RESOURCE_NAME>  
    --deployment-name <YOUR_DEPLOYMENT_NAME>
    --model-name <YOUR_FINE_TUNED_MODEL_ID>
    --model-version "1" 
    --model-format OpenAI 
    --sku-capacity "1" 
    --sku-name "Standard"

Använda en distribuerad anpassad modell

När din anpassade modell har distribuerats kan du använda den som vilken annan distribuerad modell som helst. Du kan använda Playgrounds i Azure AI Studio för att experimentera med din nya distribution. Du kan fortsätta att använda samma parametrar med din anpassade modell, till exempel temperature och max_tokens, som du kan med andra distribuerade modeller. För finjusterade babbage-002 modeller och davinci-002 modeller använder du Lekplatsen För slutföranden och API:et För slutföranden. För finjusterade gpt-35-turbo-0613 modeller använder du API:et Chattlekplats och API:et för chattens slutförande.

import os
from openai import AzureOpenAI

client = AzureOpenAI(
  azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"), 
  api_key=os.getenv("AZURE_OPENAI_API_KEY"),  
  api_version="2024-02-01"
)

response = client.chat.completions.create(
    model="gpt-35-turbo-ft", # model = "Custom deployment name you chose for your fine-tuning model"
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Does Azure OpenAI support customer managed keys?"},
        {"role": "assistant", "content": "Yes, customer managed keys are supported by Azure OpenAI."},
        {"role": "user", "content": "Do other Azure AI services support this too?"}
    ]
)

print(response.choices[0].message.content)

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 arbetskatalogen 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äningsbatchen.
train_mean_token_accuracy Procentandelen token i träningsbatchen 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]].
valid_loss Förlusten 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 Studio. 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.

Leta efter din förlust att minska med tiden, och din noggrannhet att öka. Om du ser en skillnad mellan dina tränings- och valideringsdata som kan tyda på att du överanpassar. Prova att träna med färre epoker eller en mindre inlärningstaktsmultiplikator.

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. Enligt beskrivningen i prissättningen för Azure OpenAI Service medför varje anpassad (finjusterad) modell som distribueras en timbaserad värdkostnad oavsett om slutföranden eller chattavslut görs till 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 Service.

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:

Kommentar

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:

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)

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-35-turbo-0613.ft-5fd1918ee65d4cd38a5dcf6835066ed7

from openai import AzureOpenAI

client = AzureOpenAI(
  azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"), 
  api_key=os.getenv("AZURE_OPENAI_API_KEY"),  
  api_version="2024-02-01"  
)

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

job_id = response.id

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

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

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 Studio, eller så kan du generera en lista över modeller för en viss Azure OpenAI-resurs med hjälp av REST-API:et.

Förutsättningar

Modeller

Följande modeller stöder finjustering:

  • babbage-002
  • davinci-002
  • gpt-35-turbo (0613)
  • gpt-35-turbo (1106)
  • gpt-35-turbo (0125)
  • gpt-4 (0613)*
  • gpt-4o (2024-08-06)
  • gpt-4o-mini (2024-07-18)

* Finjustering för den här modellen finns för närvarande i offentlig förhandsversion.

Eller så kan du finjustera en tidigare finjusterad modell, formaterad som base-model.ft-{jobid}.

Se sidan modeller för att kontrollera vilka regioner som för närvarande stöder finjustering.

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:

  1. Förbered dina tränings- och valideringsdata.
  2. Välj en basmodell.
  3. Ladda upp dina träningsdata.
  4. Träna din nya anpassade modell.
  5. Kontrollera statusen för din anpassade modell.
  6. Distribuera din anpassade modell för användning.
  7. Använd din anpassade modell.
  8. Du kan också analysera din anpassade modell för prestanda och passform.

Förbereda dina tränings- och valideringsdata

Dina uppsättningar med träningsdata och valideringsdata består av indata- och utdataexempel för hur du vill att modellen ska fungera.

Olika modelltyper kräver ett annat format för träningsdata.

De tränings- och valideringsdata som du använder måste formateras som ett JSON Lines-dokument (JSONL). För gpt-35-turbo-0613 och andra relaterade modeller måste finjusteringsdatauppsättningen formateras i konversationsformatet som används av API:et för chattslutsättningar .

Om du vill ha en stegvis genomgång av finjustering gpt-35-turbo-0613 läser du självstudiekursen för Finjustering i Azure OpenAI.

Exempel på filformat

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

Chattfilformat för flera svängar

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 måste 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.

Välj basmodellen

Det första steget i att skapa en anpassad modell är att välja en basmodell. I fönstret Basmodell kan du välja en basmodell som ska användas för din anpassade modell. Ditt val påverkar både prestanda och kostnaden för din modell.

Välj basmodellen i listrutan Basmodelltyp och välj sedan Nästa för att fortsätta.

Du kan skapa en anpassad modell från någon av följande tillgängliga basmodeller:

  • babbage-002
  • davinci-002
  • gpt-35-turbo (0613)
  • gpt-35-turbo (1106)
  • gpt-35-turbo (0125)
  • gpt-4 (0613)
  • gpt-4o (2024-08-06)
  • gpt-4o-mini (2023-07-18)

Eller så kan du finjustera en tidigare finjusterad modell, formaterad som base-model.ft-{jobid}.

Skärmbild av modellalternativ med en anpassad finjusterad modell.

Mer information om våra basmodeller som kan finjusteras finns i Modeller.

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 ett Azure Blob Store. Stora filer kan bli instabila när de laddas upp via formulär med flera delar eftersom begäranden är atomiska och inte kan göras om eller återupptas. Mer information om Azure Blob Storage finns i Vad är Azure Blob Storage?

Kommentar

Träningsdatafiler måste formateras som JSONL-filer, kodade i UTF-8 med ett byteordningsmärke (BOM). Filen måste vara mindre än 512 MB.

Ladda upp träningsdata

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

Ladda upp valideringsdata

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

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 återgivningsbarheten för jobbet. Att skicka in samma parametrar för start- och jobb 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/fine_tuning/jobs?api-version=2024-05-01-preview \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_OPENAI_API_KEY" \
  -d '{
    "model": "gpt-35-turbo-0613", 
    "training_file": "<TRAINING_FILE_ID>", 
    "validation_file": "<VALIDATION_FILE_ID>",
    "seed": 105
}'

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 finjustering är:

Namn Typ Beskrivning
batch_size integer Batchstorleken som ska användas för träning. Batchstorleken är antalet träningsexempel som används för att träna ett enda 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 mindre ofta, men med lägre varians.
learning_rate_multiplier Nummer Den inlärningsfrekvensmultiplikator som ska användas för träning. Den finjusterande inlärningsfrekvensen är den ursprungliga inlärningsfrekvensen som används för förträning multiplicerat med det här värdet. 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 för. En epok refererar till en fullständig cykel genom träningsdatauppsättningen.
seed integer Fröet styr återgivningsbarheten för jobbet. 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.

Kontrollera statusen för din anpassade modell

När du har startat ett finjusterat jobb kan det ta lite tid att slutföra. Jobbet kan placeras i kö bakom andra jobb i systemet. Det kan ta minuter eller timmar att träna din modell 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/fine_tuning/jobs/<YOUR-JOB-ID>?api-version=2024-05-01-preview \
  -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/fine_tuning/jobs/{fine_tuning_job_id}/events?api-version=2024-05-01-preview \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_OPENAI_API_KEY" 

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 en ögonblicksbild av din modell innan överanpassningen har inträffat. 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/fine_tuning/jobs/{fine_tuning_job_id}/checkpoints?api-version=2024-05-01-preview \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_OPENAI_API_KEY" 

Säkerhetsutvärdering GPT-4, GPT-4o, GPT-4o-mini finjustering - offentlig förhandsversion

GPT-4o, GPT-4o-mini och GPT-4 är våra mest avancerade modeller som kan finjusteras efter dina behov. Precis som med Azure OpenAI-modeller i allmänhet kommer de avancerade funktionerna i finjusterade modeller med ökade ansvarsfulla AI-utmaningar relaterade till skadligt innehåll, manipulering, mänskligt beteende, sekretessproblem med mera. Läs mer om risker, funktioner och begränsningar i översikten över ansvarsfulla AI-metoder och Transparensanteckning. För att minska riskerna med avancerade finjusterade modeller har vi implementerat ytterligare utvärderingssteg för att identifiera och förhindra skadligt innehåll i träning och utdata från finjusterade modeller. De här stegen baseras på innehållsfiltreringen Microsoft Responsible AI Standard och Azure OpenAI Service.

  • Utvärderingar utförs på dedikerade, kundspecifika, privata arbetsytor;
  • Utvärderingsslutpunkter finns i samma geografiska område som Azure OpenAI-resursen.
  • Träningsdata lagras inte i samband med utvärderingar. Endast den slutliga modellutvärderingen (distribuerbar eller inte distribuerbar) bevaras. och

Filter för GPT-4o, GPT-4o-mini och GPT-4 finjusterade modellutvärderingar är inställda på fördefinierade tröskelvärden och kan inte ändras av kunder. de är inte knutna till någon anpassad innehållsfiltreringskonfiguration som du kanske har skapat.

Datautvärdering

Innan träningen börjar utvärderas dina data för potentiellt skadligt innehåll (våld, sexuellt, hat och rättvisa, självskadebeteende – se kategoridefinitioner här). Om skadligt innehåll identifieras över den angivna allvarlighetsnivån misslyckas ditt träningsjobb och du får ett meddelande som informerar dig om felkategorierna.

Exempelmeddelande:

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

Dina träningsdata utvärderas automatiskt i ditt dataimportjobb som en del av att tillhandahålla finjusteringsfunktionen.

Om finjusteringsjobbet misslyckas på grund av identifiering av skadligt innehåll i träningsdata debiteras du inte.

Modellutvärdering

När träningen har slutförts men innan den finjusterade modellen är tillgänglig för distribution utvärderas den resulterande modellen för potentiellt skadliga svar med hjälp av Azures inbyggda risk- och säkerhetsmått. Med samma metod för testning som vi använder för de grundläggande stora språkmodellerna simulerar vår utvärderingsfunktion en konversation med din finjusterade modell för att bedöma potentialen att mata ut skadligt innehåll, återigen med hjälp av angivna kategorier av skadligt innehåll (våld, sexuellt, hat och rättvisa, självskadebeteende).

Om det visar sig att en modell genererar utdata som innehåller innehåll som identifierats som skadligt över en acceptabel hastighet, informeras du om att din modell inte är tillgänglig för distribution, med information om de specifika skadekategorier som identifierats:

Exempelmeddelande:

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

Skärmbild av ett misslyckat finjusteringsjobb på grund av säkerhetsutvärdering

Precis som med datautvärdering utvärderas modellen automatiskt i ditt finjusteringsjobb som en del av att tillhandahålla finjusteringsfunktionen. Endast den resulterande utvärderingen (som kan distribueras eller inte kan distribueras) loggas av tjänsten. Om distributionen av den finjusterade modellen misslyckas på grund av identifiering av skadligt innehåll i modellutdata debiteras du inte för träningskörningen.

Distribuera en finjusterad modell

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. Enligt beskrivningen i prissättningen för Azure OpenAI Service medför varje anpassad (finjusterad) modell som distribueras en timbaserad värdkostnad oavsett om slutföranden eller chattavslut görs till 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 Service.

Följande Python-exempel visar hur du använder REST API för att skapa en modelldistribution för din anpassade modell. REST-API:et genererar ett namn för distributionen av din anpassade modell.

variabel Definition
token 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.
resource_group Resursgruppens namn för din Azure OpenAI-resurs.
resource_name Azure OpenAI-resursnamnet.
model_deployment_name Det anpassade namnet på din nya finjusterade modelldistribution. Det här är det namn som ska refereras till i koden när du gör samtal om chattens slutförande.
fine_tuned_model Hämta det här värdet från ditt finjusterande jobbresultat i föregående steg. Det kommer att se ut som gpt-35-turbo-0613.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=2023-05-01" \
  -H "Authorization: Bearer <TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{
    "sku": {"name": "standard", "capacity": 1},
    "properties": {
        "model": {
            "format": "OpenAI",
            "name": "<FINE_TUNED_MODEL>",
            "version": "1"
        }
    }
}'

Distribution mellan regioner

Finjustering stöder distribution av en finjusterad modell till en annan region än där modellen ursprungligen finjusterades. Du kan också distribuera till en annan prenumeration/region.

De enda begränsningarna är att den nya regionen också måste ha stöd för finjustering och när du distribuerar mellan prenumerationer måste kontot som genererar auktoriseringstoken för distributionen ha åtkomst till både käll- och målprenumerationerna.

Nedan visas ett exempel på hur du distribuerar en modell som har finjusterats i en prenumeration/region till en annan.

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

För att distribuera mellan samma prenumeration, men olika regioner, skulle du bara ha prenumerations- och resursgrupper som är identiska för både käll- och målvariabler och endast käll- och målresursnamnen måste vara unika.

Distribuera en modell med Azure CLI

I följande exempel visas hur du använder Azure CLI för att distribuera din anpassade modell. Med Azure CLI måste du ange ett namn för distributionen av din anpassade modell. Mer information om hur du använder Azure CLI för att distribuera anpassade modeller finns i az cognitiveservices account deployment.

Om du vill köra det här Azure CLI-kommandot i ett konsolfönster måste du ersätta följande <platshållare> med motsvarande värden för din anpassade modell:

Platshållare Värde
<YOUR_AZURE_SUBSCRIPTION> Namnet eller ID:t för din Azure-prenumeration.
<YOUR_RESOURCE_GROUP> Namnet på din Azure-resursgrupp.
<YOUR_RESOURCE_NAME> Namnet på din Azure OpenAI-resurs.
<YOUR_DEPLOYMENT_NAME> Det namn som du vill använda för modelldistributionen.
<YOUR_FINE_TUNED_MODEL_ID> Namnet på din anpassade modell.
az cognitiveservices account deployment create 
    --resource-group <YOUR_RESOURCE_GROUP>
    --name <YOUR_RESOURCE_NAME>  
    --deployment-name <YOUR_DEPLOYMENT_NAME>
    --model-name <YOUR_FINE_TUNED_MODEL_ID>
    --model-version "1" 
    --model-format OpenAI 
    --sku-capacity "1" 
    --sku-name "Standard"

Använda en distribuerad anpassad modell

När din anpassade modell har distribuerats kan du använda den som vilken annan distribuerad modell som helst. Du kan använda Playgrounds i Azure AI Studio för att experimentera med din nya distribution. Du kan fortsätta att använda samma parametrar med din anpassade modell, till exempel temperature och max_tokens, som du kan med andra distribuerade modeller. För finjusterade babbage-002 modeller och davinci-002 modeller använder du Lekplatsen För slutföranden och API:et För slutföranden. För finjusterade gpt-35-turbo-0613 modeller använder du CHATTlekplatsen och API:et för chattens slutförande.

curl $AZURE_OPENAI_ENDPOINT/openai/deployments/<deployment_name>/chat/completions?api-version=2023-05-15 \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_OPENAI_API_KEY" \
  -d '{"messages":[{"role": "system", "content": "You are a helpful assistant."},{"role": "user", "content": "Does Azure OpenAI support customer managed keys?"},{"role": "assistant", "content": "Yes, customer managed keys are supported by Azure OpenAI."},{"role": "user", "content": "Do other Azure AI services support this too?"}]}'

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

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äningsbatchen.
train_mean_token_accuracy Procentandelen token i träningsbatchen 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]].
valid_loss Förlusten 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 Studio. 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.

Leta efter din förlust att minska med tiden, och din noggrannhet att öka. Om du ser en skillnad mellan dina tränings- och valideringsdata som kan tyda på att du överanpassar. Prova att träna med färre epoker eller en mindre inlärningstaktsmultiplikator.

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:

Kommentar

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:

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-35-turbo-0613.ft-5fd1918ee65d4cd38a5dcf6835066ed7

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

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 Studio, eller så kan du generera en lista över modeller för en viss Azure OpenAI-resurs med hjälp av REST-API:et.

Finjustering av visuellt innehåll

Finjustering är också möjligt med bilder i dina JSONL-filer. Precis som du kan skicka en eller flera bildindata till chatten kan du inkludera samma meddelandetyper i dina träningsdata. Bilder kan tillhandahållas antingen som offentligt tillgängliga URL:er eller data-URL:er som innehåller base64-kodade bilder.

Krav för bilddatauppsättning

  • Träningsfilen kan innehålla högst 50 000 exempel som innehåller bilder (exklusive textexempel).
  • Varje exempel kan ha högst 64 bilder.
  • Varje bild kan vara högst 10 MB.

Format

Bilderna måste vara:

  • JPEG
  • PNG
  • WEBP

Bilderna måste vara i RGB- eller RGBA-avbildningsläge.

Du kan inte ta med bilder som utdata från meddelanden med assistentrollen.

Con tältläge ration-princip

Vi genomsöker dina bilder före träningen för att säkerställa att de följer vår användningsprincip Transparensanteckning. Detta kan medföra svarstid i filvalidering innan finjusteringen börjar.

Bilder som innehåller följande kommer att undantas från datauppsättningen och används inte för träning:

  • Personer
  • Ansikten
  • CAPTCHAs

Viktigt!

För syn finjustering av ansiktsgallringsprocessen: Vi screenar för ansikten/personer för att hoppa över dessa bilder från att träna modellen. Screeningfunktionen utnyttjar ansiktsidentifiering utan ansiktsidentifiering, vilket innebär att vi inte skapar ansiktsmallar eller mäter specifik ansiktsgeometri, och tekniken som används för att screena för ansikten kan inte unikt identifiera individerna. Mer information om data och sekretess för ansikte finns i – Data och sekretess för Face – Azure AI-tjänster | Microsoft Learn.

Felsökning

Hur gör jag för att aktivera finjustering?

För att få åtkomst till finjusteringen behöver du Cognitive Services OpenAI-deltagare tilldelad. Även personer med behörigheter som tjänstadministratör på hög nivå skulle behöva det här kontot uttryckligen inställt för att få åtkomst till finjustering. Mer information finns i vägledningen för rollbaserad åtkomstkontroll.

Varför misslyckades min uppladdning?

Om filuppladdningen misslyckas i Azure OpenAI Studio kan du visa felmeddelandet under "datafiler" i Azure OpenAI Studio. Hovra musen över där det står "fel" (under statuskolumnen) och en förklaring av felet visas.

Skärmbild av felmeddelandet för finjustering.

Min finjusterade modell verkar inte ha förbättrats

  • Systemmeddelande saknas: Du måste ange ett systemmeddelande när du finjusterar. Du vill ange samma systemmeddelande när du använder den finjusterade modellen. Om du anger ett annat systemmeddelande kan du se andra resultat än vad du finjusterade för.

  • Inte tillräckligt med data: medan 10 är det minsta antalet för att pipelinen ska kunna köras behöver du hundratals till tusentals datapunkter för att lära modellen en ny färdighet. För få datapunkter riskerar överanpassning och dålig generalisering. Din finjusterade modell kan fungera bra på träningsdata, men dåligt på andra data eftersom den har memorerat träningsexemplen i stället för inlärningsmönster. För bästa resultat planerar du att förbereda en datauppsättning med hundratals eller tusentals datapunkter.

  • Dåliga data: En dåligt kurerad eller icke-representativ datauppsättning skapar en modell av låg kvalitet. Din modell kan lära sig felaktiga eller partiska mönster från din datauppsättning. Om du till exempel tränar en chattrobot för kundtjänst, men endast tillhandahåller träningsdata för ett scenario (t.ex. objektreturer) vet det inte hur du ska svara på andra scenarier. Eller om dina träningsdata är dåliga (innehåller felaktiga svar) lär sig din modell att ge felaktiga resultat.

Finjustering med syn

Vad du ska göra om dina bilder hoppas över

Dina bilder kan hoppas över av följande skäl:

  • innehåller CAPTCHAs
  • innehåller personer
  • innehåller ansikten

Ta bort bilden. För tillfället kan vi inte finjustera modeller med bilder som innehåller dessa entiteter.

Vanliga problem

Problem Orsak/lösning
Avbildningar hoppades över Bilder kan hoppas över av följande skäl: innehåller CAPTCHA:er, personer eller ansikten.

Ta bort bilden. För tillfället kan vi inte finjustera modeller med bilder som innehåller dessa entiteter.
Otillgänglig URL Kontrollera att bild-URL:en är offentligt tillgänglig.
Bilden är för stor Kontrollera att dina bilder ligger inom datamängdens storleksgränser.
Ogiltigt bildformat Kontrollera att dina bilder ligger i vårt datamängdsformat.

Ladda upp stora filer

Träningsfilerna kan bli ganska stora. Du kan ladda upp filer upp till 8 GB i flera delar med hjälp av API:et För uppladdningar i stället för Files API, som endast tillåter filuppladdningar på upp till 512 MB.

Minska träningskostnaden

Om du anger detaljparametern för en bild till låg, ändras bilden till 512 med 512 bildpunkter och representeras endast av 85 token oavsett storlek. Detta minskar kostnaden för utbildning.

{ 

    "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", 

        "detail": "low" 

    } 

} 

Andra överväganden för finjustering av visioner

Om du vill kontrollera bildtolkningens återgivning anger du detaljparametern image_url för till low, higheller auto för varje bild. Detta påverkar också antalet token per bild som modellen ser under träningstiden och påverkar kostnaden för träning.

Nästa steg

  • Utforska finjusteringsfunktionerna i självstudiekursen för finjustering av Azure OpenAI.
  • Granska regional tillgänglighet för finjusteringsmodellen
  • Läs mer om Azure OpenAI-kvoter