Een model aanpassen met fine-tuning
Met Azure OpenAI Service kunt u onze modellen aanpassen aan uw persoonlijke gegevenssets met behulp van een proces dat bekend staat als fine-tuning. Met deze aanpassingsstap kunt u meer uit de service halen door het volgende te bieden:
- Resultaten van hogere kwaliteit dan wat u kunt krijgen van prompt engineering
- De mogelijkheid om meer voorbeelden te trainen dan in de maximale aanvraagcontextlimiet van een model past.
- Tokenbesparingen vanwege kortere prompts
- Aanvragen met een lagere latentie, met name bij het gebruik van kleinere modellen.
In tegenstelling tot weinig-shot learning verbetert het aanpassen van het model door het model te trainen op veel meer voorbeelden dan in een prompt past, zodat u betere resultaten kunt bereiken voor een groot aantal taken. Omdat de gewichten van het basismodel worden aangepast om de prestaties van de specifieke taak te verbeteren, hoeft u niet zoveel voorbeelden of instructies in uw prompt op te nemen. Dit betekent dat er minder tekst wordt verzonden en dat er minder tokens worden verwerkt voor elke API-aanroep, waardoor mogelijk kosten worden bespaard en de latentie van aanvragen wordt verbeterd.
We gebruiken LoRA, of een lage benadering, om modellen nauwkeuriger af te stemmen op een manier die hun complexiteit vermindert zonder dat dit van invloed is op hun prestaties. Deze methode werkt door de oorspronkelijke matrix met hoge rang te benaderen met een lagere rang, waardoor alleen een kleinere subset van belangrijke parameters tijdens de begeleide trainingsfase wordt verfijnd, waardoor het model beter beheersbaar en efficiënter wordt. Voor gebruikers maakt dit training sneller en betaalbaarer dan andere technieken.
Notitie
Azure OpenAI biedt momenteel alleen ondersteuning voor het verfijnen van tekst-naar-tekst voor alle ondersteunde modellen, waaronder GPT-4o mini.
Er zijn twee unieke verfijningservaringen in Azure AI Studio. Met beide kunt u Azure OpenAI-modellen verfijnen, maar alleen de hub-/projectweergave ondersteunt het afstemmen van niet-Azure OpenAI-modellen. Als u alleen de azure OpenAI-verfijningservaring gebruikt die beschikbaar is wanneer u een resource selecteert in een regio waar het afstemmen wordt ondersteund.
Vereisten
- Lees de handleiding Wanneer u Azure OpenAI-afstemming gebruikt.
- Een Azure-abonnement. Maak gratis een account.
- Een Azure OpenAI-resource die zich in een regio bevindt die ondersteuning biedt voor het afstemmen van het Azure OpenAI-model. Controleer de overzichtstabel model en de beschikbaarheid van regio's voor de lijst met beschikbare modellen per regio en ondersteunde functionaliteit. Zie Een resource maken en een model implementeren met Azure OpenAI voor meer informatie.
- Voor het afstemmen van de toegang is Cognitive Services OpenAI-inzender vereist.
- Als u nog geen toegang hebt tot het quotum en modellen implementeert in Azure AI Studio, hebt u extra machtigingen nodig.
Modellen
De volgende modellen ondersteunen het afstemmen:
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)
* Het afstemmen van dit model is momenteel beschikbaar als openbare preview.
U kunt ook een eerder afgestemd model verfijnen, opgemaakt als base-model.ft-{jobid}.
Raadpleeg de modellenpagina om te controleren welke regio's momenteel ondersteuning bieden voor afstemming.
De werkstroom voor Azure AI Studio controleren
Neem even de tijd om de werkstroom voor het afstemmen van Azure AI Studio te bekijken:
- Bereid uw training en validatiegegevens voor.
- Gebruik de wizard Aangepast model maken in Azure AI Studio om uw aangepaste model te trainen.
- Selecteer een basismodel.
- Kies uw trainingsgegevens.
- Kies desgewenst uw validatiegegevens.
- Configureer desgewenst taakparameters voor uw taakafstemming.
- Controleer uw keuzes en train uw nieuwe aangepaste model.
- Controleer de status van uw aangepaste aangepaste model.
- Implementeer uw aangepaste model voor gebruik.
- Gebruik uw aangepaste model.
- Analyseer eventueel uw aangepaste model voor prestaties en fit.
Uw training en validatiegegevens voorbereiden
Uw trainingsgegevens en validatiegegevenssets bestaan uit voorbeelden van invoer en uitvoer voor hoe u het model wilt laten presteren.
Voor verschillende modeltypen is een andere indeling van trainingsgegevens vereist.
De trainings- en validatiegegevens die u gebruikt , moeten worden opgemaakt als een JSON Lines-document (JSONL). Voor gpt-35-turbo
(alle versies) gpt-4
, gpt-4o
en gpt-4o-mini
, moet de gegevensset voor het afstemmen worden opgemaakt in de gespreksindeling die wordt gebruikt door de API voor voltooiingen van chat.
Als u een stapsgewijze procedure voor het afstemmen van een gpt-4o-mini
model (2024-07-18) wilt, raadpleegt u de zelfstudie voor het afstemmen van Azure OpenAI.
Voorbeeld van bestandsindeling
{"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?"}]}
Multi-turn chat-bestandsindeling Azure OpenAI
Meerdere beurten van een gesprek in één regel van uw jsonl-trainingsbestand worden ook ondersteund. Als u het afstemmen van specifieke assistentberichten wilt overslaan, voegt u het optionele weight
sleutelwaardepaar toe. Momenteel weight
kan worden ingesteld op 0 of 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}]}
Chatvoltooiingen met visie
{"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."}]}
Naast de JSONL-indeling moeten trainings- en validatiegegevensbestanden worden gecodeerd in UTF-8 en een byte-ordermarkering (BOM) bevatten. Het bestand moet kleiner zijn dan 512 MB.
Uw trainings- en validatiegegevenssets maken
Hoe meer trainingsvoorbeelden u hebt, hoe beter. Het afstemmen van taken gaat niet verder zonder ten minste 10 trainingsvoorbeelden, maar zo'n klein aantal is niet voldoende om merkbare invloed te hebben op modelreacties. Het is raadzaam honderden, zo niet duizenden, trainingsvoorbeelden te bieden om succesvol te zijn.
Over het algemeen kan het verdubbelen van de grootte van de gegevensset leiden tot een lineaire toename van de modelkwaliteit. Maar houd er rekening mee dat voorbeelden van lage kwaliteit een negatieve invloed kunnen hebben op de prestaties. Als u het model traint op een grote hoeveelheid interne gegevens, zonder eerst de gegevensset te verwijderen voor alleen de voorbeelden van de hoogste kwaliteit, zou u kunnen eindigen met een model dat veel slechter presteert dan verwacht.
De wizard Aangepast model maken gebruiken
Azure AI Studio biedt de wizard Aangepast model maken, zodat u interactief een nauwkeurig afgestemd model voor uw Azure-resource kunt maken en trainen.
Open Azure AI Studio op https://oai.azure.com/ en meld u aan met referenties die toegang hebben tot uw Azure OpenAI-resource. Selecteer tijdens de aanmeldingswerkstroom de juiste map, het Azure-abonnement en de Azure OpenAI-resource.
Blader in Azure AI Studio naar het deelvenster Hulpprogramma's > verfijnen en selecteer Het model verfijnen.
De wizard Aangepast model maken wordt geopend.
Het basismodel selecteren
De eerste stap bij het maken van een aangepast model is het kiezen van een basismodel. In het deelvenster Basismodel kunt u een basismodel kiezen dat u voor uw aangepaste model wilt gebruiken. Uw keuze beïnvloedt zowel de prestaties als de kosten van uw model.
Selecteer het basismodel in de vervolgkeuzelijst Basismodeltype en selecteer vervolgens Volgende om door te gaan.
U kunt een aangepast model maken op basis van een van de volgende beschikbare basismodellen:
babbage-002
davinci-002
gpt-35-turbo
(0613)gpt-35-turbo
(1106)gpt-35-turbo
(0125)gpt-4
(0613)U kunt ook een eerder afgestemd model verfijnen, opgemaakt als base-model.ft-{jobid}.
Zie Modellen voor meer informatie over onze basismodellen die kunnen worden afgestemd.
Uw trainingsgegevens kiezen
De volgende stap bestaat uit het kiezen van bestaande voorbereide trainingsgegevens of het uploaden van nieuwe voorbereide trainingsgegevens die moeten worden gebruikt bij het aanpassen van uw model. Het deelvenster Trainingsgegevens bevat bestaande, eerder geüploade gegevenssets en biedt ook opties voor het uploaden van nieuwe trainingsgegevens.
Als uw trainingsgegevens al naar de service zijn geüpload, selecteert u Bestanden in Azure OpenAI Connection.
- Selecteer het bestand in de vervolgkeuzelijst die wordt weergegeven.
Als u nieuwe trainingsgegevens wilt uploaden, gebruikt u een van de volgende opties:
Selecteer Lokaal bestand om trainingsgegevens uit een lokaal bestand te uploaden.
Selecteer Azure Blob of andere gedeelde weblocaties om trainingsgegevens te importeren uit Azure Blob of een andere gedeelde weblocatie.
Voor grote gegevensbestanden raden we u aan om te importeren uit een Azure Blob-archief. Grote bestanden kunnen instabiel worden wanneer ze worden geüpload via formulieren met meerdere onderdelen, omdat de aanvragen atomisch zijn en niet opnieuw kunnen worden geprobeerd of hervat. Zie Wat is Azure Blob Storage?
Notitie
Trainingsgegevensbestanden moeten worden opgemaakt als JSONL-bestanden, gecodeerd in UTF-8 met een byte-ordermarkering (BOM). Het bestand moet kleiner zijn dan 512 MB.
Trainingsgegevens uploaden vanuit een lokaal bestand
U kunt een nieuwe trainingsgegevensset uploaden naar de service vanuit een lokaal bestand met behulp van een van de volgende methoden:
Sleep het bestand naar het clientgebied van het deelvenster Trainingsgegevens en selecteer vervolgens Bestand uploaden.
Selecteer Bladeren naar een bestand in het clientgebied van het deelvenster Trainingsgegevens, kies het bestand dat u wilt uploaden vanuit het dialoogvenster Openen en selecteer vervolgens Bestand uploaden.
Nadat u de trainingsgegevensset hebt geselecteerd en geüpload, selecteert u Volgende om door te gaan.
Trainingsgegevens importeren uit Azure Blob Store
U kunt een trainingsgegevensset importeren uit Azure Blob of een andere gedeelde weblocatie door de naam en locatie van het bestand op te geven.
Voer de bestandsnaam voor het bestand in.
Geef voor de bestandslocatie de Azure Blob-URL, de Shared Access Signature (SAS) van Azure Storage op of een andere koppeling naar een toegankelijke gedeelde weblocatie.
Selecteer Importeren om de trainingsgegevensset naar de service te importeren.
Nadat u de trainingsgegevensset hebt geselecteerd en geüpload, selecteert u Volgende om door te gaan.
Uw validatiegegevens kiezen
De volgende stap bevat opties voor het configureren van het model voor het gebruik van validatiegegevens in het trainingsproces. Als u geen validatiegegevens wilt gebruiken, kunt u Volgende kiezen om door te gaan met de geavanceerde opties voor het model. Als u een validatiegegevensset hebt, kunt u bestaande voorbereide validatiegegevens kiezen of nieuwe voorbereide validatiegegevens uploaden om te gebruiken bij het aanpassen van uw model.
In het deelvenster Validatiegegevens worden bestaande, eerder geüploade trainings- en validatiegegevenssets weergegeven en worden opties geboden waarmee u nieuwe validatiegegevens kunt uploaden.
Als uw validatiegegevens al naar de service zijn geüpload, selecteert u Gegevensset kiezen.
- Selecteer het bestand in de lijst die wordt weergegeven in het deelvenster Validatiegegevens .
Als u nieuwe validatiegegevens wilt uploaden, gebruikt u een van de volgende opties:
Selecteer Lokaal bestand om validatiegegevens uit een lokaal bestand te uploaden.
Selecteer Azure Blob of andere gedeelde weblocaties om validatiegegevens te importeren uit Azure Blob of een andere gedeelde weblocatie.
Voor grote gegevensbestanden raden we u aan om te importeren uit een Azure Blob-archief. Grote bestanden kunnen instabiel worden wanneer ze worden geüpload via formulieren met meerdere onderdelen, omdat de aanvragen atomisch zijn en niet opnieuw kunnen worden geprobeerd of hervat.
Notitie
Net als bij trainingsgegevensbestanden moeten validatiegegevensbestanden worden opgemaakt als JSONL-bestanden, gecodeerd in UTF-8 met een bytevolgordemarkering (BOM). Het bestand moet kleiner zijn dan 512 MB.
Validatiegegevens uploaden uit een lokaal bestand
U kunt een nieuwe validatiegegevensset uploaden naar de service vanuit een lokaal bestand met behulp van een van de volgende methoden:
Sleep het bestand naar het clientgebied van het deelvenster Validatiegegevens en selecteer vervolgens Bestand uploaden.
Selecteer Bladeren naar een bestand in het clientgebied van het deelvenster Validatiegegevens, kies het bestand dat u wilt uploaden vanuit het dialoogvenster Openen en selecteer vervolgens Bestand uploaden.
Nadat u de validatiegegevensset hebt geselecteerd en geüpload, selecteert u Volgende om door te gaan.
Validatiegegevens importeren uit Azure Blob Store
U kunt een validatiegegevensset importeren uit Azure Blob of een andere gedeelde weblocatie door de naam en locatie van het bestand op te geven.
Voer de bestandsnaam voor het bestand in.
Geef voor de bestandslocatie de Azure Blob-URL, de Shared Access Signature (SAS) van Azure Storage op of een andere koppeling naar een toegankelijke gedeelde weblocatie.
Selecteer Importeren om de trainingsgegevensset naar de service te importeren.
Nadat u de validatiegegevensset hebt geselecteerd en geüpload, selecteert u Volgende om door te gaan.
Taakparameters configureren
De wizard Aangepast model maken toont de parameters voor het trainen van uw aangepaste model in het deelvenster Taakparameters . De volgende parameters zijn beschikbaar:
Naam | Type | Beschrijving |
---|---|---|
batch_size |
geheel getal | De batchgrootte die moet worden gebruikt voor training. De batchgrootte is het aantal trainingsvoorbeelden dat wordt gebruikt voor het trainen van één vooruit- en achterwaartse pass. Over het algemeen hebben we vastgesteld dat grotere batchgrootten meestal beter werken voor grotere gegevenssets. De standaardwaarde en de maximumwaarde voor deze eigenschap zijn specifiek voor een basismodel. Een grotere batchgrootte betekent dat modelparameters minder vaak worden bijgewerkt, maar met een lagere variantie. |
learning_rate_multiplier |
Nummer | De vermenigvuldiger met leersnelheid die moet worden gebruikt voor training. Het afstemmen van de leersnelheid is het oorspronkelijke leerpercentage dat wordt gebruikt voor pretraining vermenigvuldigd met deze waarde. Grotere leersnelheden presteren meestal beter met grotere batchgrootten. We raden u aan te experimenteren met waarden in het bereik 0,02 tot 0,2 om te zien wat de beste resultaten oplevert. Een kleiner leerpercentage kan nuttig zijn om overfitting te voorkomen. |
n_epochs |
geheel getal | Het aantal tijdvakken waarvoor het model moet worden getraind. Een tijdsperiode verwijst naar één volledige cyclus door de trainingsgegevensset. |
seed |
geheel getal | Het zaad bepaalt de reproduceerbaarheid van de taak. Het doorgeven van dezelfde seed- en taakparameters moet dezelfde resultaten opleveren, maar kan in zeldzame gevallen verschillen. Als er geen seed is opgegeven, wordt er een voor u gegenereerd |
Selecteer Standaard om de standaardwaarden te gebruiken voor de taak voor het afstemmen of selecteer Aangepast om de hyperparameterwaarden weer te geven en te bewerken. Wanneer de standaardinstellingen zijn geselecteerd, bepalen we de juiste waarde op basis van uw trainingsgegevens.
Nadat u de geavanceerde opties hebt geconfigureerd, selecteert u Volgende om uw keuzes te controleren en uw nauwkeurig afgestemde model te trainen.
Uw keuzes controleren en uw model trainen
In het deelvenster Controleren van de wizard wordt informatie weergegeven over uw configuratieopties.
Als u klaar bent om uw model te trainen, selecteert u Trainingstaak starten om de taak voor het afstemmen te starten en terug te keren naar het deelvenster Modellen .
De status van uw aangepaste model controleren
Het deelvenster Modellen bevat informatie over uw aangepaste model op het tabblad Aangepaste modellen . Het tabblad bevat informatie over de status en taak-id van de taak voor het aanpassen van uw aangepaste model. Wanneer de taak is voltooid, wordt op het tabblad de bestands-id van het resultaatbestand weergegeven. Mogelijk moet u Vernieuwen selecteren om een bijgewerkte status voor de modeltrainingstaak weer te geven.
Nadat u een taak hebt verfijnd, kan het enige tijd duren voordat de taak is voltooid. Uw taak wordt mogelijk in de wachtrij geplaatst achter andere taken in het systeem. Het trainen van uw model kan enkele minuten of uren duren, afhankelijk van de grootte van het model en de gegevensset.
Hier volgen enkele taken die u in het deelvenster Modellen kunt uitvoeren:
Controleer de status van de taak voor het afstemmen van uw aangepaste model in de kolom Status van het tabblad Aangepaste modellen .
Selecteer in de kolom Modelnaam de modelnaam om meer informatie over het aangepaste model weer te geven. U ziet de status van de taak voor het afstemmen van de taak, trainingsresultaten, trainingsgebeurtenissen en hyperparameters die in de taak worden gebruikt.
Selecteer Trainingsbestand downloaden om de trainingsgegevens te downloaden die u voor het model hebt gebruikt.
Selecteer Resultaten downloaden om het resultaatbestand te downloaden dat is gekoppeld aan de taak voor het afstemmen van uw model en het analyseren van uw aangepaste model voor trainings- en validatieprestaties.
Selecteer Vernieuwen om de informatie op de pagina bij te werken.
Controlepunten
Wanneer elk trainingstijdperk een controlepunt voltooit, wordt er een controlepunt gegenereerd. Een controlepunt is een volledig functionele versie van een model dat zowel kan worden geïmplementeerd als gebruikt als het doelmodel voor volgende taakafstemming. Controlepunten kunnen met name nuttig zijn, omdat ze een momentopname van uw model kunnen bieden voordat er overfitting is opgetreden. Wanneer een taak voor het afstemmen is voltooid, beschikt u over de drie meest recente versies van het model die u kunt implementeren.
Veiligheidsevaluatie GPT-4, GPT-4o en GPT-4o-miniafstemming - openbare preview
GPT-4o, GPT-4o-mini en GPT-4 zijn onze meest geavanceerde modellen die kunnen worden afgestemd op uw behoeften. Net als bij Azure OpenAI-modellen worden de geavanceerde mogelijkheden van nauwkeurig afgestemde modellen geleverd met verhoogde verantwoorde AI-uitdagingen met betrekking tot schadelijke inhoud, manipulatie, menselijk gedrag, privacyproblemen en meer. Meer informatie over risico's, mogelijkheden en beperkingen in het overzicht van verantwoorde AI-procedures en transparantienotitie. Om de risico's die gepaard gaan met geavanceerde verfijnde modellen te beperken, hebben we aanvullende evaluatiestappen geïmplementeerd om schadelijke inhoud in de training en uitvoer van nauwkeurig afgestemde modellen te detecteren en te voorkomen. Deze stappen worden geaard in de inhoudsfiltering voor Microsoft Responsible AI Standard en Azure OpenAI Service.
- Evaluaties worden uitgevoerd in toegewezen, klantspecifieke, privéwerkruimten;
- Evaluatie-eindpunten bevinden zich in dezelfde geografie als de Azure OpenAI-resource;
- Trainingsgegevens worden niet opgeslagen in verband met het uitvoeren van evaluaties; alleen de uiteindelijke modelevaluatie (te implementeren of niet te implementeren) blijft bestaan; en
GPT-4o, GPT-4o-mini en GPT-4 nauwkeurig afgestemde modelevaluatiefilters zijn ingesteld op vooraf gedefinieerde drempelwaarden en kunnen niet worden gewijzigd door klanten; ze zijn niet gekoppeld aan een aangepaste configuratie voor het filteren van inhoud die u mogelijk hebt gemaakt.
Gegevensevaluatie
Voordat de training begint, worden uw gegevens geëvalueerd op mogelijk schadelijke inhoud (geweld, seksueel, haat en billijkheid, zelfschadiging– zie categoriedefinities hier). Als er schadelijke inhoud wordt gedetecteerd boven het opgegeven ernstniveau, mislukt uw trainingstaak en ontvangt u een bericht met de informatie over de foutcategorieën.
Voorbeeldbericht:
The provided training data failed RAI checks for harm types: [hate_fairness, self_harm, violence]. Please fix the data and try again.
Uw trainingsgegevens worden automatisch geëvalueerd binnen uw gegevensimporttaak als onderdeel van het bieden van de mogelijkheid tot afstemming.
Als de taak voor het afstemmen mislukt vanwege de detectie van schadelijke inhoud in trainingsgegevens, worden er geen kosten in rekening gebracht.
Modelevaluatie
Nadat de training is voltooid, maar voordat het nauwkeurig afgestemde model beschikbaar is voor implementatie, wordt het resulterende model geëvalueerd op mogelijk schadelijke reacties met behulp van de ingebouwde metrische gegevens over risico's en veiligheid van Azure. Met dezelfde methode voor het testen dat we gebruiken voor de basis grote taalmodellen, simuleert onze evaluatiefunctie een gesprek met uw nauwkeurig afgestemde model om het potentieel voor het uitvoeren van schadelijke inhoud te beoordelen, opnieuw met behulp van opgegeven schadelijke inhoudscategorieën (geweld, seksueel, haat en billijkheid, zelfbeschadiging).
Als een model wordt gevonden om uitvoer te genereren die inhoud bevat die is gedetecteerd als schadelijk boven een acceptabel tarief, wordt u ervan op de hoogte gesteld dat uw model niet beschikbaar is voor implementatie, met informatie over de specifieke categorieën van schade die zijn gedetecteerd:
Voorbeeldbericht:
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.
Net als bij gegevensevaluatie wordt het model automatisch geëvalueerd binnen uw taak voor het afstemmen van de functie voor afstemming. Alleen de resulterende evaluatie (te implementeren of niet te implementeren) wordt geregistreerd door de service. Als de implementatie van het nauwkeurig afgestemde model mislukt vanwege de detectie van schadelijke inhoud in modeluitvoer, worden er geen kosten in rekening gebracht voor de trainingsuitvoering.
Een nauwkeurig afgestemd model implementeren
Wanneer de taak voor het afstemmen is voltooid, kunt u het aangepaste model implementeren vanuit het deelvenster Modellen . U moet uw aangepaste model implementeren om het beschikbaar te maken voor gebruik met voltooiingsoproepen.
Belangrijk
Nadat u een aangepast model hebt geïmplementeerd, wordt de implementatie verwijderd als de implementatie langer dan vijftien (15) dagen inactief blijft. De implementatie van een aangepast model is inactief als het model meer dan vijftien (15) dagen geleden is geïmplementeerd en er tijdens een continue periode van 15 dagen geen voltooiingen of chatvoltooiingen zijn gedaan.
Het verwijderen van een inactieve implementatie is niet van invloed op het onderliggende aangepaste model en het aangepaste model kan op elk gewenst moment opnieuw worden geïmplementeerd. Zoals beschreven in prijzen van De Azure OpenAI-service, worden voor elk aangepast (nauwkeurig) model dat wordt geïmplementeerd, een uurlijkse hostingkosten in rekening gebracht, ongeacht of er aanroepen voor voltooiingen of chats in het model worden gedaan. Voor meer informatie over het plannen en beheren van kosten met Azure OpenAI raadpleegt u de richtlijnen in Plan voor het beheren van kosten voor Azure OpenAI Service.
Notitie
Er is slechts één implementatie toegestaan voor een aangepast model. Er wordt een foutbericht weergegeven als u een al geïmplementeerd aangepast model selecteert.
Als u uw aangepaste model wilt implementeren, selecteert u het aangepaste model dat u wilt implementeren en selecteert u vervolgens Het model implementeren.
Het dialoogvenster Model implementeren wordt geopend. Voer in het dialoogvenster uw implementatienaam in en selecteer Vervolgens Maken om de implementatie van uw aangepaste model te starten.
U kunt de voortgang van uw implementatie controleren in het deelvenster Implementaties in Azure AI Studio.
Implementatie tussen regio's
Afstemming ondersteunt het implementeren van een nauwkeurig afgestemd model naar een andere regio dan waar het model oorspronkelijk is afgestemd. U kunt ook implementeren in een ander abonnement/een andere regio.
De enige beperkingen zijn dat de nieuwe regio ook ondersteuning moet bieden voor het afstemmen en bij het implementeren van meerdere abonnementen moet het account dat het autorisatietoken voor de implementatie genereert, toegang hebben tot zowel de bron- als doelabonnementen.
Implementatie tussen abonnementen/regio's kan worden uitgevoerd via Python of REST.
Een geïmplementeerd aangepast model gebruiken
Nadat uw aangepaste model is geïmplementeerd, kunt u dit gebruiken zoals elk ander geïmplementeerd model. U kunt de Playgrounds in Azure AI Studio gebruiken om te experimenteren met uw nieuwe implementatie. U kunt dezelfde parameters blijven gebruiken met uw aangepaste model, zoals temperature
en max_tokens
, zoals u kunt met andere geïmplementeerde modellen. Voor nauwkeurige afstemming babbage-002
en davinci-002
modellen gebruikt u de Completions Playground en de Completions-API. Voor nauwkeurig afgestemde gpt-35-turbo-0613
modellen gebruikt u de Chat-speeltuin en de CHAT-voltooiings-API.
Uw aangepaste model analyseren
Azure OpenAI voegt een resultaatbestand met de naam results.csv toe aan elke taak voor het afstemmen nadat deze is voltooid. U kunt het resultaatbestand gebruiken om de trainings- en validatieprestaties van uw aangepaste model te analyseren. De bestands-id voor het resultaatbestand wordt weergegeven voor elk aangepast model in de kolom Resultaatbestand-id in het deelvenster Modellen voor Azure AI Studio. U kunt de bestands-id gebruiken om het resultaatbestand te identificeren en te downloaden vanuit het deelvenster Gegevensbestanden van Azure AI Studio.
Het resultaatbestand is een CSV-bestand dat een veldnamenrij en een rij bevat voor elke trainingsstap die wordt uitgevoerd door de taak voor het afstemmen. Het resultaatbestand bevat de volgende kolommen:
Kolomnaam | Beschrijving |
---|---|
step |
Het nummer van de trainingsstap. Een trainingsstap vertegenwoordigt één pas, vooruit en achteruit, op een batch trainingsgegevens. |
train_loss |
Het verlies voor de trainingsbatch. |
train_mean_token_accuracy |
Het percentage tokens in de trainingsbatch correct voorspeld door het model. Als de batchgrootte bijvoorbeeld is ingesteld op 3 en uw gegevens voltooiingen [[1, 2], [0, 5], [4, 2]] bevatten, wordt deze waarde ingesteld op 0,83 (5 van 6) als het model is voorspeld [[1, 1], [0, 5], [4, 2]] . |
valid_loss |
Het verlies voor de validatiebatch. |
validation_mean_token_accuracy |
Het percentage tokens in de validatiebatch correct voorspeld door het model. Als de batchgrootte bijvoorbeeld is ingesteld op 3 en uw gegevens voltooiingen [[1, 2], [0, 5], [4, 2]] bevatten, wordt deze waarde ingesteld op 0,83 (5 van 6) als het model is voorspeld [[1, 1], [0, 5], [4, 2]] . |
full_valid_loss |
Het validatieverlies dat aan het einde van elk tijdvak wordt berekend. Wanneer de training goed gaat, moet verlies afnemen. |
full_valid_mean_token_accuracy |
De geldige gemiddelde tokennauwkeurigheid die aan het einde van elk tijdvak wordt berekend. Wanneer de training goed gaat, moet de nauwkeurigheid van tokens toenemen. |
U kunt ook de gegevens in uw results.csv-bestand weergeven als plots in Azure AI Studio. Selecteer de koppeling voor uw getrainde model en u ziet drie grafieken: verlies, gemiddelde tokennauwkeurigheid en tokennauwkeurigheid. Als u validatiegegevens hebt opgegeven, worden beide gegevenssets weergegeven op dezelfde plot.
Zoek naar uw verlies om in de loop van de tijd te verminderen en uw nauwkeurigheid om te verhogen. Als u een verschil ziet tussen uw training en validatiegegevens, kan dit erop wijzen dat u overfitting gebruikt. Probeer training met minder tijdvakken of een kleinere vermenigvuldiging van leersnelheid.
Uw implementaties, aangepaste modellen en trainingsbestanden opschonen
Wanneer u klaar bent met uw aangepaste model, kunt u de implementatie en het model verwijderen. U kunt ook de trainings- en validatiebestanden verwijderen die u naar de service hebt geüpload, indien nodig.
Uw modelimplementatie verwijderen
Belangrijk
Nadat u een aangepast model hebt geïmplementeerd, wordt de implementatie verwijderd als de implementatie langer dan vijftien (15) dagen inactief blijft. De implementatie van een aangepast model is inactief als het model meer dan vijftien (15) dagen geleden is geïmplementeerd en er tijdens een continue periode van 15 dagen geen voltooiingen of chatvoltooiingen zijn gedaan.
Het verwijderen van een inactieve implementatie is niet van invloed op het onderliggende aangepaste model en het aangepaste model kan op elk gewenst moment opnieuw worden geïmplementeerd. Zoals beschreven in prijzen van De Azure OpenAI-service, worden voor elk aangepast (nauwkeurig) model dat wordt geïmplementeerd, een uurlijkse hostingkosten in rekening gebracht, ongeacht of er aanroepen voor voltooiingen of chats in het model worden gedaan. Voor meer informatie over het plannen en beheren van kosten met Azure OpenAI raadpleegt u de richtlijnen in Plan voor het beheren van kosten voor Azure OpenAI Service.
U kunt de implementatie voor uw aangepaste model verwijderen in het deelvenster Implementaties in Azure AI Studio. Selecteer de implementatie die u wilt verwijderen en selecteer vervolgens Verwijderen om de implementatie te verwijderen.
Uw aangepaste model verwijderen
U kunt een aangepast model verwijderen in het deelvenster Modellen in Azure AI Studio. Selecteer het aangepaste model dat u wilt verwijderen op het tabblad Aangepaste modellen en selecteer vervolgens Verwijderen om het aangepaste model te verwijderen.
Notitie
U kunt een aangepast model niet verwijderen als het een bestaande implementatie heeft. U moet eerst uw modelimplementatie verwijderen voordat u uw aangepaste model kunt verwijderen.
Uw trainingsbestanden verwijderen
U kunt eventueel trainings- en validatiebestanden verwijderen die u hebt geüpload voor training en resultaatbestanden die tijdens de training zijn gegenereerd, in het deelvenster Beheergegevens> in Azure AI Studio. Selecteer het bestand dat u wilt verwijderen en selecteer vervolgens Verwijderen om het bestand te verwijderen.
Continue afstemming
Zodra u een nauwkeurig afgestemd model hebt gemaakt, kunt u het model na verloop van tijd verder verfijnen door verder af te stemmen. Continue afstemming is het iteratieve proces van het selecteren van een al afgestemd model als basismodel en het verder afstemmen op nieuwe sets trainingsvoorbeelden.
Als u een model wilt verfijnen dat u eerder hebt afgestemd, gebruikt u hetzelfde proces als beschreven in het maken van een aangepast model , maar in plaats van de naam van een algemeen basismodel op te geven, geeft u het al afgestemde model op. Een aangepast aangepast model ziet er als volgt uit gpt-35-turbo-0613.ft-5fd1918ee65d4cd38a5dcf6835066ed7
We raden u ook aan de suffix
parameter op te geven om onderscheid te maken tussen verschillende iteraties van uw nauwkeurig afgestemde model. suffix
neemt een tekenreeks en wordt ingesteld om het nauwkeurig afgestemde model te identificeren. Met de OpenAI Python-API wordt een tekenreeks van maximaal 18 tekens ondersteund die wordt toegevoegd aan de aangepaste modelnaam.
Vereisten
- Lees de handleiding Wanneer u Azure OpenAI-afstemming gebruikt.
- Een Azure-abonnement. Maak gratis een account.
- Een Azure OpenAI-resource. Zie Een resource maken en een model implementeren met Azure OpenAI voor meer informatie.
- De volgende Python-bibliotheken:
os
,json
,requests
,openai
. - De OpenAI Python-bibliotheek moet ten minste versie 0.28.1 zijn.
- Voor het afstemmen van de toegang is Cognitive Services OpenAI-inzender vereist.
- Als u nog geen toegang hebt tot het quotum en modellen implementeert in Azure AI Studio, hebt u extra machtigingen nodig.
Modellen
De volgende modellen ondersteunen het afstemmen:
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)
* Het afstemmen van dit model is momenteel beschikbaar als openbare preview.
Of u kunt een eerder afgestemd model, opgemaakt als base-model.ft-{jobid}
.
Raadpleeg de modellenpagina om te controleren welke regio's momenteel ondersteuning bieden voor afstemming.
De werkstroom voor de Python SDK controleren
Neem even de tijd om de werkstroom voor afstemming te bekijken voor het gebruik van de Python SDK met Azure OpenAI:
- Bereid uw training en validatiegegevens voor.
- Selecteer een basismodel.
- Upload uw trainingsgegevens.
- Train uw nieuwe aangepaste model.
- Controleer de status van uw aangepaste model.
- Implementeer uw aangepaste model voor gebruik.
- Gebruik uw aangepaste model.
- Analyseer eventueel uw aangepaste model voor prestaties en fit.
Uw training en validatiegegevens voorbereiden
Uw trainingsgegevens en validatiegegevenssets bestaan uit voorbeelden van invoer en uitvoer voor hoe u het model wilt laten presteren.
Voor verschillende modeltypen is een andere indeling van trainingsgegevens vereist.
De trainings- en validatiegegevens die u gebruikt , moeten worden opgemaakt als een JSON Lines-document (JSONL). De gpt-35-turbo-0613
gegevensset voor het afstemmen van de gegevensset moet worden opgemaakt in de gespreksindeling die wordt gebruikt door de API voor voltooiing van chats.
Als u een stapsgewijze procedure voor het afstemmen wilt, gpt-35-turbo-0613
raadpleegt u de zelfstudie over het afstemmen van Azure OpenAI
Voorbeeld van bestandsindeling
{"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?"}]}
Chatbestandsindeling met meerdere draaiing
Meerdere beurten van een gesprek in één regel van uw jsonl-trainingsbestand worden ook ondersteund. Als u het afstemmen van specifieke assistentberichten wilt overslaan, voegt u het optionele weight
sleutelwaardepaar toe. Momenteel weight
kan worden ingesteld op 0 of 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}]}
Chatvoltooiingen met visie
{"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."}]}
Naast de JSONL-indeling moeten trainings- en validatiegegevensbestanden worden gecodeerd in UTF-8 en een byte-ordermarkering (BOM) bevatten. Het bestand moet kleiner zijn dan 512 MB.
Uw trainings- en validatiegegevenssets maken
Hoe meer trainingsvoorbeelden u hebt, hoe beter. Het afstemmen van taken gaat niet verder zonder ten minste 10 trainingsvoorbeelden, maar zo'n klein aantal is niet voldoende om merkbare invloed te hebben op modelreacties. Het is raadzaam honderden, zo niet duizenden, trainingsvoorbeelden te bieden om succesvol te zijn.
Over het algemeen kan het verdubbelen van de grootte van de gegevensset leiden tot een lineaire toename van de modelkwaliteit. Maar houd er rekening mee dat voorbeelden van lage kwaliteit een negatieve invloed kunnen hebben op de prestaties. Als u het model traint op een grote hoeveelheid interne gegevens, zonder eerst de gegevensset te verwijderen voor alleen de voorbeelden van de hoogste kwaliteit, zou u kunnen eindigen met een model dat veel slechter presteert dan verwacht.
Uw trainingsgegevens uploaden
De volgende stap bestaat uit het kiezen van bestaande voorbereide trainingsgegevens of het uploaden van nieuwe voorbereide trainingsgegevens die moeten worden gebruikt bij het aanpassen van uw model. Nadat u uw trainingsgegevens hebt voorbereid, kunt u uw bestanden uploaden naar de service. Er zijn twee manieren om trainingsgegevens te uploaden:
Voor grote gegevensbestanden raden we u aan om te importeren uit een Azure Blob-archief. Grote bestanden kunnen instabiel worden wanneer ze worden geüpload via formulieren met meerdere onderdelen, omdat de aanvragen atomisch zijn en niet opnieuw kunnen worden geprobeerd of hervat. Zie Wat is Azure Blob Storage?
Notitie
Trainingsgegevensbestanden moeten worden opgemaakt als JSONL-bestanden, gecodeerd in UTF-8 met een byte-ordermarkering (BOM). Het bestand moet kleiner zijn dan 512 MB.
In het volgende Python-voorbeeld worden lokale trainings- en validatiebestanden geüpload met behulp van de Python SDK en worden de geretourneerde bestands-id's opgehaald.
# 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)
Een aangepast model maken
Nadat u uw trainings- en validatiebestanden hebt geüpload, bent u klaar om de taak voor het afstemmen te starten.
In de volgende Python-code ziet u een voorbeeld van hoe u een nieuwe taak maakt met de Python SDK:
In dit voorbeeld geven we ook de seed-parameter door. Het zaad bepaalt de reproduceerbaarheid van de taak. Het doorgeven van dezelfde seed- en taakparameters moet dezelfde resultaten opleveren, maar kan in zeldzame gevallen verschillen. Als er geen seed is opgegeven, wordt er een voor u gegenereerd.
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))
U kunt ook aanvullende optionele parameters, zoals hyperparameters, doorgeven om meer controle te hebben over het proces voor het afstemmen. Voor de eerste training raden we u aan de automatische standaardinstellingen te gebruiken die aanwezig zijn zonder deze parameters op te geven.
De huidige ondersteunde hyperparameters voor het afstemmen zijn:
Naam | Type | Beschrijving |
---|---|---|
batch_size |
geheel getal | De batchgrootte die moet worden gebruikt voor training. De batchgrootte is het aantal trainingsvoorbeelden dat wordt gebruikt voor het trainen van één vooruit- en achterwaartse pass. Over het algemeen hebben we vastgesteld dat grotere batchgrootten meestal beter werken voor grotere gegevenssets. De standaardwaarde en de maximumwaarde voor deze eigenschap zijn specifiek voor een basismodel. Een grotere batchgrootte betekent dat modelparameters minder vaak worden bijgewerkt, maar met een lagere variantie. |
learning_rate_multiplier |
Nummer | De vermenigvuldiger met leersnelheid die moet worden gebruikt voor training. Het afstemmen van de leersnelheid is het oorspronkelijke leerpercentage dat wordt gebruikt voor pretraining vermenigvuldigd met deze waarde. Grotere leersnelheden presteren meestal beter met grotere batchgrootten. We raden u aan te experimenteren met waarden in het bereik 0,02 tot 0,2 om te zien wat de beste resultaten oplevert. Een kleiner leerpercentage kan nuttig zijn om overfitting te voorkomen. |
n_epochs |
geheel getal | Het aantal tijdvakken waarvoor het model moet worden getraind. Een tijdsperiode verwijst naar één volledige cyclus door de trainingsgegevensset. |
seed |
geheel getal | Het zaad bepaalt de reproduceerbaarheid van de taak. Het doorgeven van dezelfde seed- en taakparameters moet dezelfde resultaten opleveren, maar kan in zeldzame gevallen verschillen. Als er geen seed is opgegeven, wordt er een voor u gegenereerd. |
Aangepaste hyperparameters instellen met de 1.x-versie van de 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
}
)
Taakstatus afstemmen controleren
response = client.fine_tuning.jobs.retrieve(job_id)
print("Job ID:", response.id)
print("Status:", response.status)
print(response.model_dump_json(indent=2))
Afstemmingsgebeurtenissen weergeven
De afzonderlijke afstemmingsgebeurtenissen onderzoeken die zijn gegenereerd tijdens de training:
Mogelijk moet u uw OpenAI-clientbibliotheek upgraden naar de nieuwste versie om pip install openai --upgrade
deze opdracht uit te voeren.
response = client.fine_tuning.jobs.list_events(fine_tuning_job_id=job_id, limit=10)
print(response.model_dump_json(indent=2))
Controlepunten
Wanneer elk trainingstijdperk een controlepunt voltooit, wordt er een controlepunt gegenereerd. Een controlepunt is een volledig functionele versie van een model dat zowel kan worden geïmplementeerd als gebruikt als het doelmodel voor volgende taakafstemming. Controlepunten kunnen met name nuttig zijn, omdat ze een momentopname van uw model kunnen bieden voordat er overfitting is opgetreden. Wanneer een taak voor het afstemmen is voltooid, beschikt u over de drie meest recente versies van het model die u kunt implementeren. De laatste periode wordt vertegenwoordigd door uw nauwkeurig afgestemde model, de vorige twee epochs zijn beschikbaar als controlepunten.
U kunt de opdracht lijstcontrolepunten uitvoeren om de lijst met controlepunten op te halen die zijn gekoppeld aan een afzonderlijke taak voor het afstemmen van taken:
Mogelijk moet u uw OpenAI-clientbibliotheek upgraden naar de nieuwste versie om pip install openai --upgrade
deze opdracht uit te voeren.
response = client.fine_tuning.jobs.list_events(fine_tuning_job_id=job_id, limit=10)
print(response.model_dump_json(indent=2))
Veiligheidsevaluatie GPT-4, GPT-4o, GPT-4o-mini fine-tuning - openbare preview
GPT-4o, GPT-4o-mini en GPT-4 zijn onze meest geavanceerde modellen die kunnen worden afgestemd op uw behoeften. Net als bij Azure OpenAI-modellen worden de geavanceerde mogelijkheden van nauwkeurig afgestemde modellen geleverd met verhoogde verantwoorde AI-uitdagingen met betrekking tot schadelijke inhoud, manipulatie, menselijk gedrag, privacyproblemen en meer. Meer informatie over risico's, mogelijkheden en beperkingen in het overzicht van verantwoorde AI-procedures en transparantienotitie. Om de risico's die gepaard gaan met geavanceerde verfijnde modellen te beperken, hebben we aanvullende evaluatiestappen geïmplementeerd om schadelijke inhoud in de training en uitvoer van nauwkeurig afgestemde modellen te detecteren en te voorkomen. Deze stappen worden geaard in de inhoudsfiltering voor Microsoft Responsible AI Standard en Azure OpenAI Service.
- Evaluaties worden uitgevoerd in toegewezen, klantspecifieke, privéwerkruimten;
- Evaluatie-eindpunten bevinden zich in dezelfde geografie als de Azure OpenAI-resource;
- Trainingsgegevens worden niet opgeslagen in verband met het uitvoeren van evaluaties; alleen de uiteindelijke modelevaluatie (te implementeren of niet te implementeren) blijft bestaan; en
GPT-4o, GPT-4o-mini en GPT-4 nauwkeurig afgestemde modelevaluatiefilters zijn ingesteld op vooraf gedefinieerde drempelwaarden en kunnen niet worden gewijzigd door klanten; ze zijn niet gekoppeld aan een aangepaste configuratie voor het filteren van inhoud die u mogelijk hebt gemaakt.
Gegevensevaluatie
Voordat de training begint, worden uw gegevens geëvalueerd op mogelijk schadelijke inhoud (geweld, seksueel, haat en billijkheid, zelfschadiging– zie categoriedefinities hier). Als er schadelijke inhoud wordt gedetecteerd boven het opgegeven ernstniveau, mislukt uw trainingstaak en ontvangt u een bericht met de informatie over de foutcategorieën.
Voorbeeldbericht:
The provided training data failed RAI checks for harm types: [hate_fairness, self_harm, violence]. Please fix the data and try again.
Uw trainingsgegevens worden automatisch geëvalueerd binnen uw gegevensimporttaak als onderdeel van het bieden van de mogelijkheid tot afstemming.
Als de taak voor het afstemmen mislukt vanwege de detectie van schadelijke inhoud in trainingsgegevens, worden er geen kosten in rekening gebracht.
Modelevaluatie
Nadat de training is voltooid, maar voordat het nauwkeurig afgestemde model beschikbaar is voor implementatie, wordt het resulterende model geëvalueerd op mogelijk schadelijke reacties met behulp van de ingebouwde metrische gegevens over risico's en veiligheid van Azure. Met dezelfde methode voor het testen dat we gebruiken voor de basis grote taalmodellen, simuleert onze evaluatiefunctie een gesprek met uw nauwkeurig afgestemde model om het potentieel voor het uitvoeren van schadelijke inhoud te beoordelen, opnieuw met behulp van opgegeven schadelijke inhoudscategorieën (geweld, seksueel, haat en billijkheid, zelfbeschadiging).
Als een model wordt gevonden om uitvoer te genereren die inhoud bevat die is gedetecteerd als schadelijk boven een acceptabel tarief, wordt u ervan op de hoogte gesteld dat uw model niet beschikbaar is voor implementatie, met informatie over de specifieke categorieën van schade die zijn gedetecteerd:
Voorbeeldbericht:
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.
Net als bij gegevensevaluatie wordt het model automatisch geëvalueerd binnen uw taak voor het afstemmen van de functie voor afstemming. Alleen de resulterende evaluatie (te implementeren of niet te implementeren) wordt geregistreerd door de service. Als de implementatie van het nauwkeurig afgestemde model mislukt vanwege de detectie van schadelijke inhoud in modeluitvoer, worden er geen kosten in rekening gebracht voor de trainingsuitvoering.
Een nauwkeurig afgestemd model implementeren
Wanneer de taak voor het afstemmen slaagt, wordt de waarde van de fine_tuned_model
variabele in de hoofdtekst van het antwoord ingesteld op de naam van uw aangepaste model. Uw model is nu ook beschikbaar voor detectie vanuit de lijstmodellen-API. U kunt echter geen voltooiingsoproepen naar uw aangepaste model uitgeven totdat uw aangepaste model is geïmplementeerd. U moet uw aangepaste model implementeren om het beschikbaar te maken voor gebruik met voltooiingsoproepen.
Belangrijk
Nadat u een aangepast model hebt geïmplementeerd, wordt de implementatie verwijderd als de implementatie langer dan vijftien (15) dagen inactief blijft. De implementatie van een aangepast model is inactief als het model meer dan vijftien (15) dagen geleden is geïmplementeerd en er tijdens een continue periode van 15 dagen geen voltooiingen of chatvoltooiingen zijn gedaan.
Het verwijderen van een inactieve implementatie is niet van invloed op het onderliggende aangepaste model en het aangepaste model kan op elk gewenst moment opnieuw worden geïmplementeerd. Zoals beschreven in prijzen van De Azure OpenAI-service, worden voor elk aangepast (nauwkeurig) model dat wordt geïmplementeerd, een uurlijkse hostingkosten in rekening gebracht, ongeacht of er aanroepen voor voltooiingen of chats in het model worden gedaan. Voor meer informatie over het plannen en beheren van kosten met Azure OpenAI raadpleegt u de richtlijnen in Plan voor het beheren van kosten voor Azure OpenAI Service.
U kunt ook Azure AI Studio of de Azure CLI gebruiken om uw aangepaste model te implementeren.
Notitie
Er is slechts één implementatie toegestaan voor een aangepast model. Er treedt een fout op als u een al geïmplementeerd aangepast model selecteert.
In tegenstelling tot de vorige SDK-opdrachten moet de implementatie worden uitgevoerd met behulp van de besturingsvlak-API waarvoor afzonderlijke autorisatie, een ander API-pad en een andere API-versie is vereist.
variabele | Definitie |
---|---|
token | Er zijn meerdere manieren om een autorisatietoken te genereren. De eenvoudigste methode voor eerste tests is het starten van Cloud Shell vanuit Azure Portal. Voer vervolgens az account get-access-token uit. U kunt dit token gebruiken als uw tijdelijke autorisatietoken voor API-tests. We raden u aan dit op te slaan in een nieuwe omgevingsvariabele. |
abonnement | De abonnements-id voor de bijbehorende Azure OpenAI-resource. |
resource_group | De naam van de resourcegroep voor uw Azure OpenAI-resource. |
resource_name | De naam van de Azure OpenAI-resource. |
model_deployment_name | De aangepaste naam voor de nieuwe aangepaste modelimplementatie. Dit is de naam waarnaar wordt verwezen in uw code bij het maken van chat-voltooiingsgesprekken. |
fine_tuned_model | Haal deze waarde op uit uw verfijningstaak en resultaten in de vorige stap. Het zal eruitzien als gpt-35-turbo-0613.ft-b044a9d3cf9c4228b5d393567f693b83 . U moet die waarde toevoegen aan de deploy_data json. U kunt ook een controlepunt implementeren door de controlepunt-id door te geven die in de indeling wordt weergegeven 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())
Implementatie tussen regio's
Afstemming ondersteunt het implementeren van een nauwkeurig afgestemd model naar een andere regio dan waar het model oorspronkelijk is afgestemd. U kunt ook implementeren in een ander abonnement/een andere regio.
De enige beperkingen zijn dat de nieuwe regio ook ondersteuning moet bieden voor het afstemmen en bij het implementeren van meerdere abonnementen moet het account dat het autorisatietoken voor de implementatie genereert, toegang hebben tot zowel de bron- als doelabonnementen.
Hieronder ziet u een voorbeeld van het implementeren van een model dat is afgestemd op het ene abonnement of de andere regio.
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())
Als u tussen hetzelfde abonnement wilt implementeren, maar voor verschillende regio's hebt u alleen een abonnement en resourcegroepen die identiek zijn voor zowel bron- als doelvariabelen. Alleen de bron- en doelresourcenamen moeten uniek zijn.
Een model implementeren met Azure CLI
In het volgende voorbeeld ziet u hoe u de Azure CLI gebruikt om uw aangepaste model te implementeren. Met de Azure CLI moet u een naam opgeven voor de implementatie van uw aangepaste model. Zie voor meer informatie over het gebruik van de Azure CLI om aangepaste modellen az cognitiveservices account deployment
te implementeren.
Als u deze Azure CLI-opdracht wilt uitvoeren in een consolevenster, moet u de volgende <tijdelijke aanduidingen> vervangen door de bijbehorende waarden voor uw aangepaste model:
Tijdelijke aanduiding | Weergegeven als |
---|---|
<YOUR_AZURE_SUBSCRIPTION> | De naam of id van uw Azure-abonnement. |
<YOUR_RESOURCE_GROUP> | De naam van uw Azure-resourcegroep. |
<YOUR_RESOURCE_NAME> | De naam van uw Azure OpenAI-resource. |
<YOUR_DEPLOYMENT_NAME> | De naam die u wilt gebruiken voor uw modelimplementatie. |
<YOUR_FINE_TUNED_MODEL_ID> | De naam van uw aangepaste model. |
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"
Een geïmplementeerd aangepast model gebruiken
Nadat uw aangepaste model is geïmplementeerd, kunt u dit gebruiken zoals elk ander geïmplementeerd model. U kunt de Playgrounds in Azure AI Studio gebruiken om te experimenteren met uw nieuwe implementatie. U kunt dezelfde parameters blijven gebruiken met uw aangepaste model, zoals temperature
en max_tokens
, zoals u kunt met andere geïmplementeerde modellen. Voor nauwkeurige afstemming babbage-002
en davinci-002
modellen gebruikt u de Completions Playground en de Completions-API. Voor nauwkeurig afgestemde gpt-35-turbo-0613
modellen gebruikt u de Chat-speeltuin en de CHAT-voltooiings-API.
import os
from openai import AzureOpenAI
client = AzureOpenAI(
azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"),
api_key=os.getenv("AZURE_OPENAI_API_KEY"),
api_version="2024-02-01"
)
response = client.chat.completions.create(
model="gpt-35-turbo-ft", # model = "Custom deployment name you chose for your fine-tuning model"
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Does Azure OpenAI support customer managed keys?"},
{"role": "assistant", "content": "Yes, customer managed keys are supported by Azure OpenAI."},
{"role": "user", "content": "Do other Azure AI services support this too?"}
]
)
print(response.choices[0].message.content)
Uw aangepaste model analyseren
Azure OpenAI voegt een resultaatbestand met de naam results.csv toe aan elke taak voor het afstemmen nadat deze is voltooid. U kunt het resultaatbestand gebruiken om de trainings- en validatieprestaties van uw aangepaste model te analyseren. De bestands-id voor het resultaatbestand wordt vermeld voor elk aangepast model en u kunt de Python SDK gebruiken om de bestands-id op te halen en het resultaatbestand voor analyse te downloaden.
In het volgende Python-voorbeeld wordt de bestands-id opgehaald van het eerste resultaatbestand dat is gekoppeld aan de afstemmingstaak voor uw aangepaste model. Vervolgens wordt de Python SDK gebruikt om het bestand te downloaden naar uw werkmap voor analyse.
# 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)
Het resultaatbestand is een CSV-bestand dat een veldnamenrij en een rij bevat voor elke trainingsstap die wordt uitgevoerd door de taak voor het afstemmen. Het resultaatbestand bevat de volgende kolommen:
Kolomnaam | Beschrijving |
---|---|
step |
Het nummer van de trainingsstap. Een trainingsstap vertegenwoordigt één pas, vooruit en achteruit, op een batch trainingsgegevens. |
train_loss |
Het verlies voor de trainingsbatch. |
train_mean_token_accuracy |
Het percentage tokens in de trainingsbatch correct voorspeld door het model. Als de batchgrootte bijvoorbeeld is ingesteld op 3 en uw gegevens voltooiingen [[1, 2], [0, 5], [4, 2]] bevatten, wordt deze waarde ingesteld op 0,83 (5 van 6) als het model is voorspeld [[1, 1], [0, 5], [4, 2]] . |
valid_loss |
Het verlies voor de validatiebatch. |
validation_mean_token_accuracy |
Het percentage tokens in de validatiebatch correct voorspeld door het model. Als de batchgrootte bijvoorbeeld is ingesteld op 3 en uw gegevens voltooiingen [[1, 2], [0, 5], [4, 2]] bevatten, wordt deze waarde ingesteld op 0,83 (5 van 6) als het model is voorspeld [[1, 1], [0, 5], [4, 2]] . |
full_valid_loss |
Het validatieverlies dat aan het einde van elk tijdvak wordt berekend. Wanneer de training goed gaat, moet verlies afnemen. |
full_valid_mean_token_accuracy |
De geldige gemiddelde tokennauwkeurigheid die aan het einde van elk tijdvak wordt berekend. Wanneer de training goed gaat, moet de nauwkeurigheid van tokens toenemen. |
U kunt ook de gegevens in uw results.csv-bestand weergeven als plots in Azure AI Studio. Selecteer de koppeling voor uw getrainde model en u ziet drie grafieken: verlies, gemiddelde tokennauwkeurigheid en tokennauwkeurigheid. Als u validatiegegevens hebt opgegeven, worden beide gegevenssets weergegeven op dezelfde plot.
Zoek naar uw verlies om in de loop van de tijd te verminderen en uw nauwkeurigheid om te verhogen. Als u een verschil ziet tussen uw training en validatiegegevens die erop kunnen wijzen dat u overfitting gebruikt. Probeer training met minder tijdvakken of een kleinere vermenigvuldiging van leersnelheid.
Uw implementaties, aangepaste modellen en trainingsbestanden opschonen
Wanneer u klaar bent met uw aangepaste model, kunt u de implementatie en het model verwijderen. U kunt ook de trainings- en validatiebestanden verwijderen die u naar de service hebt geüpload, indien nodig.
Uw modelimplementatie verwijderen
Belangrijk
Nadat u een aangepast model hebt geïmplementeerd, wordt de implementatie verwijderd als de implementatie langer dan vijftien (15) dagen inactief blijft. De implementatie van een aangepast model is inactief als het model meer dan vijftien (15) dagen geleden is geïmplementeerd en er tijdens een continue periode van 15 dagen geen voltooiingen of chatvoltooiingen zijn gedaan.
Het verwijderen van een inactieve implementatie is niet van invloed op het onderliggende aangepaste model en het aangepaste model kan op elk gewenst moment opnieuw worden geïmplementeerd. Zoals beschreven in prijzen van De Azure OpenAI-service, worden voor elk aangepast (nauwkeurig) model dat wordt geïmplementeerd, een uurlijkse hostingkosten in rekening gebracht, ongeacht of er aanroepen voor voltooiingen of chats in het model worden gedaan. Voor meer informatie over het plannen en beheren van kosten met Azure OpenAI raadpleegt u de richtlijnen in Plan voor het beheren van kosten voor Azure OpenAI Service.
U kunt verschillende methoden gebruiken om de implementatie voor uw aangepaste model te verwijderen:
Uw aangepaste model verwijderen
Op dezelfde manier kunt u verschillende methoden gebruiken om uw aangepaste model te verwijderen:
Notitie
U kunt een aangepast model niet verwijderen als het een bestaande implementatie heeft. U moet eerst uw modelimplementatie verwijderen voordat u het aangepaste model kunt verwijderen.
Uw trainingsbestanden verwijderen
U kunt eventueel trainings- en validatiebestanden verwijderen die u hebt geüpload voor training, en resultaatbestanden die tijdens de training zijn gegenereerd, uit uw Azure OpenAI-abonnement. U kunt de volgende methoden gebruiken om uw trainings-, validatie- en resultaatbestanden te verwijderen:
- Azure AI Studio
- De REST API's
- De Python-SDK
In het volgende Python-voorbeeld wordt de Python SDK gebruikt om de trainings-, validatie- en resultaatbestanden voor uw aangepaste model te verwijderen:
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)
Continue afstemming
Zodra u een nauwkeurig afgestemd model hebt gemaakt, wilt u het model misschien na verloop van tijd verder verfijnen door verder af te stemmen. Continue afstemming is het iteratieve proces van het selecteren van een al afgestemd model als basismodel en het verder afstemmen op nieuwe sets trainingsvoorbeelden.
Als u een model wilt verfijnen dat u eerder hebt afgestemd, zou u hetzelfde proces gebruiken als beschreven in het maken van een aangepast model , maar in plaats van de naam van een algemeen basismodel op te geven, geeft u de id van het reeds afgestemde model op. De aangepaste model-id ziet er als volgt uit 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))
We raden u ook aan de suffix
parameter op te geven om onderscheid te maken tussen verschillende iteraties van uw nauwkeurig afgestemde model. suffix
neemt een tekenreeks en wordt ingesteld om het nauwkeurig afgestemde model te identificeren. Met de OpenAI Python-API wordt een tekenreeks van maximaal 18 tekens ondersteund die wordt toegevoegd aan de aangepaste modelnaam.
Als u niet zeker weet wat de id van uw bestaande nauwkeurig afgestemde model is, vindt u deze informatie op de pagina Modellen van Azure AI Studio of kunt u een lijst met modellen genereren voor een bepaalde Azure OpenAI-resource met behulp van de REST API.
Vereisten
- Lees de handleiding Wanneer u Azure OpenAI-afstemming gebruikt.
- Een Azure-abonnement. Maak gratis een account.
- Een Azure OpenAI-resource. Zie Een resource maken en een model implementeren met Azure OpenAI voor meer informatie.
- Voor het afstemmen van de toegang is Cognitive Services OpenAI-inzender vereist.
- Als u nog geen toegang hebt om quota weer te geven en modellen in Azure AI Studio implementeert, hebt u extra machtigingen nodig.
Modellen
De volgende modellen ondersteunen het afstemmen:
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)
* Het afstemmen van dit model is momenteel beschikbaar als openbare preview.
U kunt ook een eerder afgestemd model verfijnen, opgemaakt als base-model.ft-{jobid}.
Raadpleeg de modellenpagina om te controleren welke regio's momenteel ondersteuning bieden voor afstemming.
De werkstroom voor de REST API controleren
Neem even de tijd om de werkstroom voor het afstemmen van de REST API's en Python te bekijken met Azure OpenAI:
- Bereid uw training en validatiegegevens voor.
- Selecteer een basismodel.
- Upload uw trainingsgegevens.
- Train uw nieuwe aangepaste model.
- Controleer de status van uw aangepaste model.
- Implementeer uw aangepaste model voor gebruik.
- Gebruik uw aangepaste model.
- Analyseer eventueel uw aangepaste model voor prestaties en fit.
Uw training en validatiegegevens voorbereiden
Uw trainingsgegevens en validatiegegevenssets bestaan uit voorbeelden van invoer en uitvoer voor hoe u het model wilt laten presteren.
Voor verschillende modeltypen is een andere indeling van trainingsgegevens vereist.
De trainings- en validatiegegevens die u gebruikt , moeten worden opgemaakt als een JSON Lines-document (JSONL). Voor gpt-35-turbo-0613
en andere gerelateerde modellen moet de gegevensset voor het afstemmen worden opgemaakt in de gespreksindeling die wordt gebruikt door de API voor voltooiingen van chat.
Als u een stapsgewijze procedure voor het afstemmen wilt, gpt-35-turbo-0613
raadpleegt u de zelfstudie over het afstemmen van Azure OpenAI.
Voorbeeld van bestandsindeling
{"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?"}]}
Chatbestandsindeling met meerdere draaiing
Meerdere beurten van een gesprek in één regel van uw jsonl-trainingsbestand worden ook ondersteund. Als u het afstemmen van specifieke assistentberichten wilt overslaan, voegt u het optionele weight
sleutelwaardepaar toe. Momenteel weight
kan worden ingesteld op 0 of 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}]}
Chatvoltooiingen met visie
{"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."}]}
Naast de JSONL-indeling moeten trainings- en validatiegegevensbestanden worden gecodeerd in UTF-8 en een byte-ordermarkering (BOM) bevatten. Het bestand moet kleiner zijn dan 512 MB.
Uw trainings- en validatiegegevenssets maken
Hoe meer trainingsvoorbeelden u hebt, hoe beter. Het afstemmen van taken gaat niet verder zonder ten minste 10 trainingsvoorbeelden, maar zo'n klein aantal is niet voldoende om merkbare invloed te hebben op modelreacties. Het is raadzaam honderden, zo niet duizenden, trainingsvoorbeelden te bieden om succesvol te zijn.
Over het algemeen kan het verdubbelen van de grootte van de gegevensset leiden tot een lineaire toename van de modelkwaliteit. Maar houd er rekening mee dat voorbeelden van lage kwaliteit een negatieve invloed kunnen hebben op de prestaties. Als u het model traint op een grote hoeveelheid interne gegevens zonder eerst de gegevensset te verwijderen voor alleen de hoogste kwaliteitsvoorbeelden, kunt u eindigen met een model dat veel slechter presteert dan verwacht.
Het basismodel selecteren
De eerste stap bij het maken van een aangepast model is het kiezen van een basismodel. In het deelvenster Basismodel kunt u een basismodel kiezen dat u voor uw aangepaste model wilt gebruiken. Uw keuze beïnvloedt zowel de prestaties als de kosten van uw model.
Selecteer het basismodel in de vervolgkeuzelijst Basismodeltype en selecteer vervolgens Volgende om door te gaan.
U kunt een aangepast model maken op basis van een van de volgende beschikbare basismodellen:
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)
U kunt ook een eerder afgestemd model verfijnen, opgemaakt als base-model.ft-{jobid}.
Zie Modellen voor meer informatie over onze basismodellen die kunnen worden afgestemd.
Uw trainingsgegevens uploaden
De volgende stap bestaat uit het kiezen van bestaande voorbereide trainingsgegevens of het uploaden van nieuwe voorbereide trainingsgegevens die moeten worden gebruikt bij het afstemmen van uw model. Nadat u uw trainingsgegevens hebt voorbereid, kunt u uw bestanden uploaden naar de service. Er zijn twee manieren om trainingsgegevens te uploaden:
Voor grote gegevensbestanden raden we u aan om te importeren uit een Azure Blob-archief. Grote bestanden kunnen instabiel worden wanneer ze worden geüpload via formulieren met meerdere onderdelen, omdat de aanvragen atomisch zijn en niet opnieuw kunnen worden geprobeerd of hervat. Zie Wat is Azure Blob Storage?
Notitie
Trainingsgegevensbestanden moeten worden opgemaakt als JSONL-bestanden, gecodeerd in UTF-8 met een byte-ordermarkering (BOM). Het bestand moet kleiner zijn dan 512 MB.
Trainingsgegevens uploaden
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"
Validatiegegevens uploaden
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"
Een aangepast model maken
Nadat u uw trainings- en validatiebestanden hebt geüpload, bent u klaar om de taak voor het afstemmen te starten. In de volgende code ziet u een voorbeeld van het maken van een nieuwe taak voor het afstemmen met de REST API.
In dit voorbeeld geven we ook de seed-parameter door. Het zaad bepaalt de reproduceerbaarheid van de taak. Het doorgeven van dezelfde seed- en taakparameters moet dezelfde resultaten opleveren, maar kan in zeldzame gevallen verschillen. Als er geen seed is opgegeven, wordt er een voor u gegenereerd.
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
}'
U kunt ook aanvullende optionele parameters, zoals hyperparameters , doorgeven om meer controle te hebben over het proces voor het afstemmen. Voor de eerste training raden we u aan de automatische standaardinstellingen te gebruiken die aanwezig zijn zonder deze parameters op te geven.
De huidige ondersteunde hyperparameters voor het afstemmen zijn:
Naam | Type | Beschrijving |
---|---|---|
batch_size |
geheel getal | De batchgrootte die moet worden gebruikt voor training. De batchgrootte is het aantal trainingsvoorbeelden dat wordt gebruikt voor het trainen van één vooruit- en achterwaartse pass. Over het algemeen hebben we vastgesteld dat grotere batchgrootten meestal beter werken voor grotere gegevenssets. De standaardwaarde en de maximumwaarde voor deze eigenschap zijn specifiek voor een basismodel. Een grotere batchgrootte betekent dat modelparameters minder vaak worden bijgewerkt, maar met een lagere variantie. |
learning_rate_multiplier |
Nummer | De vermenigvuldiger met leersnelheid die moet worden gebruikt voor training. Het afstemmen van de leersnelheid is het oorspronkelijke leerpercentage dat wordt gebruikt voor pretraining vermenigvuldigd met deze waarde. Grotere leersnelheden presteren meestal beter met grotere batchgrootten. We raden u aan te experimenteren met waarden in het bereik 0,02 tot 0,2 om te zien wat de beste resultaten oplevert. Een kleiner leerpercentage kan nuttig zijn om overfitting te voorkomen. |
n_epochs |
geheel getal | Het aantal tijdvakken waarvoor het model moet worden getraind. Een tijdsperiode verwijst naar één volledige cyclus door de trainingsgegevensset. |
seed |
geheel getal | Het zaad bepaalt de reproduceerbaarheid van de taak. Het doorgeven van dezelfde seed- en taakparameters moet dezelfde resultaten opleveren, maar kan in zeldzame gevallen verschillen. Als er geen seed is opgegeven, wordt er een voor u gegenereerd. |
De status van uw aangepaste model controleren
Nadat u een taak hebt gemaakt, kan het enige tijd duren voordat de taak is voltooid. Uw taak wordt mogelijk in de wachtrij geplaatst achter andere taken in het systeem. Het trainen van uw model kan enkele minuten of uren duren, afhankelijk van de grootte van het model en de gegevensset. In het volgende voorbeeld wordt de REST API gebruikt om de status van uw taak voor het afstemmen te controleren. In het voorbeeld wordt informatie over uw taak opgehaald met behulp van de taak-id die is geretourneerd uit het vorige voorbeeld:
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"
Afstemmingsgebeurtenissen weergeven
De afzonderlijke afstemmingsgebeurtenissen onderzoeken die zijn gegenereerd tijdens de training:
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"
Controlepunten
Wanneer elk trainingstijdperk een controlepunt voltooit, wordt er een controlepunt gegenereerd. Een controlepunt is een volledig functionele versie van een model dat zowel kan worden geïmplementeerd als gebruikt als het doelmodel voor volgende taakafstemming. Controlepunten kunnen met name nuttig zijn, omdat ze een momentopname van uw model kunnen bieden voordat er overfitting is opgetreden. Wanneer een taak voor het afstemmen is voltooid, beschikt u over de drie meest recente versies van het model die u kunt implementeren. De laatste periode wordt vertegenwoordigd door uw nauwkeurig afgestemde model, de vorige twee epochs zijn beschikbaar als controlepunten.
U kunt de opdracht lijstcontrolepunten uitvoeren om de lijst met controlepunten op te halen die zijn gekoppeld aan een afzonderlijke taak voor het afstemmen van taken:
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"
Veiligheidsevaluatie GPT-4, GPT-4o, GPT-4o-mini fine-tuning - openbare preview
GPT-4o, GPT-4o-mini en GPT-4 zijn onze meest geavanceerde modellen die kunnen worden afgestemd op uw behoeften. Net als bij Azure OpenAI-modellen worden de geavanceerde mogelijkheden van nauwkeurig afgestemde modellen geleverd met verhoogde verantwoorde AI-uitdagingen met betrekking tot schadelijke inhoud, manipulatie, menselijk gedrag, privacyproblemen en meer. Meer informatie over risico's, mogelijkheden en beperkingen in het overzicht van verantwoorde AI-procedures en transparantienotitie. Om de risico's die gepaard gaan met geavanceerde verfijnde modellen te beperken, hebben we aanvullende evaluatiestappen geïmplementeerd om schadelijke inhoud in de training en uitvoer van nauwkeurig afgestemde modellen te detecteren en te voorkomen. Deze stappen worden geaard in de inhoudsfiltering voor Microsoft Responsible AI Standard en Azure OpenAI Service.
- Evaluaties worden uitgevoerd in toegewezen, klantspecifieke, privéwerkruimten;
- Evaluatie-eindpunten bevinden zich in dezelfde geografie als de Azure OpenAI-resource;
- Trainingsgegevens worden niet opgeslagen in verband met het uitvoeren van evaluaties; alleen de uiteindelijke modelevaluatie (te implementeren of niet te implementeren) blijft bestaan; en
GPT-4o, GPT-4o-mini en GPT-4 nauwkeurig afgestemde modelevaluatiefilters zijn ingesteld op vooraf gedefinieerde drempelwaarden en kunnen niet worden gewijzigd door klanten; ze zijn niet gekoppeld aan een aangepaste configuratie voor het filteren van inhoud die u mogelijk hebt gemaakt.
Gegevensevaluatie
Voordat de training begint, worden uw gegevens geëvalueerd op mogelijk schadelijke inhoud (geweld, seksueel, haat en billijkheid, zelfschadiging– zie categoriedefinities hier). Als er schadelijke inhoud wordt gedetecteerd boven het opgegeven ernstniveau, mislukt uw trainingstaak en ontvangt u een bericht met de informatie over de foutcategorieën.
Voorbeeldbericht:
The provided training data failed RAI checks for harm types: [hate_fairness, self_harm, violence]. Please fix the data and try again.
Uw trainingsgegevens worden automatisch geëvalueerd binnen uw gegevensimporttaak als onderdeel van het bieden van de mogelijkheid tot afstemming.
Als de taak voor het afstemmen mislukt vanwege de detectie van schadelijke inhoud in trainingsgegevens, worden er geen kosten in rekening gebracht.
Modelevaluatie
Nadat de training is voltooid, maar voordat het nauwkeurig afgestemde model beschikbaar is voor implementatie, wordt het resulterende model geëvalueerd op mogelijk schadelijke reacties met behulp van de ingebouwde metrische gegevens over risico's en veiligheid van Azure. Met dezelfde methode voor het testen dat we gebruiken voor de basis grote taalmodellen, simuleert onze evaluatiefunctie een gesprek met uw nauwkeurig afgestemde model om het potentieel voor het uitvoeren van schadelijke inhoud te beoordelen, opnieuw met behulp van opgegeven schadelijke inhoudscategorieën (geweld, seksueel, haat en billijkheid, zelfbeschadiging).
Als een model wordt gevonden om uitvoer te genereren die inhoud bevat die is gedetecteerd als schadelijk boven een acceptabel tarief, wordt u ervan op de hoogte gesteld dat uw model niet beschikbaar is voor implementatie, met informatie over de specifieke categorieën van schade die zijn gedetecteerd:
Voorbeeldbericht:
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.
Net als bij gegevensevaluatie wordt het model automatisch geëvalueerd binnen uw taak voor het afstemmen van de functie voor afstemming. Alleen de resulterende evaluatie (te implementeren of niet te implementeren) wordt geregistreerd door de service. Als de implementatie van het nauwkeurig afgestemde model mislukt vanwege de detectie van schadelijke inhoud in modeluitvoer, worden er geen kosten in rekening gebracht voor de trainingsuitvoering.
Een nauwkeurig afgestemd model implementeren
Belangrijk
Nadat u een aangepast model hebt geïmplementeerd, wordt de implementatie verwijderd als de implementatie langer dan vijftien (15) dagen inactief blijft. De implementatie van een aangepast model is inactief als het model meer dan vijftien (15) dagen geleden is geïmplementeerd en er tijdens een continue periode van 15 dagen geen voltooiingen of chatvoltooiingen zijn gedaan.
Het verwijderen van een inactieve implementatie is niet van invloed op het onderliggende aangepaste model en het aangepaste model kan op elk gewenst moment opnieuw worden geïmplementeerd. Zoals beschreven in prijzen van De Azure OpenAI-service, worden voor elk aangepast (nauwkeurig) model dat wordt geïmplementeerd, een uurlijkse hostingkosten in rekening gebracht, ongeacht of er aanroepen voor voltooiingen of chats in het model worden gedaan. Voor meer informatie over het plannen en beheren van kosten met Azure OpenAI raadpleegt u de richtlijnen in Plan voor het beheren van kosten voor Azure OpenAI Service.
In het volgende Python-voorbeeld ziet u hoe u de REST API gebruikt om een modelimplementatie te maken voor uw aangepaste model. De REST API genereert een naam voor de implementatie van uw aangepaste model.
variabele | Definitie |
---|---|
token | Er zijn meerdere manieren om een autorisatietoken te genereren. De eenvoudigste methode voor eerste tests is het starten van Cloud Shell vanuit Azure Portal. Voer vervolgens az account get-access-token uit. U kunt dit token gebruiken als uw tijdelijke autorisatietoken voor API-tests. We raden u aan dit op te slaan in een nieuwe omgevingsvariabele. |
abonnement | De abonnements-id voor de bijbehorende Azure OpenAI-resource. |
resource_group | De naam van de resourcegroep voor uw Azure OpenAI-resource. |
resource_name | De naam van de Azure OpenAI-resource. |
model_deployment_name | De aangepaste naam voor de nieuwe aangepaste modelimplementatie. Dit is de naam waarnaar wordt verwezen in uw code bij het maken van chat-voltooiingsgesprekken. |
fine_tuned_model | Haal deze waarde op uit uw verfijningstaak en resultaten in de vorige stap. Het zal eruitzien als gpt-35-turbo-0613.ft-b044a9d3cf9c4228b5d393567f693b83 . U moet die waarde toevoegen aan de deploy_data json. U kunt ook een controlepunt implementeren door de controlepunt-id door te geven die in de indeling wordt weergegeven 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"
}
}
}'
Implementatie tussen regio's
Afstemming ondersteunt het implementeren van een nauwkeurig afgestemd model naar een andere regio dan waar het model oorspronkelijk is afgestemd. U kunt ook implementeren in een ander abonnement/een andere regio.
De enige beperkingen zijn dat de nieuwe regio ook ondersteuning moet bieden voor het afstemmen en bij het implementeren van meerdere abonnementen moet het account dat het autorisatietoken voor de implementatie genereert, toegang hebben tot zowel de bron- als doelabonnementen.
Hieronder ziet u een voorbeeld van het implementeren van een model dat is afgestemd op het ene abonnement of de andere regio.
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}"
}
}
}'
Als u wilt implementeren tussen hetzelfde abonnement, maar verschillende regio's, hebt u alleen een abonnement en resourcegroepen die identiek zijn voor zowel bron- als doelvariabelen. Alleen de bron- en doelresourcenamen moeten uniek zijn.
Een model implementeren met Azure CLI
In het volgende voorbeeld ziet u hoe u de Azure CLI gebruikt om uw aangepaste model te implementeren. Met de Azure CLI moet u een naam opgeven voor de implementatie van uw aangepaste model. Zie voor meer informatie over het gebruik van de Azure CLI om aangepaste modellen az cognitiveservices account deployment
te implementeren.
Als u deze Azure CLI-opdracht wilt uitvoeren in een consolevenster, moet u de volgende <tijdelijke aanduidingen> vervangen door de bijbehorende waarden voor uw aangepaste model:
Tijdelijke aanduiding | Weergegeven als |
---|---|
<YOUR_AZURE_SUBSCRIPTION> | De naam of id van uw Azure-abonnement. |
<YOUR_RESOURCE_GROUP> | De naam van uw Azure-resourcegroep. |
<YOUR_RESOURCE_NAME> | De naam van uw Azure OpenAI-resource. |
<YOUR_DEPLOYMENT_NAME> | De naam die u wilt gebruiken voor uw modelimplementatie. |
<YOUR_FINE_TUNED_MODEL_ID> | De naam van uw aangepaste model. |
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"
Een geïmplementeerd aangepast model gebruiken
Nadat uw aangepaste model is geïmplementeerd, kunt u dit gebruiken zoals elk ander geïmplementeerd model. U kunt de Playgrounds in Azure AI Studio gebruiken om te experimenteren met uw nieuwe implementatie. U kunt dezelfde parameters blijven gebruiken met uw aangepaste model, zoals temperature
en max_tokens
, zoals u kunt met andere geïmplementeerde modellen. Voor nauwkeurige afstemming babbage-002
en davinci-002
modellen gebruikt u de Completions Playground en de Completions-API. Voor verfijnde gpt-35-turbo-0613
modellen gebruikt u de Chat-speeltuin en de CHAT-voltooiings-API.
curl $AZURE_OPENAI_ENDPOINT/openai/deployments/<deployment_name>/chat/completions?api-version=2023-05-15 \
-H "Content-Type: application/json" \
-H "api-key: $AZURE_OPENAI_API_KEY" \
-d '{"messages":[{"role": "system", "content": "You are a helpful assistant."},{"role": "user", "content": "Does Azure OpenAI support customer managed keys?"},{"role": "assistant", "content": "Yes, customer managed keys are supported by Azure OpenAI."},{"role": "user", "content": "Do other Azure AI services support this too?"}]}'
Uw aangepaste model analyseren
Azure OpenAI voegt een resultaatbestand met de naam results.csv toe aan elke taak voor het afstemmen nadat deze is voltooid. U kunt het resultaatbestand gebruiken om de trainings- en validatieprestaties van uw aangepaste model te analyseren. De bestands-id voor het resultaatbestand wordt vermeld voor elk aangepast model en u kunt de REST API gebruiken om de bestands-id op te halen en het resultaatbestand voor analyse te downloaden.
In het volgende Python-voorbeeld wordt de REST API gebruikt om de bestands-id op te halen van het eerste resultaatbestand dat is gekoppeld aan de taak voor het afstemmen van uw aangepaste model en downloadt het bestand vervolgens naar uw werkmap voor analyse.
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>
Het resultaatbestand is een CSV-bestand dat een veldnamenrij en een rij bevat voor elke trainingsstap die wordt uitgevoerd door de taak voor het afstemmen. Het resultaatbestand bevat de volgende kolommen:
Kolomnaam | Beschrijving |
---|---|
step |
Het nummer van de trainingsstap. Een trainingsstap vertegenwoordigt één pas, vooruit en achteruit, op een batch trainingsgegevens. |
train_loss |
Het verlies voor de trainingsbatch. |
train_mean_token_accuracy |
Het percentage tokens in de trainingsbatch correct voorspeld door het model. Als de batchgrootte bijvoorbeeld is ingesteld op 3 en uw gegevens voltooiingen [[1, 2], [0, 5], [4, 2]] bevatten, wordt deze waarde ingesteld op 0,83 (5 van 6) als het model is voorspeld [[1, 1], [0, 5], [4, 2]] . |
valid_loss |
Het verlies voor de validatiebatch. |
validation_mean_token_accuracy |
Het percentage tokens in de validatiebatch correct voorspeld door het model. Als de batchgrootte bijvoorbeeld is ingesteld op 3 en uw gegevens voltooiingen [[1, 2], [0, 5], [4, 2]] bevatten, wordt deze waarde ingesteld op 0,83 (5 van 6) als het model is voorspeld [[1, 1], [0, 5], [4, 2]] . |
full_valid_loss |
Het validatieverlies dat aan het einde van elk tijdvak wordt berekend. Wanneer de training goed gaat, moet verlies afnemen. |
full_valid_mean_token_accuracy |
De geldige gemiddelde tokennauwkeurigheid die aan het einde van elk tijdvak wordt berekend. Wanneer de training goed gaat, moet de nauwkeurigheid van tokens toenemen. |
U kunt ook de gegevens in uw results.csv-bestand weergeven als plots in Azure AI Studio. Selecteer de koppeling voor uw getrainde model en u ziet drie grafieken: verlies, gemiddelde tokennauwkeurigheid en tokennauwkeurigheid. Als u validatiegegevens hebt opgegeven, worden beide gegevenssets weergegeven op dezelfde plot.
Zoek naar uw verlies om in de loop van de tijd te verminderen en uw nauwkeurigheid om te verhogen. Als u een verschil ziet tussen uw trainingsgegevens en validatiegegevens die erop kunnen wijzen dat u overfitting gebruikt. Probeer training met minder tijdvakken of een kleinere vermenigvuldiging van leersnelheid.
Uw implementaties, aangepaste modellen en trainingsbestanden opschonen
Wanneer u klaar bent met uw aangepaste model, kunt u de implementatie en het model verwijderen. U kunt ook de trainings- en validatiebestanden verwijderen die u naar de service hebt geüpload, indien nodig.
Uw modelimplementatie verwijderen
U kunt verschillende methoden gebruiken om de implementatie voor uw aangepaste model te verwijderen:
Uw aangepaste model verwijderen
Op dezelfde manier kunt u verschillende methoden gebruiken om uw aangepaste model te verwijderen:
Notitie
U kunt een aangepast model niet verwijderen als het een bestaande implementatie heeft. U moet eerst uw modelimplementatie verwijderen voordat u het aangepaste model kunt verwijderen.
Uw trainingsbestanden verwijderen
U kunt eventueel trainings- en validatiebestanden verwijderen die u hebt geüpload voor training, en resultaatbestanden die tijdens de training zijn gegenereerd, uit uw Azure OpenAI-abonnement. U kunt de volgende methoden gebruiken om uw trainings-, validatie- en resultaatbestanden te verwijderen:
Continue afstemming
Zodra u een nauwkeurig afgestemd model hebt gemaakt, kunt u het model na verloop van tijd verder verfijnen door verder af te stemmen. Continue afstemming is het iteratieve proces van het selecteren van een al afgestemd model als basismodel en het verder afstemmen op nieuwe sets trainingsvoorbeelden.
Als u een model wilt verfijnen dat u eerder hebt afgestemd, gebruikt u hetzelfde proces als beschreven in het maken van een aangepast model , maar in plaats van de naam van een algemeen basismodel op te geven, geeft u de id van het al afgestemde model op. De aangepaste model-id ziet er als volgt uit 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>"
}'
We raden u ook aan de suffix
parameter op te geven om onderscheid te maken tussen verschillende iteraties van uw nauwkeurig afgestemde model. suffix
neemt een tekenreeks en wordt ingesteld om het nauwkeurig afgestemde model te identificeren. Het achtervoegsel mag maximaal 40 tekens (a-z, A-Z, 0-9 en _) bevatten die worden toegevoegd aan de naam van het aangepaste model.
Als u niet zeker weet wat de id van uw nauwkeurig afgestemde model is, vindt u deze informatie op de pagina Modellen van Azure AI Studio of kunt u een lijst met modellen genereren voor een bepaalde Azure OpenAI-resource met behulp van de REST API.
Vision-afstemming
Het is ook mogelijk om afbeeldingen in uw JSONL-bestanden af te stemmen. Net zoals u één of veel afbeeldingsinvoer kunt verzenden naar chatvoltooiingen, kunt u dezelfde berichttypen opnemen in uw trainingsgegevens. Afbeeldingen kunnen worden geleverd als openbaar toegankelijke URL's of gegevens-URI's die base64-gecodeerde afbeeldingen bevatten.
Vereisten voor afbeeldingsgegevensset
- Uw trainingsbestand kan maximaal 50.000 voorbeelden bevatten die afbeeldingen bevatten (niet inclusief tekstvoorbeelden).
- Elk voorbeeld kan maximaal 64 afbeeldingen bevatten.
- Elke afbeelding kan maximaal 10 MB zijn.
Notatie
Afbeeldingen moeten het volgende zijn:
- JPEG
- PNG
- WEBP
Afbeeldingen moeten zich in de RGB- of RGBA-afbeeldingsmodus bevinden.
U kunt geen afbeeldingen opnemen als uitvoer van berichten met de assistentrol.
Beleid voor con tentmodus ration
We scannen uw afbeeldingen voordat we trainen om ervoor te zorgen dat ze voldoen aan ons gebruiksbeleid Transparantienotitie. Dit kan latentie in bestandsvalidatie veroorzaken voordat het afstemmen begint.
Afbeeldingen met het volgende worden uitgesloten van uw gegevensset en worden niet gebruikt voor training:
- Personen
- Gezichten
- CAPTCHAs
Belangrijk
Voor het afstemmen van het gezichtsscreeningproces: We schermen voor gezichten/personen om die afbeeldingen over te slaan van het trainen van het model. De screeningfunctie maakt gebruik van gezichtsdetectie zonder gezichtsidentificatie, wat betekent dat we geen gezichtssjablonen maken of specifieke gezichtsgeometrie meten, en de technologie die wordt gebruikt om te schermen voor gezichten, is in staat om de individuen uniek te identificeren. Voor meer informatie over gegevens en privacy voor gezichten raadpleegt u - Gegevens en privacy voor Face - Azure AI-services | Microsoft Learn.
Probleemoplossing
Hoe kan ik afstemmen inschakelen?
Als u toegang wilt krijgen tot fine-tuning, hebt u Cognitive Services OpenAI-inzender toegewezen. Zelfs iemand met machtigingen voor servicebeheerders op hoog niveau heeft dit account nog steeds expliciet ingesteld om toegang te krijgen tot het afstemmen. Raadpleeg de richtlijnen voor op rollen gebaseerd toegangsbeheer voor meer informatie.
Waarom is mijn upload mislukt?
Als het uploaden van bestanden mislukt in Azure OpenAI Studio, kunt u het foutbericht bekijken onder 'gegevensbestanden' in Azure OpenAI Studio. Beweeg de muisaanwijzer over de plaats waar 'error' (onder de statuskolom) staat en er wordt een uitleg van de fout weergegeven.
Mijn verfijnde model lijkt niet te zijn verbeterd
Ontbrekend systeembericht: u moet een systeembericht opgeven wanneer u het afstemt. U wilt hetzelfde systeembericht opgeven wanneer u het aangepaste model gebruikt. Als u een ander systeembericht opgeeft, ziet u mogelijk andere resultaten dan waarvoor u hebt afgestemd.
Onvoldoende gegevens: hoewel 10 het minimum is dat de pijplijn moet worden uitgevoerd, hebt u honderden tot duizenden gegevenspunten nodig om het model een nieuwe vaardigheid te leren. Te weinig gegevenspunten lopen te veel risico's op overfitting en slechte generalisatie. Uw nauwkeurig afgestemde model kan goed presteren op de trainingsgegevens, maar slecht op andere gegevens, omdat het de trainingsvoorbeelden heeft onthouden in plaats van leerpatronen. Voor de beste resultaten moet u een gegevensset voorbereiden met honderden of duizenden gegevenspunten.
Slechte gegevens: Een slecht samengestelde of niet-representatieve gegevensset produceert een model van lage kwaliteit. Uw model kan onnauwkeurige of afwijkende patronen van uw gegevensset leren. Als u bijvoorbeeld een chatbot traint voor de klantenservice, maar alleen trainingsgegevens levert voor één scenario (bijvoorbeeld item retourneert), weet u niet hoe u moet reageren op andere scenario's. Of als uw trainingsgegevens slecht zijn (onjuiste antwoorden bevat), leert uw model onjuiste resultaten te bieden.
Afstemmen met visie
Wat u moet doen als uw afbeeldingen worden overgeslagen
Uw afbeeldingen kunnen om de volgende redenen worden overgeslagen:
- bevat CAPTCHAs
- bevat personen
- bevat gezichten
Verwijder de afbeelding. Voorlopig kunnen we geen modellen verfijnen met afbeeldingen die deze entiteiten bevatten.
Algemene problemen
Probleem | Reden/oplossing |
---|---|
Afbeeldingen overgeslagen | Afbeeldingen kunnen om de volgende redenen worden overgeslagen: bevat CAPTCHAs, personen of gezichten. Verwijder de afbeelding. Voorlopig kunnen we geen modellen verfijnen met afbeeldingen die deze entiteiten bevatten. |
Niet-toegankelijke URL | Controleer of de afbeeldings-URL openbaar toegankelijk is. |
Afbeelding is te groot | Controleer of uw afbeeldingen binnen de limieten voor de grootte van de gegevensset vallen. |
Ongeldige afbeeldingsindeling | Controleer of uw afbeeldingen binnen de indeling van de gegevensset vallen. |
Grote bestanden uploaden
Uw trainingsbestanden kunnen behoorlijk groot worden. U kunt bestanden uploaden tot 8 GB in meerdere delen met behulp van de Uploads-API in plaats van de Files-API, waardoor alleen bestandsuploads van maximaal 512 MB zijn toegestaan.
Trainingskosten verlagen
Als u de detailparameter voor een afbeelding instelt op laag, wordt de grootte van de afbeelding gewijzigd in 512 bij 512 pixels en wordt deze alleen weergegeven door 85 tokens, ongeacht de grootte. Dit vermindert de kosten van training.
{
"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"
}
}
Andere overwegingen voor het afstemmen van de visie
Als u de betrouwbaarheid van het begrip van afbeeldingen wilt beheren, stelt u de detailparameter van image_url
in op low
, high
of auto
voor elke afbeelding. Dit is ook van invloed op het aantal tokens per afbeelding dat het model ziet tijdens de trainingstijd en zal van invloed zijn op de kosten van de training.
Volgende stappen
- Verken de mogelijkheden voor het afstemmen van de Azure OpenAI in de zelfstudie voor het verfijnen van Azure OpenAI.
- De regionale beschikbaarheid van het model controleren
- Meer informatie over Azure OpenAI-quota