Dela via


Direktinställningsoptimering (förhandsversion)

Direktpreferensoptimering (DPO) är en justeringsteknik för stora språkmodeller som används för att justera modellvikter baserat på mänskliga preferenser. Det skiljer sig från förstärkningsinlärning från mänsklig feedback (RLHF) eftersom det inte kräver anpassning av en belöningsmodell och använder enklare binära datainställningar för träning. Det är beräkningsmässigt lättare vikt och snabbare än RLHF, samtidigt som det är lika effektivt vid justering.

Varför är DPO användbart?

DPO är särskilt användbart i scenarier där det inte finns något tydligt korrekt svar, och subjektiva element som ton, stil eller specifika innehållsinställningar är viktiga. Den här metoden gör det också möjligt för modellen att lära sig av både positiva exempel (vad som anses vara korrekt eller idealiskt) och negativa exempel (vad som är mindre önskat eller felaktigt).

DPO tros vara en teknik som gör det enklare för kunder att generera träningsdatamängder av hög kvalitet. Många kunder har svårt att generera tillräckligt stora datamängder för övervakad finjustering, men de har ofta inställningsdata som redan samlats in baserat på användarloggar, A/B-tester eller mindre manuella anteckningar.

Datauppsättningsformat för direktinställningsoptimering

Direktinställningsoptimeringsfiler har ett annat format än övervakad finjustering. Kunderna tillhandahåller en "konversation" som innehåller systemmeddelandet och det första användarmeddelandet och sedan "avslutningar" med parade preferensdata. Användare kan bara tillhandahålla två slutföranden.

Tre fält på den översta nivån: input, preferred_output och non_preferred_output

  • Varje element i preferred_output/non_preferred_output måste innehålla minst ett assistentmeddelande
  • Varje element i preferred_output/non_preferred_output kan bara ha roller i (assistent, verktyg)
{  
  "input": {  
    "messages": [{"role": "system", "content": ...}],  
    "tools": [...],  
    "parallel_tool_calls": true  
  },  
  "preferred_output": [{"role": "assistant", "content": ...}],  
  "non_preferred_output": [{"role": "assistant", "content": ...}]  
}  

Träningsdatauppsättningar måste vara i jsonl format:

{{"input": {"messages": [{"role": "system", "content": "You are a chatbot assistant. Given a user question with multiple choice answers, provide the correct answer."}, {"role": "user", "content": "Question: Janette conducts an investigation to see which foods make her feel more fatigued. She eats one of four different foods each day at the same time for four days and then records how she feels. She asks her friend Carmen to do the same investigation to see if she gets similar results. Which would make the investigation most difficult to replicate? Answer choices: A: measuring the amount of fatigue, B: making sure the same foods are eaten, C: recording observations in the same chart, D: making sure the foods are at the same temperature"}]}, "preferred_output": [{"role": "assistant", "content": "A: Measuring The Amount Of Fatigue"}], "non_preferred_output": [{"role": "assistant", "content": "D: making sure the foods are at the same temperature"}]}
}

Stöd för optimeringsmodell för direktpreferenser

  • gpt-4o-2024-08-06,gpt-4.1-2025-04-14,gpt-4.1-mini-2025-04-14 har stöd för direkt optimering av inställningar i respektive finjusteringsregioner. Den senaste regiontillgängligheten uppdateras på modellsidan

Användare kan använda preferensfinjustering med basmodeller och modeller som redan har finjusterats med övervakad finjustering, så länge de är en stödd modell/version.

Så här finjusterar du direktpreferensoptimering

GIF med finjusteringssteg för optimering av inställningar.

  1. Förbered jsonl datauppsättningar i inställningsformatet.
  2. Välj modellen och välj sedan metoden för anpassning av direktpreferensoptimering.
  3. Ladda upp datauppsättningar – träning och validering. Förhandsgranska efter behov.
  4. Välj hyperparametrar, standardvärden rekommenderas för inledande experimentering.
  5. Granska valen och skapa ett finjusteringsjobb.

Optimering av direkta inställningar – REST API

curl -X POST $AZURE_OPENAI_ENDPOINT/openai/v1/fine_tuning/jobs'
-H "api-key: $AZURE_OPENAI_API_KEY" 
-H 'Content-Type: application/json' 
-H 'task_type: chat' 
--data '{ "model": "gpt-4.1-mini-2025-04-14", "training_file": "file-d02c607351994d29987aece550ac81c0", "validation_file": "file-d02c607351994d29987aece550ac81c0", "prompt_loss_weight": 0.1, "suffix": "Pause_Resume", "method":{ "type":"dpo", "dpo":{ "beta":0.1, "l2_multiplier":0.1 }}}'

Nästa steg

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