Förbereda dina data för att finjustera en modell för chattens slutförande
Finjustering innebär att kombinera en lämplig grundmodell som ska användas som bas och med en uppsättning träningsdata som innehåller exempelfrågor och svar som modellen kan lära sig av. Den här lektionen handlar om att förstå träningsdataformatet, förbereda datauppsättningar från verkliga data och generera syntetiska data för finjustering.
Förstå träningsdataformatet
När du bestämmer dig för att finjustera en språkmodell måste du identifiera den datauppsättning som du kan använda för att finjustera språkmodellen.
Precis som alla maskininlärningsmodeller har datamängdens kvalitet en stor inverkan på modellens kvalitet. Även om du behöver mindre data än när du tränar en språkmodell från grunden kan du fortfarande behöva tillräckligt med data för att maximera konsekvensen i den önskade modellens beteende. Hur mycket data du behöver beror på ditt användningsfall.
När du finjusterar en språkmodell för att slutföra chatten är de data som du använder för att finjustera en modell en samling exempelkonversationer. Mer specifikt bör data innehålla tre komponenter:
- Systemmeddelandet
- Användarmeddelandet
- Assistentens svar
De tre variablerna samlas i en JSON Lines- eller JSONL-fil. En rad i en sådan datamängd kan till exempel se ut så här:
{"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?"}]}
Förbered datauppsättningar från verkliga data
Datauppsättningen bör visa modellens ideala beteende. Du kan skapa den här datamängden baserat på chatthistoriken för ett chattprogram som du har. Några saker att tänka på när du använder verkliga data är att:
- Ta bort personlig eller känslig information.
- Fokusera inte bara på att skapa en stor träningsdatauppsättning, utan se också till att din datauppsättning innehåller en mängd olika exempel.
Du kan inkludera flera konversationsvarv på en enda rad i datauppsättningen. Om du bara vill finjustera specifika assistentmeddelanden kan du använda nyckel/värde-paret weight. När vikten är inställd på 0 ignoreras meddelandet, när du anger 1 inkluderas meddelandet för träning.
Ett exempel på ett chattfilformat med flera turer med vikter:
{"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}]}
Generera syntetiska data för finjustering
Att skapa högkvalitativa träningsdatauppsättningar manuellt kan vara tidskrävande och dyrt. Microsoft Foundry tillhandahåller funktioner för syntetisk datagenerering som kan hjälpa dig att skapa träningsdata från referensdokument eller API-specifikationer.
Syntetisk datagenerering är särskilt användbart när:
- Verkliga data är knappa eller svåra att samla in
- Du måste bevara sekretessen samtidigt som du behåller en användbar struktur
- Du vill generera domänspecifika data från befintliga dokument eller kod
- Du vill minska kostnaden jämfört med manuell datainsamling
Välj syntetiska datageneratorer
Microsoft Foundry erbjuder två typer av syntetiska datageneratorer:
Enkel Q&A-generator: Konverterar domändokument (PDF, Markdown eller oformaterad text upp till 20 MB) till finjusterande frågesvarspar. Du kan konfigurera frågetypen:
- Långt svar: Genererar frågor som kräver analytiskt resonemang i modellsvaret
- Kort svar: Genererar frågor som fokuserar på faktamässig korthet
Generator för verktygsanvändning: Skapar konversationer i flera steg med API-anrop baserat på API-yta. Kräver en giltig OpenAPI 3.0.x- eller 3.1.x-specifikation (JSON-format, upp till 20 MB) som beskriver de API:er som du vill att modellen ska lära sig att anropa som verktyg.
Generera syntetiska data i portalen
Så här genererar du syntetiska data i Microsoft Foundry:
- Navigera till generering av syntetiska data > i portalen
- Välj Generera data
- Välj en aktivitetstyp (enkel Q&A eller verktygsanvändning)
- Konfigurera genereringsparametrar om det är tillämpligt
- Ladda upp referensfilen
- Ange antalet exempel som ska genereras (mellan 50 och 1 000)
- Välj den modell som ska användas för datagenerering
- Du kan också aktivera en 80/20-tågvalideringsdelning
- Skicka in jobbet
Den genererade datamängden formateras automatiskt som JSONL-filer som är kompatibla med Microsoft Foundry-finjusteringsarbetsflöden. Du kan ladda ned datamängden för granskning eller använda den direkt i finjustering.
Tillämpa metodtips för syntetiska data
Så här får du bästa resultat när du använder syntetiska data:
- Använd referensfiler av hög kvalitet: Referensfilens kvalitet påverkar direkt de genererade data. Använd relevanta, välstrukturerade dokument med tydlig formatering och undvik överdrivet brus eller irrelevant information.
- Börja litet och iterera: Börja med en mindre urvalsstorlek för att utvärdera kvaliteten och skala sedan upp efter att ha granskat och förfinat din metod.
- Kombinera med verkliga data: När det är möjligt kan du blanda syntetiska data med verkliga exempel för att förbättra modellens prestanda och generalisering.
- Experimentera med hyperparametrar: När du finjusterar syntetiska data måste du justera inlärningsfrekvensen och andra parametrar på ett annat sätt än med verkliga data för att undvika överanpassning.
- Övervaka prestanda: Utvärdera regelbundet din finjusterade modell för verkliga uppgifter för att säkerställa att den uppfyller dina krav.
När du förbereder datauppsättningen för att finjustera en språkmodell bör du förstå dina önskade modellbeteenden, skapa en datauppsättning i JSONL-format (manuellt eller genom syntetisk generering) och se till att exemplen du inkluderar är av hög kvalitet och varierande. Genom att förbereda datauppsättningen noggrant har du större chans att den finjusterade modellen förbättrar chattprogrammets prestanda.