Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Optimisation directe des préférences (DPO)
Présentation de
L'optimisation directe des préférences (DPO) est une technique d'alignement qui permet d'affiner les modèles de base à l'aide de données de comparaison par paires afin d'aligner les résultats des modèles sur les préférences humaines. Contrairement aux méthodes d'apprentissage par renforcement, le DPO optimise directement le comportement du modèle en fonction des commentaires humains concernant les réponses les plus souhaitables, offrant ainsi une approche plus stable et évolutive.
Pourquoi utiliser DPO
Les modèles de base peuvent générer des résultats factuellement corrects mais ne pas correspondre aux besoins spécifiques des utilisateurs, aux valeurs organisationnelles ou aux exigences de sécurité. Le DPO répond à ce problème en vous permettant de :
Ajustez les modèles en fonction des modèles de comportement souhaités
Réduisez les sorties indésirables ou nocives
Aligner les réponses des modèles sur la voix de la marque et les directives de communication
Améliorez la qualité des réponses en fonction des commentaires des experts du domaine
Mettre en œuvre des garde-fous de sécurité grâce à des modèles de réponse privilégiés
Comment fonctionne le DPO
Le DPO utilise des exemples appariés dans lesquels des évaluateurs humains indiquent laquelle des deux réponses possibles est préférée. Le modèle apprend à maximiser la probabilité de générer les réponses préférées tout en minimisant les réponses indésirables.
Quand utiliser le DPO
Utilisez DPO dans les scénarios suivants :
Optimisation pour des résultats subjectifs qui nécessitent un alignement sur des préférences humaines spécifiques
Ajustement du ton, du style ou des caractéristiques du contenu du modèle
Apporter des améliorations ciblées en fonction des commentaires des utilisateurs et de l'analyse des erreurs
Maintien d'une qualité de sortie constante dans les différents cas d'utilisation
Entraînement avec apprentissage par renforcement sans récompense en utilisant uniquement les données de préférence
Modèles et techniques pris en charge
DPO prend en charge à la fois le réglage précis de tous les paramètres et le LoRa (Low-Rank Adaptation) :
| Modèle | Entrées prises en charge | Type d’instance | Nombre d’instances recommandées | Nombre d’instances autorisées |
|---|---|---|---|---|
| Amazon Nova Micro | Texte | ml.p5.48xlarge | 2 | 2, 4, 8 |
| Amazon Nova Lite | Texte, image | ml.p5.48xlarge | 4 | 2, 4, 8, 16 |
| Amazon Nova Pro | Texte, image | ml.p5.48xlarge | 6 | 6, 12, 24 |
Approches de formation
DPO de rang complet : met à jour tous les paramètres du modèle. Offre potentiellement une meilleure qualité d'alignement, mais nécessite davantage de ressources de calcul et produit des modèles plus grands.
LoRa DPO : utilise des adaptateurs légers pour un réglage précis efficace des paramètres. Permet une formation et un déploiement plus efficaces avec des modèles de sortie plus petits tout en maintenant une bonne qualité d'alignement.
Dans la plupart des cas d'utilisation, l'approche LoRa fournit une capacité d'adaptation suffisante avec une efficacité nettement améliorée.
Format de données
Les données d'entraînement du DPO suivent le même format que le format SFT, sauf que le dernier tour de l'assistant doit contenir des paires de préférences avec preferred et non-preferred des étiquettes.
Structure de base
Le dernier tour de l'assistant utilise un candidates tableau au lieu de content :
{ "role": "assistant", "candidates": [ { "content": [ { "text": "This is the preferred response." } ], "preferenceLabel": "preferred" }, { "content": [ { "text": "This is the non-preferred response." } ], "preferenceLabel": "non-preferred" } ] }
Exemple de texte complet
{ "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" } ] } ] }
Exemple avec images
{ "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" } ] } ] }
Configuration requise pour les jeux de données
Format : fichier JSONL unique pour la formation, fichier JSONL unique pour la validation (facultatif)
Taille minimale : 1 000 paires de préférence recommandées pour un entraînement efficace
Qualité : des données de préférences de haute qualité produisent des résultats plus efficaces
Autres contraintes : Identiques à SFT. Pour plus d’informations, consultez Contraintes liées aux jeux de données.
Téléchargement de données
aws s3 cp /path/to/training-data/ s3://your-bucket/train/ --recursive aws s3 cp /path/to/validation-data/ s3://your-bucket/val/ --recursive
Configuration de la recette
Configuration générale de l’exécution
run: name: "my-dpo-run" model_type: "amazon.nova-lite-v1:0:300k" model_name_or_path: "nova-lite/prod" replicas: 4
| Paramètre | Description |
|---|---|
name |
Nom descriptif de votre poste de formation |
model_type |
Variante du modèle Nova (ne pas modifier) |
model_name_or_path |
Chemin du modèle de base (ne pas modifier) |
replicas |
Nombre d'instances de calcul pour la formation distribuée |
Configuration d’entraînement
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
| Paramètre | Description | Range |
|---|---|---|
max_length |
Longueur de séquence maximale en jetons | 1024—32768 |
global_batch_size |
Échantillons par étape d'optimisation | Micro/Lite/Pro: 16, 32, 64, 128. Micro/Lite : 256 |
max_epochs |
La formation passe par un ensemble de données | Minimum : 1 |
hidden_dropout |
Abandon pour les états cachés | 0.0-1.0 |
attention_dropout |
Abandon scolaire pour perdre de l'attention | 0.0-1.0 |
ffn_dropout |
Abandon pour les couches rétroactives | 0.0-1.0 |
Configuration d’optimiseur
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
| Paramètre | Description | Range |
|---|---|---|
lr |
Taux d’apprentissage | 0—1 (généralement 1e-6 à 1e-4) |
weight_decay |
Force de régularisation L2 | 0.0-1.0 |
warmup_steps |
Étapes pour augmenter progressivement le taux d'apprentissage | 0 à 20 |
min_lr |
Taux d'apprentissage minimal en fin de décadence | 0—1 (doit être < lr) |
Configuration spécifique au DPO
model: dpo_cfg: beta: 0.1
| Paramètre | Description | Range |
|---|---|---|
beta |
Équilibre entre l'ajustement des données d'entraînement et le maintien de la proximité avec le modèle d'origine | 0,001—0,5 |
Bêta supérieur (0,1) : préserve davantage le comportement du modèle de référence mais peut apprendre les préférences plus lentement
Bêta inférieur (0,01 à 0,05) : apprentissage des préférences plus agressif mais risque de divergence par rapport à la référence
Recommandation : Commencez par le bas beta: 0.1 et ajustez à la baisse si l'apprentissage des préférences semble insuffisant.
Configuration LoRa PET
model: peft: peft_scheme: "lora" lora_tuning: loraplus_lr_ratio: 64.0 alpha: 32 adapter_dropout: 0.01
| Paramètre | Description | Valeurs autorisées |
|---|---|---|
peft_scheme |
Méthode de réglage précis | "lora"ou null (rang complet) |
alpha |
Facteur d'échelle pour les poids LoRa | 32, 64, 96, 128, 160, 192 |
loraplus_lr_ratio |
Facteur d'échelle du taux d'apprentissage LoRa+ | 0,0—100,0 |
adapter_dropout |
Régularisation des paramètres LoRa | 0.0-1.0 |
Démarrage d'un poste de formation
Image du conteneur
708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-TJ-DPO-latest
Exemple de 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)
Déploiement du modèle
Une fois la formation terminée, déployez le modèle personnalisé sur Amazon Bedrock à l'aide de la fonctionnalité d'importation de modèles personnalisés. Le modèle prend en charge à la fois le débit provisionné et l'inférence à la demande. Les modèles entraînés par LoRA prennent en charge l'inférence à la demande.
Pour les instructions de déploiement, voir Déploiement de modèles personnalisés.
Limitations
Modalités de saisie : Le DPO accepte uniquement le texte et les images. L'entrée vidéo n'est pas prise en charge.
Modalité de sortie : texte uniquement
Paires de préférences : le dernier tour d'assistant doit contenir exactement deux candidats avec des
non-preferredétiquettespreferredetLimite d'images : 10 images maximum par bloc de contenu
Modalités mixtes : impossible de combiner le texte, l'image et la vidéo dans le même travail de formation