Direkte Präferenzoptimierung (DPO) - Amazon Nova

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Direkte Präferenzoptimierung (DPO)

-Übersicht

Direct Preference Optimization (DPO) ist eine Alignment-Technik, bei der grundlegende Modelle mithilfe gepaarter Vergleichsdaten verfeinert werden, um die Modellergebnisse an den menschlichen Präferenzen auszurichten. Im Gegensatz zu Methoden des Reinforcement-Learnings optimiert DPO das Modellverhalten direkt auf der Grundlage von menschlichem Feedback darüber, welche Reaktionen wünschenswerter sind, und bietet so einen stabileren und skalierbareren Ansatz.

Warum DPO verwenden

Fundamentmodelle können zwar Ergebnisse liefern, die zwar sachlich korrekt sind, aber nicht den spezifischen Benutzerbedürfnissen, Unternehmenswerten oder Sicherheitsanforderungen entsprechen. DPO behebt dieses Problem, indem es Ihnen ermöglicht:

  • Passen Sie Modelle an die gewünschten Verhaltensmuster an

  • Reduzieren Sie unerwünschte oder schädliche Ergebnisse

  • Stimmen Sie die Antworten der Modelle mit den Richtlinien für Markensprache und Kommunikation ab

  • Verbessern Sie die Antwortqualität auf der Grundlage des Feedbacks von Fachexperten

  • Implementieren Sie Sicherheitsvorkehrungen durch bevorzugte Reaktionsmuster

Wie funktioniert DPO

DPO verwendet gepaarte Beispiele, bei denen menschliche Bewerter angeben, welche von zwei möglichen Antworten bevorzugt wird. Das Modell wird darauf trainiert, die Wahrscheinlichkeit der Generierung bevorzugter Antworten zu maximieren und gleichzeitig unerwünschte Antworten zu minimieren.

Wann sollte DPO verwendet werden

Verwenden Sie DPO in den folgenden Szenarien:

  • Optimierung für subjektive Ergebnisse, die eine Abstimmung mit bestimmten menschlichen Präferenzen erfordern

  • Anpassung der Tonalität, des Stils oder der inhaltlichen Merkmale des Modells

  • Vornahme gezielter Verbesserungen auf der Grundlage von Benutzerfeedback und Fehleranalysen

  • Aufrechterhaltung einer gleichbleibenden Ausgabequalität für verschiedene Anwendungsfälle

  • Training mit belohnungsfreiem Reinforcement-Learning, bei dem ausschließlich Präferenzdaten verwendet werden

Unterstützte Modelle und Techniken

DPO unterstützt sowohl die vollständige Parameter-Feinabstimmung als auch LoRa (Low-Rank Adaptation):

Modell Unterstützte Eingaben Instance-Typ Empfohlene Anzahl von Instances Erlaubte Anzahl von Instances
Amazon Nova Micro Text ml.p5.48xlarge 2 2, 4, 8
Amazon Nova Lite Text, Bild ml.p5.48xlarge 4 2, 4, 8, 16
Amazon Nova Pro Text, Bild ml.p5.48xlarge 6 6, 12, 24

Trainingsansätze

  • DPO mit vollem Rang: Aktualisiert alle Modellparameter. Bietet möglicherweise eine bessere Ausrichtungsqualität, erfordert jedoch mehr Rechenressourcen und produziert größere Modelle.

  • LoRa DPO: Verwendet leichte Adapter für eine parametereffiziente Feinabstimmung. Ermöglicht effizienteres Training und Einsatz mit Modellen mit kleinerem Output bei gleichzeitiger Beibehaltung einer guten Alignment-Qualität.

Für die meisten Anwendungsfälle bietet der LoRa-Ansatz ausreichende Anpassungsmöglichkeiten bei deutlich verbesserter Effizienz.

Data format (Datenformat)

DPO-Trainingsdaten folgen demselben Format wie SFT, mit der Ausnahme, dass die letzte Runde des Assistenten Präferenzpaare mit preferred und Labels enthalten muss. non-preferred

Grundstruktur

Die letzte Runde des Assistenten verwendet ein candidates Array anstelle voncontent:

{ "role": "assistant", "candidates": [ { "content": [ { "text": "This is the preferred response." } ], "preferenceLabel": "preferred" }, { "content": [ { "text": "This is the non-preferred response." } ], "preferenceLabel": "non-preferred" } ] }

Vollständiges Textbeispiel

{ "schemaVersion": "bedrock-conversation-2024", "system": [ { "text": "You are a helpful assistant." } ], "messages": [ { "role": "user", "content": [ { "text": "What is the capital of France?" } ] }, { "role": "assistant", "content": [ { "text": "The capital of France is Paris." } ] }, { "role": "user", "content": [ { "text": "Tell me more about it." } ] }, { "role": "assistant", "candidates": [ { "content": [ { "text": "Paris is the capital and largest city of France, known for the Eiffel Tower, world-class museums like the Louvre, and its rich cultural heritage." } ], "preferenceLabel": "preferred" }, { "content": [ { "text": "Paris is a city in France." } ], "preferenceLabel": "non-preferred" } ] } ] }

Beispiel mit Bildern

{ "schemaVersion": "bedrock-conversation-2024", "system": [ { "text": "You are a helpful assistant." } ], "messages": [ { "role": "user", "content": [ { "text": "Describe this image." }, { "image": { "format": "jpeg", "source": { "s3Location": { "uri": "s3://your-bucket/your-path/image.jpg", "bucketOwner": "your-aws-account-id" } } } } ] }, { "role": "assistant", "candidates": [ { "content": [ { "text": "The image shows a detailed description with relevant context and observations." } ], "preferenceLabel": "preferred" }, { "content": [ { "text": "This is a picture." } ], "preferenceLabel": "non-preferred" } ] } ] }

Datensatzanforderungen

  • Format: Einzelne JSONL-Datei für das Training, einzelne JSONL-Datei für die Validierung (optional)

  • Mindestgröße: 1.000 Präferenzpaare werden für ein effektives Training empfohlen

  • Qualität: Hochwertige Präferenzdaten führen zu effektiveren Ergebnissen

  • Andere Einschränkungen: Wie bei SFT. Weitere Informationen finden Sie unter Datensatzeinschränkungen.

Daten werden hochgeladen

aws s3 cp /path/to/training-data/ s3://your-bucket/train/ --recursive aws s3 cp /path/to/validation-data/ s3://your-bucket/val/ --recursive

Konfiguration des Rezepts

Allgemeine Laufkonfiguration

run: name: "my-dpo-run" model_type: "amazon.nova-lite-v1:0:300k" model_name_or_path: "nova-lite/prod" replicas: 4
Parameter Description
name Beschreibender Name für deinen Ausbildungsjob
model_type Nova-Modellvariante (nicht modifizieren)
model_name_or_path Pfad des Basismodells (nicht ändern)
replicas Anzahl der Recheninstanzen für verteiltes Training

Konfiguration des Trainings

training_config: max_length: 16384 global_batch_size: 32 trainer: max_epochs: 3 model: hidden_dropout: 0.0 attention_dropout: 0.0 ffn_dropout: 0.0
Parameter Description Bereich
max_length Maximale Sequenzlänge in Token 1024—32768
global_batch_size Beispiele pro Optimierungsschritt Micro/Lite/Pro: 16, 32, 64, 128. Micro/Lite: 256
max_epochs Das Training durchläuft den Datensatz Minimum: 1
hidden_dropout Aussteiger für versteckte Staaten 0,0 bis 1,0
attention_dropout Aussteiger wegen Aufmerksamkeitsgewichten 0,0 bis 1,0
ffn_dropout Aussteiger für Feed-Forward-Schichten 0,0 bis 1,0

Konfiguration des Optimierers

model: optim: lr: 1e-5 name: distributed_fused_adam adam_w_mode: true eps: 1e-08 weight_decay: 0.0 betas: - 0.9 - 0.999 sched: warmup_steps: 10 constant_steps: 0 min_lr: 1e-6
Parameter Description Bereich
lr Lernrate 0—1 (typischerweise 1e-6 bis 1e-4)
weight_decay Stärke der L2-Regularisierung 0,0 bis 1,0
warmup_steps Schritte zur schrittweisen Erhöhung der Lernrate 0—20
min_lr Minimale Lernrate am Ende des Zerfalls 0—1 (muss < lr sein)

DPO-spezifische Konfiguration

model: dpo_cfg: beta: 0.1
Parameter Description Bereich
beta Ausgewogenheit zwischen Anpassung der Trainingsdaten und Annäherung an das Originalmodell 0,001—0,5
  • Höheres Beta (0.1): Behält mehr Verhalten des Referenzmodells bei, lernt jedoch möglicherweise langsamer Präferenzen

  • Niedrigeres Beta (0,01—0,05): Aggressiveres Präferenzlernen, es besteht jedoch die Gefahr, dass es von der Referenz abweicht

Empfehlung: Beginnen Sie mit dem Präferenzlernen beta: 0.1 und passen Sie es nach unten an, wenn das Präferenzlernen unzureichend erscheint.

LoRa PEFT-Konfiguration

model: peft: peft_scheme: "lora" lora_tuning: loraplus_lr_ratio: 64.0 alpha: 32 adapter_dropout: 0.01
Parameter Description Zulässige Werte
peft_scheme Methode zur Feinabstimmung "lora"oder null (voller Rang)
alpha Skalierungsfaktor für LoRa-Gewichte 32, 64, 96, 128, 160, 192
loraplus_lr_ratio Skalierungsfaktor für die LoRa+-Lernrate 0,0—100,0
adapter_dropout Regularisierung für LoRa-Parameter 0,0 bis 1,0

Einen Ausbildungsjob beginnen

Container-Bild

708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-TJ-DPO-latest

Beispiel-Code

from sagemaker.pytorch import PyTorch from sagemaker.inputs import TrainingInput instance_type = "ml.p5.48xlarge" instance_count = 4 image_uri = "708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-TJ-DPO-latest" recipe_overrides = { "training_config": { "trainer": {"max_epochs": 2}, "model": { "dpo_cfg": {"beta": 0.1}, "peft": { "peft_scheme": "lora", "lora_tuning": { "loraplus_lr_ratio": 64.0, "alpha": 32, "adapter_dropout": 0.01, }, }, }, }, } estimator = PyTorch( output_path=f"s3://{bucket_name}/{job_name}", base_job_name=job_name, role=role, instance_count=instance_count, instance_type=instance_type, training_recipe="fine-tuning/nova/nova_lite_p5_gpu_lora_dpo", recipe_overrides=recipe_overrides, max_run=18000, sagemaker_session=sagemaker_session, image_uri=image_uri, disable_profiler=True, debugger_hook_config=False, ) train_input = TrainingInput( s3_data=train_dataset_s3_path, distribution="FullyReplicated", s3_data_type="Converse", ) val_input = TrainingInput( s3_data=val_dataset_s3_path, distribution="FullyReplicated", s3_data_type="Converse", ) estimator.fit(inputs={"train": train_input, "validation": val_input}, wait=True)

Das Modell wird bereitgestellt

Stellen Sie nach Abschluss der Schulung das benutzerdefinierte Modell mithilfe der Importfunktion für benutzerdefinierte Modelle in Amazon Bedrock bereit. Das Modell unterstützt sowohl den bereitgestellten Durchsatz als auch On-Demand-Inferenz. Mit LoRa trainierte Modelle unterstützen On-Demand-Inferenz.

Anweisungen zur Bereitstellung finden Sie unter Bereitstellen benutzerdefinierter Modelle.

Einschränkungen

  • Eingabemodalitäten: DPO akzeptiert nur Text und Bilder. Die Videoeingabe wird nicht unterstützt.

  • Ausgabemodalität: Nur Text

  • Präferenzpaare: Der letzte Assistenten-Zug muss genau zwei Kandidaten mit den Labels preferred und non-preferred enthalten

  • Bildlimit: Maximal 10 Bilder pro Inhaltsblock

  • Gemischte Modalitäten: Text, Bild und Video können nicht in derselben Trainingsaufgabe kombiniert werden