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, dus alleen een kleinere subset van 'belangrijke' parameters af te stemmen tijdens de trainingsfase onder supervisie, waardoor het model beter beheersbaar en efficiënter wordt. Voor gebruikers maakt dit training sneller en betaalbaarer dan andere technieken.

Vereisten

Notitie

Op dit moment moet u een toepassing indienen om toegang te krijgen tot de Azure OpenAI-service. Als u toegang wilt aanvragen, vult u dit formulier in.

Modellen

De volgende modellen ondersteunen het afstemmen:

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

Raadpleeg de modellenpagina om te controleren welke regio's momenteel ondersteuning bieden voor afstemming.

De werkstroom voor Azure OpenAI Studio controleren

Neem even de tijd om de werkstroom voor het verfijnen van het gebruik van Azure OpenAI Studio te bekijken:

  1. Bereid uw training en validatiegegevens voor.
  2. Gebruik de wizard Aangepast model maken in Azure OpenAI Studio om uw aangepaste model te trainen.
    1. Selecteer een basismodel.
    2. Kies uw trainingsgegevens.
    3. Kies desgewenst uw validatiegegevens.
    4. Configureer desgewenst geavanceerde opties voor uw afstemmingstaak.
    5. Controleer uw keuzes en train uw nieuwe aangepaste model.
  3. Controleer de status van uw aangepaste aangepaste model.
  4. Implementeer uw aangepaste model voor gebruik.
  5. Gebruik uw aangepaste model.
  6. 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 van een gpt-35-turbo-0613 model 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?"}]}

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}]}

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 een dergelijk 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 OpenAI Studio biedt de wizard Aangepast model maken, zodat u interactief een nauwkeurig afgestemd model voor uw Azure-resource kunt maken en trainen.

  1. Open Azure OpenAI 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.

  2. Blader in Azure OpenAI Studio naar het deelvenster Beheermodellen> en selecteer Een aangepast model maken.

    Schermopname van het openen van de wizard Aangepast model maken in Azure OpenAI Studio.

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)

  • U kunt ook een eerder afgestemd model verfijnen, opgemaakt als base-model.ft-{jobid}.

Schermopname van modelopties met een aangepast model dat is afgestemd.

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.

Schermopname van het deelvenster Trainingsgegevens voor de wizard Aangepast model maken in Azure OpenAI Studio.

  • Als uw trainingsgegevens al naar de service zijn geüpload, selecteert u Gegevensset kiezen.

    • Selecteer het bestand in de lijst die wordt weergegeven in het deelvenster Trainingsgegevens .
  • Als u nieuwe trainingsgegevens wilt uploaden, gebruikt u een van de volgende opties:

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.

Schermopname van het deelvenster Trainingsgegevens voor de wizard Aangepast model maken, met lokale bestandsopties.

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.

  1. Voer de bestandsnaam voor het bestand in.

  2. 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.

  3. Selecteer Bestand uploaden om de trainingsgegevensset naar de service te importeren.

Nadat u de trainingsgegevensset hebt geselecteerd en geüpload, selecteert u Volgende om door te gaan.

Schermopname van het deelvenster Trainingsgegevens voor de wizard Aangepast model maken, met opties voor Azure Blob en gedeelde weblocatie.

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.

Schermopname van het deelvenster Validatiegegevens voor de wizard Aangepast model maken in Azure OpenAI Studio.

  • 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:

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.

Schermopname van het deelvenster Validatiegegevens voor de wizard Aangepast model maken, met lokale bestandsopties.

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.

  1. Voer de bestandsnaam voor het bestand in.

  2. 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.

  3. Selecteer Bestand uploaden om de trainingsgegevensset naar de service te importeren.

Nadat u de validatiegegevensset hebt geselecteerd en geüpload, selecteert u Volgende om door te gaan.

Schermopname van het deelvenster Validatiegegevens voor de wizard Aangepast model maken, met opties voor Azure Blob en gedeelde weblocatie.

Geavanceerde opties configureren

De wizard Aangepast model maken toont de hyperparameters voor het trainen van uw aangepaste model in het deelvenster Geavanceerde opties . De volgende hyperparameters 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.

Schermopname van het deelvenster Geavanceerde opties voor de wizard Aangepast model maken, met de standaardopties geselecteerd.

Selecteer Standaard om de standaardwaarden voor de taak voor afstemmen te gebruiken of selecteer Geavanceerd 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.

Schermopname van het revisievenster voor de wizard Aangepast model maken in Azure OpenAI Studio.

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.

Schermopname van het deelvenster Modellen van Azure OpenAI Studio, met een aangepast model weergegeven.

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.

Schermopname van het deelvenster Modellen in Azure OpenAI Studio, met een aangepast model weergegeven.

Aangepaste 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.

Schermopname van het implementeren van een aangepast model in Azure OpenAI Studio.

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.

Schermopname van het dialoogvenster Model implementeren in Azure OpenAI Studio.

U kunt de voortgang van uw implementatie bewaken in het deelvenster Implementaties in Azure OpenAI 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 OpenAI 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.

Schermopname van het deelvenster Playground in Azure OpenAI Studio, met secties gemarkeerd.

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 Resultaatbestands-id in het deelvenster Modellen voor Azure OpenAI Studio. U kunt de bestands-id gebruiken om het resultaatbestand te identificeren en te downloaden vanuit het deelvenster Gegevensbestanden van Azure OpenAI 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.
training_accuracy Het percentage voltooiingen in de trainingsbatch waarvoor de voorspelde tokens van het model exact overeenkomen met de werkelijke voltooiingstokens.
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,67 (2 van 3) als het model is voorspeld [[1, 1], [0, 5], [4, 2]].
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.
valid_accuracy Het percentage voltooiingen in de validatiebatch waarvoor de voorspelde tokens van het model exact overeenkomen met de werkelijke voltooiingstokens.
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,67 (2 van 3) als het model is voorspeld [[1, 1], [0, 5], [4, 2]].
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]].

U kunt ook de gegevens in uw results.csv-bestand weergeven als plots in Azure OpenAI 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 OpenAI 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 OpenAI 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 OpenAI 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

Schermopname van de gebruikersinterface van een aangepast model maken met een nauwkeurig afgestemd model gemarkeerd.

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.

Notitie

Azure AI Studio is momenteel beschikbaar als openbare preview. Deze preview wordt aangeboden zonder een service level agreement en we raden deze niet aan voor productieworkloads. Misschien worden bepaalde functies niet ondersteund of zijn de mogelijkheden ervan beperkt. Zie Aanvullende gebruiksvoorwaarden voor Microsoft Azure-previews voor meer informatie.

Vereisten

Notitie

Op dit moment moet u een toepassing indienen om toegang te krijgen tot de Azure OpenAI-service. Als u toegang wilt aanvragen, vult u dit formulier in.

Modellen

De volgende modellen ondersteunen het afstemmen:

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

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:

  1. Bereid uw training en validatiegegevens voor.
  2. Gebruik de wizard Voor het verfijnen van het model in Azure AI Studio om uw aangepaste model te trainen.
    1. Selecteer een model.
    2. Kies uw trainingsgegevens.
    3. Kies desgewenst uw validatiegegevens.
    4. Configureer eventueel uw parameters voor uw taak voor het afstemmen van de taak.
    5. Controleer uw keuzes en train uw nieuwe aangepaste model.
  3. Controleer de status van uw nauwkeurig afgestemde model.
  4. Analyseer eventueel uw nauwkeurig afgestemde model voor prestaties en pasvorm.
  5. Implementeer uw nauwkeurig afgestemde model voor gebruik.
  6. Gebruik uw nauwkeurig afgestemde model.

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 van een gpt-35-turbo-0613 model 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?"}]}

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}]}

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 een dergelijk 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 afgestemde model maken

Voer de volgende stappen uit om een Azure OpenAI-model in een bestaand Azure AI Studio-project af te stemmen:

  1. Meld u aan bij Azure AI Studio en selecteer uw project op de pagina Opbouwen . Als u nog geen project hebt, maakt u eerst een project.

  2. Selecteer in het samenvouwbare linkermenu het model Fine-tuning>+ Fine-tune.

    Schermopname van de optie om een nieuw aangepast model te maken.

Het basismodel selecteren

  1. Selecteer een basismodel om af te stemmen. Uw keuze beïnvloedt zowel de prestaties als de kosten van uw model. In dit voorbeeld kiezen we het gpt-35-turbo model. Selecteer Vervolgens Bevestigen.

    Schermopname van de optie om een model te selecteren om af te stemmen.

  2. Voor gpt-35-turbo verschillende versies zijn er verschillende versies beschikbaar voor het afstemmen, dus kies welke versie u wilt verfijnen. We kiezen (0125).

  3. 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 meer dan één Azure OpenAI-verbinding hebt ingeschakeld voor het afstemmen, kiest u welke resource u wilt gebruiken. Houd er rekening mee dat alle gebruikers met toegang tot uw Azure OpenAI-resource toegang hebben tot dit verfijnde model.

  1. Selecteer Volgende.

    Schermopname van basisinstellingen voor het afstemmen van een model.

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.

Schermopname van het deelvenster Trainingsgegevens voor de wizard Model verfijnen in Azure AI Studio.

  • Als uw trainingsgegevens al in uw project zijn opgenomen, selecteert u Gegevens in Azure AI Studio.

    • Selecteer het bestand in de lijst die wordt weergegeven in het deelvenster Trainingsgegevens .
  • Als uw trainingsgegevens al zijn geüpload naar de Azure OpenAI-service, selecteert u uw Azure OpenAI-verbinding onder Azure OpenAI Verbinding maken ion.

  • Als u trainingsgegevens wilt uploaden om uw model af te stemmen, selecteert u Gegevens uploaden en selecteert u vervolgens Bestand uploaden.

    • Zorg ervoor dat al uw trainingsvoorbeelden de verwachte indeling voor deductie volgen. Om modellen effectief af te stemmen, zorgt u voor een evenwichtige en diverse gegevensset. Dit omvat het onderhouden van gegevensbalans, waaronder verschillende scenario's, en het periodiek verfijnen van trainingsgegevens om te voldoen aan werkelijke verwachtingen, wat uiteindelijk leidt tot nauwkeurigere en evenwichtiger modelreacties. Zie gegevensvoorbereiding voor meer informatie.
    • 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.

Schermopname van de optie voor het lokaal uploaden van trainingsgegevens.

Nadat u bestanden hebt geüpload, ziet u een voorbeeld van uw trainingsgegevens. Selecteer Volgende om door te gaan.

Schermopname van de voorbeeldweergave van trainingsgegevens.

Uw validatiegegevens kiezen

U kunt eventueel validatiegegevens opgeven om uw model af te stemmen. Als u geen validatiegegevens wilt gebruiken, kunt u Geen selecteren en Volgende selecteren om door te gaan naar de geavanceerde opties voor het model.

Als u een validatiegegevensset hebt, kunt u kiezen uit eerder geüploade gegevens of zojuist voorbereide validatiegegevens uploaden om uw model af te stemmen.

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.

Uw parameters configureren

Configureer eventueel parameters voor uw taak voor het afstemmen van de taak. De volgende functies 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. Als deze waarde is ingesteld op -1, wordt batch_size berekend als 0,2% van de voorbeelden in de trainingsset en is het maximum 256.
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. Als dit is ingesteld op -1, wordt het aantal tijdvakken dynamisch bepaald op basis van de invoergegevens.

U kunt ervoor kiezen om de standaardconfiguratie te behouden of de waarden aan uw voorkeur aan te passen. Nadat u klaar bent met het maken van uw configuraties, selecteert u Volgende.

Uw keuzes controleren en uw model trainen

Controleer uw keuzes en selecteer Verzenden om te beginnen met het trainen van uw nieuwe aangepaste model.

Controleer de status van uw nauwkeurig afgestemde model

Nadat u uw afstemmingstaak hebt ingediend, ziet u een pagina met details over uw nauwkeurig afgestemde model. U vindt de status en meer informatie over uw verfijnde model op de >pagina Modellen> bouwen in Azure AI Studio.

Schermopname van de pagina met de nauwkeurig afgestemde modelstatus en andere informatie.

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.

Uw nauwkeurig afgestemde model analyseren

Nadat het afstemmen is voltooid, kunt u een resultaatbestand met de naam results.csv downloaden op de pagina met het aangepaste model onder het tabblad Details . U kunt het resultaatbestand gebruiken om de trainings- en validatieprestaties van uw aangepaste model te analyseren.

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.
training_accuracy Het percentage voltooiingen in de trainingsbatch waarvoor de voorspelde tokens van het model exact overeenkomen met de werkelijke voltooiingstokens.
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,67 (2 van 3) als het model is voorspeld [[1, 1], [0, 5], [4, 2]].
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.
valid_accuracy Het percentage voltooiingen in de validatiebatch waarvoor de voorspelde tokens van het model exact overeenkomen met de werkelijke voltooiingstokens.
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,67 (2 van 3) als het model is voorspeld [[1, 1], [0, 5], [4, 2]].
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]].

U kunt de gegevens in uw results.csv-bestand ook bekijken als plots in Azure AI Studio op het tabblad Metrische gegevens van uw nauwkeurig afgestemde model. 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.

Een nauwkeurig afgestemd model implementeren

Zodra uw model is afgestemd, kunt u het model implementeren en gebruiken in uw eigen toepassing. U kunt het aangepaste model implementeren op de pagina Playground of Deployments . Wanneer u het model implementeert, maakt u het model beschikbaar voor deductie en worden er per uur hostingkosten in rekening gebracht. Verfijnde modellen kunnen echter zonder kosten worden opgeslagen in Azure AI Studio totdat u er klaar voor bent om ze te gebruiken.

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 nauwkeurig afgestemd model. Er wordt een foutbericht weergegeven als u een al geïmplementeerd, nauwkeurig afgestemd model selecteert.

U kunt de voortgang van uw implementatie controleren op de pagina Implementaties in Azure AI Studio.

Een geïmplementeerd, nauwkeurig afgestemd model gebruiken

Nadat uw nauwkeurig afgestemde model is geïmplementeerd, kunt u het net als elk ander geïmplementeerd model gebruiken. U kunt de Playground in Azure AI Studio gebruiken om te experimenteren met uw nieuwe implementatie. U kunt ook de REST API gebruiken om uw nauwkeurig afgestemde model aan te roepen vanuit uw eigen toepassing. U kunt zelfs beginnen met het gebruik van dit nieuwe verfijnde model in uw promptstroom om uw generatieve AI-toepassing te bouwen.

Notitie

Voor chatmodellen moet het systeembericht dat u gebruikt om uw afgestemde model te begeleiden (of het nu is geïmplementeerd of beschikbaar is voor testen in de speeltuin) hetzelfde zijn als het systeembericht dat u hebt gebruikt voor training. Als u een ander systeembericht gebruikt, werkt het model mogelijk niet zoals verwacht.

Uw implementaties, verfijnde modellen en trainingsbestanden opschonen

Wanneer u klaar bent met uw nauwkeurig afgestemde 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 aangepaste 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 op de pagina Implementaties in Azure AI Studio. Selecteer de implementatie die u wilt verwijderen en selecteer vervolgens Verwijderen om de implementatie te verwijderen.

Uw afgestemde model verwijderen

U kunt een nauwkeurig afgestemd model verwijderen op de pagina Voor afstemmen in Azure AI Studio. Selecteer het aangepaste model dat u wilt verwijderen en selecteer vervolgens Verwijderen om het nauwkeurig afgestemde model te verwijderen.

Notitie

U kunt een nauwkeurig afgestemd 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. Hiervoor moet u naar Azure OpenAI Studio gaan en naar het deelvenster Beheergegevens>navigeren. Selecteer het bestand dat u wilt verwijderen en selecteer vervolgens Verwijderen om het bestand te verwijderen.

Vereisten

  • Lees de handleiding Wanneer u Azure OpenAI-afstemming gebruikt.
  • Een Azure-abonnement. Maak gratis een account.
  • Toegang verleend tot Azure OpenAI in het gewenste Azure abonnement.
  • 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 om het quotum weer te geven en modellen implementeert in Azure OpenAI Studio, hebt u extra machtigingen nodig.

Notitie

Op dit moment moet u een toepassing indienen om toegang te krijgen tot de Azure OpenAI-service. Als u toegang wilt aanvragen, vult u dit formulier in.

Modellen

De volgende modellen ondersteunen het afstemmen:

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

U kunt ook een eerder afgestemd model verfijnen, opgemaakt als base-model.ft-{jobid}.

Schermopname van modelopties met een aangepast model dat is afgestemd.

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:

  1. Bereid uw training en validatiegegevens voor.
  2. Selecteer een basismodel.
  3. Upload uw trainingsgegevens.
  4. Train uw nieuwe aangepaste model.
  5. Controleer de status van uw aangepaste model.
  6. Implementeer uw aangepaste model voor gebruik.
  7. Gebruik uw aangepaste model.
  8. 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}]}

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

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:

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. 
)

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.

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))

Een aangepast 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 Azure OpenAI 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.

Een nauwkeurig afgestemd model implementeren

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.
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 deploymentte 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 OpenAI 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.
training_accuracy Het percentage voltooiingen in de trainingsbatch waarvoor de voorspelde tokens van het model exact overeenkomen met de werkelijke voltooiingstokens.
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,67 (2 van 3) als het model is voorspeld [[1, 1], [0, 5], [4, 2]].
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.
valid_accuracy Het percentage voltooiingen in de validatiebatch waarvoor de voorspelde tokens van het model exact overeenkomen met de werkelijke voltooiingstokens.
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,67 (2 van 3) als het model is voorspeld [[1, 1], [0, 5], [4, 2]].
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]].

U kunt ook de gegevens in uw results.csv-bestand weergeven als plots in Azure OpenAI 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 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:

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 OpenAI 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.
  • Toegang verleend tot Azure OpenAI in het gewenste Azure abonnement.
  • 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 implementeert in Azure OpenAI Studio, hebt u extra machtigingen nodig.

Notitie

Op dit moment moet u een toepassing indienen om toegang te krijgen tot de Azure OpenAI-service. Als u toegang wilt aanvragen, vult u dit formulier in.

Modellen

De volgende modellen ondersteunen het afstemmen:

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

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:

  1. Bereid uw training en validatiegegevens voor.
  2. Selecteer een basismodel.
  3. Upload uw trainingsgegevens.
  4. Train uw nieuwe aangepaste model.
  5. Controleer de status van uw aangepaste model.
  6. Implementeer uw aangepaste model voor gebruik.
  7. Gebruik uw aangepaste model.
  8. 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}]}

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 een dergelijk 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)

U kunt ook een eerder afgestemd model verfijnen, opgemaakt als base-model.ft-{jobid}.

Schermopname van modelopties met een aangepast model dat is afgestemd.

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:

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", 
    "training_file": "<TRAINING_FILE_ID>", 
    "validation_file": "'<VALIDATION_FILE_ID>"
}'

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.

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=2023-12-01-preview \
  -H "api-key: $AZURE_OPENAI_API_KEY"

Een aangepast 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.
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 deploymentte 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 OpenAI 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.
training_accuracy Het percentage voltooiingen in de trainingsbatch waarvoor de voorspelde tokens van het model exact overeenkomen met de werkelijke voltooiingstokens.
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,67 (2 van 3) als het model is voorspeld [[1, 1], [0, 5], [4, 2]].
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.
valid_accuracy Het percentage voltooiingen in de validatiebatch waarvoor de voorspelde tokens van het model exact overeenkomen met de werkelijke voltooiingstokens.
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,67 (2 van 3) als het model is voorspeld [[1, 1], [0, 5], [4, 2]].
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]].

U kunt ook de gegevens in uw results.csv-bestand weergeven als plots in Azure OpenAI 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

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 OpenAI Studio of kunt u een lijst met modellen genereren voor een bepaalde Azure OpenAI-resource met behulp van de REST API.

Probleemoplossing

Hoe kan ik afstemmen inschakelen? Een aangepast model maken wordt grijs weergegeven in Azure OpenAI Studio?

Als u toegang wilt krijgen tot fine-tuning, hebt u Cognitive Services OpenAI-inzender toegewezen. Zelfs iemand met servicemachtigingen op hoog niveau Beheer istrator heeft dit account nog steeds expliciet nodig om toegang te krijgen tot fine-tuning. Raadpleeg de richtlijnen voor op rollen gebaseerd toegangsbeheer voor meer informatie.

Waarom is mijn upload mislukt?

Als het uploaden van bestanden mislukt, kunt u het foutbericht onder 'Gegevensbestanden' in Azure OpenAI Studio bekijken. Beweeg de muisaanwijzer over de plaats waar 'error' (onder de statuskolom) staat en er wordt een uitleg van de fout weergegeven.

Schermopname van het foutbericht voor het afstemmen.

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.

Volgende stappen