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)
L'optimisation directe des préférences (DPO) est une méthode de réglage précis efficace pour les modèles de base qui utilise des données de comparaison par paires pour aligner les résultats des modèles sur les préférences humaines. Cette approche permet d'optimiser directement le comportement du modèle en fonction des commentaires humains concernant les réponses les plus souhaitables.
Le DPO à rang complet et le DPO à adaptateur bas de gamme (LoRa) sont disponibles.
Exigences relatives au format des données
Pour les DPO de grade complet et LoRa, les exigences relatives au format des données d'entraînement sont similaires à celles du SFT. Cependant, pour le DPO, le tour final doit comporter des paires de préférences. Voici un exemple du format de données DPO :
// N-1 turns same as SFT format { "role": "assistant", "candidates": [ { "content": [ { "text": "..." } // content list can contain multiple 'text' objects ], "preferenceLabel": "preferred" }, { "content": [ { "text": "..." } // content list can contain multiple 'text' objects ], "preferenceLabel": "non-preferred" } ] }
Voici un autre exemple complet de texte DPO :
{ "system": [ { "text": "..." } ], "messages":[ { "role": "user", "content": [ { "text": "..." } ] }, { "role": "assistant", "content": [ { "text": "..." } ] }, { "role": "user", "content": [ { "text": "..." } ] }, { "role": "assistant", "candidates": [ { "content": [ { "text": "..." } ], "preferenceLabel": "preferred" }, { "content": [ { "text": "..." } ], "preferenceLabel": "non-preferred" } ] } ], }
Voici un exemple d'image DPO complet :
{ "system": [ { "text": "..." } ], "messages":[ { "role": "user", "content": [ { "text": "..." }, { "text": "..." }, { "image": { "format": "jpeg", "source": { "s3Location": { "uri": "s3://your-bucket/your-path/your-image.jpg", "bucketOwner": "your-aws-account-id" } } } } // "content" can have multiple "text" and "image" objects. // max image count is 10 ] }, { "role": "assistant", "content": [ { "text": "..." } ] }, { "role": "user", "content": [ { "text": "..." }, { "text": "..." }, { "image": { "format": "jpeg", "source": { "s3Location": { "uri": "s3://your-bucket/your-path/your-image.jpg", "bucketOwner": "your-aws-account-id" } } } } // "content" can have multiple "text" and "image" objects. // max image count is 10 ] }, { "role": "assistant", "candidates": [ { "content": [ { "text": "..." } ], "preferenceLabel": "preferred" }, { "content": [ { "text": "..." } ], "preferenceLabel": "non-preferred" } ] } ], }
D'autres contraintes s'appliquent aux ensembles de données en entrée. Pour plus d'informations, consultez la section Contraintes relatives aux ensembles de données. Nous vous recommandons d'inclure un minimum de 1 000 paires de préférences pour un entraînement efficace. Des données de préférences de haute qualité permettent d'obtenir des résultats plus efficaces.
Nous vous recommandons d'utiliser DPO dans les scénarios suivants :
-
Optimisation pour les 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 pour qu'il corresponde aux modèles de réponse souhaités.
-
Apporter des améliorations ciblées à un modèle existant 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.
-
Mise en œuvre de garde-corps de sécurité grâce à des modèles de réponse privilégiés.
-
Entraînement avec apprentissage par renforcement sans récompense.
-
Utiliser uniquement des données de préférence au lieu de données notées ou étiquetées.
-
Améliorer le modèle dans le cadre de tâches d'alignement nuancées, telles que l'utilité, l'innocuité ou l'honnêteté.
DPO de rang complet
Les paramètres Amazon Nova disponibles pour un DPO de rang complet sont les suivants :
-
Exécuter la configuration
-
name
: nom descriptif de votre tâche de formation. Cela permet d'identifier votre travail dans le AWS Management Console. -
model_type
: La variante du modèle Nova à utiliser. Les options disponibles sontamazon.nova-micro-v1:0:128k
amazon.nova-lite-v1:0:300k
, ouamazon.nova-pro-v1:0:300k
. -
model_name_or_path
: chemin d'accès au modèle de base. Sélectionnez le modèle à utiliser à partir denova-micro/prod
,nova-lite/prod
nova-pro/prod
, ou le chemin S3 pour le point de contrôle post-entraînement ()s3://<escrow bucket>/<job id>/outputs/checkpoints
. -
replicas
: le nombre d'instances de calcul à utiliser pour la formation distribuée. Les valeurs disponibles varient en fonction du modèle choisi. Amazon Nova Micro prend en charge 2, 4 ou 8 répliques. Amazon Nova Lite prend en charge 4, 8, 16 ou 32 répliques. Amazon Nova Pro prend en charge 6, 12 ou 24 répliques. -
data_s3_path
: l'emplacement S3 de l'ensemble de données d'entraînement, qui est un fichier JSONL. Ce fichier doit résider dans le même compte et dans la même région que le cluster. Tous les emplacements S3 fournis doivent se trouver dans le même compte et dans la même région. -
validation_data_s3_path
: l'emplacement S3 de l'ensemble de données de validation, qui est un fichier JSONL. Ce fichier doit résider dans la même Compte AWS région que le cluster. Tous les emplacements S3 fournis doivent se trouver dans le même compte et dans la même région.
-
-
Configuration de la formation
-
max_length
: longueur de séquence maximale en jetons. Cela détermine la taille de la fenêtre contextuelle pour l'entraînement. La valeur maximale prise en charge est de 32 768 jetons pour le DPO.Des séquences plus longues amélioreront l'efficacité de l'entraînement au prix d'une augmentation des besoins en mémoire. Nous vous recommandons de faire correspondre le
max_length
paramètre à la distribution de vos données.
-
-
Paramètres de l'entraîneur
-
max_epochs
: le nombre de passages complets dans votre ensemble de données d'entraînement. La valeur maximale est 5.En général, les grands ensembles de données nécessitent moins d'époques pour converger, tandis que les ensembles de données plus petits nécessitent plus d'époques pour converger. Nous vous recommandons d'ajuster le nombre d'époques en fonction de la taille de vos données.
-
-
Réglages du modèle
-
hidden_dropout
: probabilité de supprimer les sorties d'état masquées. Augmentez cette valeur d'environ 0,0-0,2 pour réduire le surajustement sur les petits ensembles de données. Les valeurs valides sont comprises entre 0 et 1 inclus. -
attention_dropout
: La probabilité de perdre du poids d'attention. Ce paramètre peut faciliter la généralisation. Les valeurs valides sont comprises entre 0 et 1 inclus. -
ffn_dropout
: Probabilité de perte des sorties réseau prévisionnelles. Les valeurs valides sont comprises entre 0 et 1 inclus.
-
-
Configuration de l'optimiseur
-
lr
: le taux d'apprentissage, qui contrôle la taille des étapes lors de l'optimisation. Nous recommandons des valeurs comprises entre 1e-6-1e-4 pour de bonnes performances. Les valeurs valides sont comprises entre 0 et 1 inclus. -
name
: algorithme d'optimisation. Actuellement, seuldistributed_fused_adam
est pris en charge. -
weight_decay
: La force de régularisation L2. Des valeurs plus élevées (entre 0,01 et 0,1) augmentent la régularisation. -
warmup_steps
: Le nombre d'étapes pour augmenter progressivement le taux d'apprentissage. Cela améliore la stabilité de l'entraînement. Les valeurs valides sont comprises entre 1 et 20 inclus. -
min_lr
: Le taux d'apprentissage minimum à la fin de la décadence. Les valeurs valides sont comprises entre 0 et 1 inclus, mais elles doivent être inférieures au taux d'apprentissage.
-
-
Configuration du DPO
-
beta
: Détermine dans quelle mesure le modèle doit correspondre aux données d'entraînement ou au modèle d'origine. Les valeurs valides sont comprises entre 0,001 et 0,5 inclus.Spécifiez des valeurs plus élevées (0,5, par exemple) pour conserver une plus grande partie du comportement du modèle de référence tout en apprenant plus lentement les nouvelles préférences. Spécifiez des valeurs plus petites (par exemple, 0,01 à 0,05) pour apprendre plus rapidement les nouvelles préférences au risque de s'écarter du comportement du modèle de référence.
-
Recette complète de DPO
Voici une recette complète pour le DPO
## Run config run: name: "my-dpo-micro-job" # A descriptive name for your training job model_type: "amazon.nova-micro-v1:0:128k" # Model variant specification, do not change model_name_or_path: "nova-micro/prod" # Base model path, do not change replicas: 2 # Number of compute instances for training, allowed values are 2, 4, 8 data_s3_path: s3:
Replace with your S3 bucket name
/input.jsonl validation_data_s3_path:[OPTIONAL] s3:your S3 bucket name
/input.jsonl output_s3_path:[S3_PATH_TO_STORE_MANIFEST]
## Training specific configs training_config: max_length: 32768 # Maximum context window size (tokens). global_batch_size: 64 # Global batch size, allowed values are 16, 32, 64. trainer: max_epochs: 2 # Number of training epochs model: hidden_dropout: 0.0 # Dropout for hidden states, must be between 0.0 and 1.0 attention_dropout: 0.0 # Dropout for attention weights, must be between 0.0 and 1.0 ffn_dropout: 0.0 # Dropout for feed-forward networks, must be between 0.0 and 1.0 optim: lr: 1e-5 # Learning rate name: distributed_fused_adam # Optimizer algorithm, do not change adam_w_mode: true # Enable AdamW mode eps: 1e-06 # Epsilon for numerical stability weight_decay: 0.0 # L2 regularization strength, must be between 0.0 and 1.0 betas: # Adam optimizer betas, must be between 0.0 and 1.0 - 0.9 - 0.999 sched: warmup_steps: 10 # Learning rate warmup steps constant_steps: 0 # Steps at constant learning rate min_lr: 1e-6 # Minimum learning rate, must be lower than lr dpo_cfg: beta: 0.1 # Strength of preference enforcement. Limits: [0.001, 0.5] peft: peft_scheme: null # Disable LoRA, trigger full rank fine tuning
Adaptateur bas de gamme DPO
Les paramètres Amazon Nova disponibles pour les adaptateurs DPO de bas rang sont les suivants :
-
Exécuter la configuration
-
name
: nom descriptif de votre tâche de formation. Cela permet d'identifier votre travail dans le AWS Management Console. -
model_type
: La variante du modèle Nova à utiliser. Les options disponibles sontamazon.nova-micro-v1:0:128k
amazon.nova-lite-v1:0:300k
, ouamazon.nova-pro-v1:0:300k
. -
model_name_or_path
: chemin d'accès au modèle de base. Sélectionnez le modèle à utiliser à partir denova-micro/prod
,nova-lite/prod
nova-pro/prod
, ou le chemin S3 pour le point de contrôle post-entraînement ()s3://<escrow bucket>/<job id>/outputs/checkpoints
. -
replicas
: le nombre d'instances de calcul à utiliser pour la formation distribuée. Les valeurs disponibles varient en fonction du modèle choisi. Amazon Nova Micro prend en charge 2, 4 ou 8 répliques. Amazon Nova Lite prend en charge 4, 8, 16 ou 32 répliques. Amazon Nova Pro prend en charge 6, 12 ou 24 répliques.
-
-
Configuration de la formation
-
max_length
: longueur de séquence maximale en jetons. Cela détermine la taille de la fenêtre contextuelle pour l'entraînement. La valeur maximale prise en charge est de 32 768 jetons pour le DPO.Des séquences plus longues amélioreront l'efficacité de l'entraînement au prix d'une augmentation des besoins en mémoire. Nous vous recommandons de faire correspondre le
max_length
paramètre à la distribution de vos données.
-
-
Paramètres de l'entraîneur
-
max_epochs
: le nombre de passages complets dans votre ensemble de données d'entraînement. La valeur maximale est 5.En général, les grands ensembles de données nécessitent moins d'époques pour converger, tandis que les ensembles de données plus petits nécessitent plus d'époques pour converger. Nous vous recommandons d'ajuster le nombre d'époques en fonction de la taille de vos données.
-
-
Réglages du modèle
-
hidden_dropout
: probabilité de supprimer les sorties d'état masquées. Augmentez cette valeur d'environ 0,0-0,2 pour réduire le surajustement sur les petits ensembles de données. Les valeurs valides sont comprises entre 0 et 1 inclus. -
attention_dropout
: La probabilité de perdre du poids d'attention. Ce paramètre peut faciliter la généralisation. Les valeurs valides sont comprises entre 0 et 1 inclus. -
ffn_dropout
: Probabilité de perte des sorties réseau prévisionnelles. Les valeurs valides sont comprises entre 0 et 1 inclus.
-
-
Configuration de l'optimiseur
-
lr
: le taux d'apprentissage, qui contrôle la taille des étapes lors de l'optimisation. Nous recommandons des valeurs comprises entre 1e-6-1e-4 pour de bonnes performances. Les valeurs valides sont comprises entre 0 et 1 inclus. -
name
: algorithme d'optimisation. Actuellement, seuldistributed_fused_adam
est pris en charge. -
weight_decay
: La force de régularisation L2. Des valeurs plus élevées (entre 0,01 et 0,1) augmentent la régularisation. -
warmup_steps
: Le nombre d'étapes pour augmenter progressivement le taux d'apprentissage. Cela améliore la stabilité de l'entraînement. Les valeurs valides sont comprises entre 1 et 20 inclus. -
min_lr
: Le taux d'apprentissage minimum à la fin de la décadence. Les valeurs valides sont comprises entre 0 et 1 inclus, mais elles doivent être inférieures au taux d'apprentissage.
-
-
Configuration du DPO
-
beta
: Détermine dans quelle mesure le modèle doit correspondre aux données d'entraînement ou au modèle d'origine. Les valeurs valides sont comprises entre 0,001 et 0,5 inclus.Spécifiez des valeurs plus élevées (0,5, par exemple) pour conserver une plus grande partie du comportement du modèle de référence tout en apprenant plus lentement les nouvelles préférences. Spécifiez des valeurs plus petites (par exemple, 0,01 à 0,05) pour apprendre plus rapidement les nouvelles préférences au risque de s'écarter du comportement du modèle de référence.
-
-
Paramètres de configuration LoRa
-
peft_scheme
: défini surlora
pour activer l'adaptation de bas rang, qui génère un modèle de sortie plus efficace et plus petit. Ces propriétés spécifiques à la LORA sont également disponibles :-
alpha
: Le facteur d'échelle pour les poids LoRa. Ce paramètre est généralement défini sur la même valeur queadapter_dim
. -
adapter_dropout
: paramètre de régularisation des paramètres LoRa.
-
-
Recette LoRa DPO
Voici une recette pour LoRa DPO.
## Run config run: name: "my-lora-run" # A descriptive name for your training job model_type: "amazon.nova-lite-v1:0:300k" # Model variant specification, do not change model_name_or_path: "nova-lite/prod" # Base model path, do not change replicas: 4 # Number of compute instances for training. All supported values: {4, 8, 16} data_s3_path: s3:
Replace with your S3 bucket name
/input.jsonl validation_data_s3_path:[OPTIONAL] s3:your S3 bucket name
/input.jsonl output_s3_path:[S3_PATH_TO_STORE_MANIFEST]
## Training specific configs training_config: max_length: 16384 # Maximum context window size (tokens). Should be between [1024, 32768] and multiple of 1024. # Note: Image dataset for DPO has a limit on 20k samples and 16384 max_length global_batch_size: 64 # Total samples per step. Limits: {16, 32, 64, 128, 256} trainer: max_epochs: 2 # Number of training epochs model: hidden_dropout: 0.0 # Dropout for hidden states. Limits: [0.0, 1.0] attention_dropout: 0.0 # Dropout for attention weights. Limits: [0.0, 1.0] ffn_dropout: 0.0 # Dropout for feed-forward networks. Limits: [0.0, 1.0] optim: lr: 1e-5 # Learning rate name: distributed_fused_adam # Optimizer algorithm, do not change adam_w_mode: true # Enable AdamW mode eps: 1e-08 # Epsilon for numerical stability weight_decay: 0.01 # L2 regularization strength betas: # Adam optimizer betas. Limits: [0.0, 1.0] - 0.9 - 0.999 sched: warmup_steps: 10 # Learning rate warmup steps constant_steps: 0 # Steps at constant learning rate min_lr: 1e-6 # Minimum learning rate dpo_cfg: beta: 0.01 # Strength of preference enforcement. Limits: [0.001, 0.5] peft: peft_scheme: "lora" # Enable LoRA for parameter-efficient fine-tuning lora_tuning: loraplus_lr_ratio: 20.0 # LoRA+ learning rate scaling factor. Limits: [0.0, 100.0] alpha: 64 # Scaling factor for LoRA weights. [32, 64, 96, 128, 160, 192] adapter_dropout: 0.01 # Regularization for LoRA parameters. Limits: [0.0, 1.0]
Limites
Le DPO présente les limites suivantes :
-
Les points de contrôle intermédiaires ne sont pas enregistrés pour évaluation et vous ne pouvez pas les reprendre à partir d'un point de contrôle intermédiaire. Seul le dernier point de contrôle est enregistré.
-
MLflow la journalisation n'est pas prise en charge.
-
Pour ajuster les hyperparamètres, suivez les instructions de la section Sélection des hyperparamètres.