

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.

# DPO
<a name="customizing-models-dpo"></a>

## Description
<a name="customizing-models-dpo-description"></a>

L'optimisation des préférences directes (DPO) aligne un modèle sur les préférences humaines en s'entraînant sur des paires de réponses choisies (préférées) et rejetées (non préférées) à la même invite.

### Quand l’utiliser
<a name="customizing-models-dpo-when-to-use"></a>
+ Vous disposez de données sur vos préférences indiquant quelles réponses sont les meilleures
+ Améliorez la qualité de réponse au-delà de ce que permet la SFT
+ Le modèle doit éviter des comportements indésirables spécifiques

### Ce qu'il réalise
<a name="customizing-models-dpo-what-it-achieves"></a>

Le modèle apprend à préférer générer des réponses similaires aux exemples choisis et à éviter les exemples rejetés, sans avoir besoin d'un modèle de récompense distinct.

## Format du jeu de données
<a name="customizing-models-dpo-dataset"></a>

DPO exige des paires de réponses choisies (préférées) et rejetées (non préférées) pour la même invite. DPO prend en charge deux formats de jeu de données. Tous les ensembles de données doivent être au format JSONL (un objet JSON par ligne). Un `system` message est facultatif dans les deux formats.

### Format 1 : `messages`
<a name="customizing-models-dpo-dataset-format-1"></a>

Fournissez `chosen` et `rejected` sous forme de listes de messages complètes. S'il est inclus, le `system` message doit être le premier élément et doit être identique à la fois dans `chosen` et`rejected`.

```
{
  "chosen": [
    {"role": "system", "content": "..."},
    {"role": "user", "content": "..."},
    {"role": "assistant", "content": "..."}
  ],
  "rejected": [
    {"role": "system", "content": "..."},
    {"role": "user", "content": "..."},
    {"role": "assistant", "content": "..."}
  ]
}
```

### Format 2 : `prompt`/`choisi`/`rejeté`
<a name="customizing-models-dpo-dataset-format-2"></a>

Fournissez l'invite et les deux réponses sous forme de champs de chaîne distincts, avec un `system` champ de niveau supérieur facultatif.

```
{
  "system": "...",
  "prompt": "...",
  "chosen": "...",
  "rejected": "..."
}
```

### Conseils
<a name="customizing-models-dpo-dataset-guidance"></a>
+ Les réponses choisies et rejetées devraient différer de manière significative en termes de qualité
+ Utilisez la même invite pour les options sélectionnées et rejetées
+ Le `system` message est facultatif

## Hyperparamètres - DPO LoRa
<a name="customizing-models-dpo-hyperparameters-lora"></a>

**Note**  
Les tableaux ci-dessous présentent les hyperparamètres disponibles lorsque vous utilisez la personnalisation des modèles [ sans serveur. ](customize-model.md) Les autres hyperparamètres sont prédéfinis par Amazon SageMaker AI à l'aide de valeurs par défaut optimisées. Lorsque vous utilisez [ SageMaker AI Training Jobs ](customizing-models-training-jobs.md) ou [ HyperPod](customizing-models-hyperpod.md), vous pouvez accéder à la liste complète des hyperparamètres disponibles dans les recettes. Consultez le référentiel [ SageMaker AI Recipes ](https://github.com/aws/sagemaker-hyperpod-recipes) pour obtenir une recette et accéder à tous les hyperparamètres.


| Paramètre | Type | Obligatoire ? | Échelle/Valeurs | Description | 
| --- | --- | --- | --- | --- | 
| max\_epochs | integer | Obligatoire | 1–100 | Nombre de passages complets dans l'ensemble de données d'entraînement. | 
| global\_batch\_size | entier | Obligatoire | 16, 32, 64 et 128 | Nombre total d'échantillons traités par étape de l'optimiseur sur toutes les instances. | 
| learning\_rate | float | Obligatoire | 5e-07—1e-04 | Taille du pas pour les mises à jour du poids lors de l'optimisation. | 
| lr\_scheduler | chaîne | Obligatoire | cosinus, constante | Calendrier de baisse du taux d'apprentissage au fil de l'entraînement. | 
| lr\_warmup\_steps\_ratio | float | Obligatoire | 0—1 | Fraction du nombre total d'étapes passées à augmenter le taux d'apprentissage à partir de 0. | 
| weight\_decay | float | Obligatoire | 0.0-1.0 | Coefficient de régularisation L2. Aide à prévenir le surajustement. | 
| gradient\_clipping | boolean | Obligatoire | true, false | Réduisez les gradients si la norme dépasse le seuil. | 
| gradient\_clipping\_threshold | float | Obligatoire | 0,0-5,0 | Norme de pente maximale autorisée. | 
| dataset\_max\_len | entier | Obligatoire | 256—131072 | Longueur de séquence maximale en jetons. Les séquences plus longues sont tronquées. | 
| seed | entier | Obligatoire | 0–2147483647 | Semence aléatoire pour la reproductibilité. | 
| logging\_steps | entier | Obligatoire | 1–100 | Fréquence d'enregistrement des métriques dans les étapes de l'optimiseur. | 
| lora\_rank | entier | Obligatoire | 8, 16, 32, 64 et 128 | Dimensionnalité des matrices de bas rang. Inférieur = moins de paramètres pouvant être entraînés. | 
| lora\_dropout | float | Obligatoire | 0.0-1.0 | Probabilité d'abandon pour les couches LoRA adaptatrices. | 
| lora\_alpha | entier | Obligatoire | 16, 32, 64, 128 et 256 | LoRAfacteur d'échelle. Le LR efficace s'échelonne comme suit alpha/rank : | 
| merge\_weights | boolean | Obligatoire | true, false | Fusionnez LoRA les poids dans le modèle de base après l'entraînement. | 
| train\_val\_split\_ratio | float | Facultatif | 0.0-1.0 | Fraction allouée à la formation par rapport à la validation. | 
| temperature | float | Obligatoire | 0,0-2,0 | Température d'échantillonnage pour évaluation. | 
| adam\_beta | float | Obligatoire | 1e-03—0,1 | Température inverse DPO. Contrôle la force avec laquelle le modèle applique le classement des préférences. | 

## Hyperparamètres - DPO FFT
<a name="customizing-models-dpo-hyperparameters-fft"></a>


| Paramètre | Type | Obligatoire ? | Échelle/Valeurs | Description | 
| --- | --- | --- | --- | --- | 
| max\_epochs | integer | Obligatoire | 1–100 | Nombre de passages complets dans l'ensemble de données d'entraînement. | 
| global\_batch\_size | entier | Obligatoire | 16, 32, 64 et 128 | Nombre total d'échantillons traités par étape de l'optimiseur. | 
| learning\_rate | float | Obligatoire | 5e-07—1e-04 | Taille du pas pour les mises à jour du poids. | 
| lr\_scheduler | chaîne | Obligatoire | cosinus, constante | Calendrier de décroissance du taux d'apprentissage. | 
| lr\_warmup\_steps\_ratio | float | Obligatoire | 0—1 | Fraction d'étapes pour l'échauffement du LR. | 
| weight\_decay | float | Obligatoire | 0.0-1.0 | Coefficient de régularisation L2. | 
| gradient\_clipping | boolean | Obligatoire | true, false | Réduisez les gradients si la norme dépasse le seuil. | 
| gradient\_clipping\_threshold | float | Obligatoire | 0,0-5,0 | Norme de pente maximale autorisée. | 
| dataset\_max\_len | entier | Obligatoire | 256—131072 | Longueur de séquence maximale en jetons. | 
| max\_response\_length | entier | Obligatoire | 100 à 200 000 | Nombre maximum de jetons pour la réponse générée. | 
| seed | entier | Obligatoire | 0–2147483647 | Semence aléatoire pour la reproductibilité. | 
| logging\_steps | entier | Obligatoire | 1–100 | Fréquence de l'enregistrement métrique. | 
| train\_val\_split\_ratio | float | Facultatif | 0.0-1.0 | Fraction allouée à la formation par rapport à la validation. | 
| temperature | float | Obligatoire | 0,0-2,0 | Température d'échantillonnage pour évaluation. | 
| adam\_beta | float | Obligatoire | 1e-03—0,1 | Température inverse DPO. Contrôle la force avec laquelle le modèle applique le classement des préférences. | 