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
preferredundnon-preferredenthaltenBildlimit: Maximal 10 Bilder pro Inhaltsblock
Gemischte Modalitäten: Text, Bild und Video können nicht in derselben Trainingsaufgabe kombiniert werden