Uw gegevens voorbereiden om een chatvoltooiingsmodel af te stemmen

Voltooid

Het verfijnen omvat het combineren van een geschikt basismodel voor gebruik als basis en met een set trainingsgegevens met voorbeeldprompts en antwoorden waaruit het model kan leren. In deze les wordt aandacht besteed aan het begrijpen van de indeling van trainingsgegevens, het voorbereiden van datasets van echte gegevens en het aanmaken van synthetische data voor het verfijnen van het model.

Diagram van een basismodel plus trainingsgegevens, wat resulteert in een nauwkeurig afgestemd model.

Begrijp de structuur van de trainingsgegevens

Wanneer u besluit dat u een taalmodel wilt verfijnen, moet u de gegevensset identificeren die u kunt gebruiken om uw taalmodel af te stemmen.

Net als bij elk machine learning-model heeft de kwaliteit van de gegevensset een groot effect op de kwaliteit van uw model. Hoewel u minder gegevens nodig hebt dan wanneer u een volledig nieuw taalmodel zou trainen, hebt u mogelijk nog steeds voldoende gegevens nodig om de consistentie van het gewenste modelgedrag te maximaliseren. Hoeveel gegevens u nodig hebt, is afhankelijk van uw use-case.

Wanneer u een taalmodel voor voltooiing van chats verfijnt, zijn de gegevens die u gebruikt om een model af te stemmen een verzameling voorbeeldgesprekken. Meer specifiek moeten de gegevens drie onderdelen bevatten:

  • Het systeembericht
  • Het gebruikersbericht
  • Antwoord van de assistent

De drie variabelen komen samen in een JSON-lijn of JSONL-bestand. Eén regel in een dergelijke gegevensset kan er bijvoorbeeld als volgt uitzien:

{"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?"}]}

Datasets voorbereiden van echte gegevens

In de gegevensset moet het ideale gedrag van het model worden weergegeven. U kunt deze gegevensset maken op basis van de chatgeschiedenis van een chattoepassing die u hebt. Houd rekening met enkele dingen om rekening mee te houden wanneer u echte gegevens gebruikt:

  • Verwijder persoonlijke of gevoelige informatie.
  • U kunt zich niet alleen richten op het maken van een grote trainingsgegevensset, maar ook om ervoor te zorgen dat uw gegevensset diverse voorbeelden bevat.

U kunt meerdere beurten van een gesprek opnemen op één regel in de gegevensset. Als u alleen specifieke assistentberichten wilt afstemmen, kunt u eventueel het weight sleutel-waardepaar gebruiken. Wanneer het gewicht is ingesteld op 0, wordt het bericht genegeerd. Wanneer het gewicht is ingesteld op 1, wordt het bericht opgenomen voor training.

Een voorbeeld van een meerstaps chatbestandformaat met gewichten:

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

Synthetische gegevens genereren voor het afstemmen

Het handmatig maken van hoogwaardige trainingsgegevenssets kan tijdrovend en duur zijn. Microsoft Foundry biedt synthetische mogelijkheden voor het genereren van gegevens waarmee u trainingsgegevens kunt maken op basis van referentiedocumenten of API-specificaties.

Synthetische gegevensgeneratie is vooral handig wanneer:

  • Echte gegevens zijn schaars of moeilijk te verzamelen
  • U moet privacy behouden terwijl u een nuttige structuur behoudt
  • U wilt domeinspecifieke gegevens genereren uit bestaande documenten of code
  • U wilt de kosten verlagen ten opzichte van handmatige gegevensverzameling

Synthetische gegevensgeneratoren kiezen

Microsoft Foundry biedt twee soorten synthetische gegevensgeneratoren:

Eenvoudige Q&A-generator: converteert domeindocumenten (PDF, Markdown of tekst zonder opmaak tot 20 MB) naar het verfijnen van vraag-antwoordparen. U kunt het vraagtype configureren:

  • Lang antwoord: genereert vragen waarvoor analytische redenering in het modelantwoord is vereist
  • Kort antwoord: Genereert vragen die gericht zijn op feitelijke beknoptheid

Generator voor hulpprogramma's: maakt meerturn gesprekken met hulpprogramma-aanroepen op basis van uw API-interface. Vereist een geldige OpenAPI 3.0.x- of 3.1.x-specificatie (JSON-indeling, maximaal 20 MB) waarin de API's worden beschreven die het model moet aanroepen als hulpprogramma's.

Synthetische gegevens genereren in de portal

Synthetische gegevens genereren in Microsoft Foundry:

  1. Navigeer naar Data > Synthetic Data Generation in het portaal
  2. Selecteer Gegevens genereren
  3. Kies een taaktype (eenvoudig Q&A- of hulpprogrammagebruik)
  4. Generatieparameters configureren, indien van toepassing
  5. Uw referentiebestand uploaden
  6. Geef het aantal te genereren steekproeven op (tussen 50 en 1000)
  7. Selecteer het model dat u wilt gebruiken voor het genereren van gegevens
  8. Optioneel een 80/20-train-validatiesplitsing inschakelen
  9. De taak verzenden

De gegenereerde gegevensset wordt automatisch opgemaakt als JSONL-bestanden die compatibel zijn met Microsoft Foundry-werkstromen voor het afstemmen van werkstromen. U kunt de gegevensset downloaden voor revisie of deze rechtstreeks gebruiken bij het afstemmen.

Aanbevolen procedures toepassen voor synthetische gegevens

Om de beste resultaten te krijgen bij het gebruik van synthetische gegevens:

  • Gebruik referentiebestanden van hoge kwaliteit: de kwaliteit van uw referentiebestand heeft rechtstreeks invloed op de gegenereerde gegevens. Gebruik relevante, goed gestructureerde documenten met duidelijke opmaak en vermijd overmatige ruis of irrelevante informatie.
  • Begin klein en herhaal: Begin met een kleinere steekproefgrootte om de kwaliteit te evalueren en schaal vervolgens omhoog nadat u uw benadering hebt beoordeeld en verfijnd.
  • Combineer met echte gegevens: Combineer indien mogelijk synthetische gegevens met praktijkvoorbeelden om de prestaties en generalisatie van modellen te verbeteren.
  • Experimenteer met hyperparameters: Bij het verfijnen van synthetische gegevens moet u leersnelheden en andere parameters anders aanpassen dan met echte gegevens om overfitting te voorkomen.
  • Prestaties bewaken: evalueer regelmatig uw nauwkeurig afgestemde model op echte taken om ervoor te zorgen dat het voldoet aan uw vereisten.

Wanneer u uw gegevensset voorbereidt om een taalmodel af te stemmen, moet u het gewenste modelgedrag begrijpen, een gegevensset maken in JSONL-indeling (handmatig of via synthetische generatie) en ervoor zorgen dat de voorbeelden die u opneemt van hoge kwaliteit en divers zijn. Door uw gegevensset zorgvuldig voor te bereiden, hebt u een hogere kans dat het verfijnde model de prestaties van uw chattoepassing verbetert.