Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Optimización de preferencias directas (DPO)
La optimización de preferencias directas (DPO) es un método de afinación eficiente para modelos básicos que utiliza datos de comparación emparejados para alinear los resultados del modelo con las preferencias humanas. Este enfoque permite la optimización directa del comportamiento del modelo basándose en la retroalimentación humana sobre qué respuestas son más deseables.
Hay disponibles tanto una DPO de rango completo como una DPO con adaptador de bajo rango (LoRA).
Requisitos del formato de los datos
Tanto para los DPO de rango completo como para los de LoRa, los requisitos de formato de los datos de formación son similares a los de la SFT. Sin embargo, en el caso del DPO, el turno final debe tener pares de preferencias. A continuación, se muestra un ejemplo del formato de datos de un 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" } ] }
Este es otro ejemplo completo de texto de 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" } ] } ], }
Esta es una muestra completa de una imagen de DPO:
{ "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" } ] } ], }
Se aplican otras restricciones a los conjuntos de datos de entrada. Para obtener más información, consulte Restricciones del conjunto de datos. Te recomendamos que incluyas un mínimo de 1000 pares de preferencias para un entrenamiento efectivo. Los datos de preferencias de alta calidad conducen a resultados más eficientes.
Recomendamos utilizar la DPO en las siguientes situaciones:
-
Optimización para obtener resultados subjetivos que exigen una alineación con preferencias humanas específicas.
-
Modificación del tono, el estilo o las características del contenido del modelo para que coincidan con los patrones de respuesta deseados.
-
Realización de mejoras específicas en un modelo existente en función de los comentarios de los usuarios y el análisis de errores.
-
Mantenimiento de calidad de salida uniforme en diferentes casos de uso.
-
Implementación de barreras de protección a través de los patrones de respuesta preferidos.
-
Entrenamiento con aprendizaje reforzado sin recompensas.
-
Uso exclusivo de datos de preferencias en lugar de datos calificados o etiquetados.
-
Mejoramiento del modelo en tareas de alineación matizadas, como la utilidad, la inocuidad o la honestidad.
DPO de rango completo
Los parámetros de Amazon Nova que están disponibles para los DPO de rango completo son los siguientes:
-
Ejecute la configuración
-
name
: un nombre descriptivo para su trabajo de formación. Esto ayuda a identificar su trabajo en el AWS Management Console. -
model_type
: La variante del modelo Nova que se debe utilizar. Las opciones disponibles sonamazon.nova-micro-v1:0:128k
amazon.nova-lite-v1:0:300k
, oamazon.nova-pro-v1:0:300k
. -
model_name_or_path
: La ruta al modelo base. Seleccione el modelo a utilizarnova-micro/prod
,nova-lite/prod
nova-pro/prod
, o la ruta S3 para el punto de control posterior al entrenamiento ()s3://<escrow bucket>/<job id>/outputs/checkpoints
. -
replicas
: el número de instancias informáticas que se van a utilizar para el entrenamiento distribuido. Los valores disponibles varían en función del modelo elegido. Amazon Nova Micro admite 2, 4 u 8 réplicas. Amazon Nova Lite admite 4, 8, 16 o 32 réplicas. Amazon Nova Pro admite 6, 12 ó 24 réplicas. -
data_s3_path
: La ubicación en S3 del conjunto de datos de entrenamiento, que es un archivo JSONL. Este archivo debe residir en la misma cuenta y región que el clúster. Todas las ubicaciones de S3 proporcionadas deben estar en la misma cuenta y región. -
validation_data_s3_path
: La ubicación en S3 del conjunto de datos de validación, que es un archivo JSONL. Este archivo debe residir en la misma región Cuenta de AWS y región que el clúster. Todas las ubicaciones de S3 proporcionadas deben estar en la misma cuenta y región.
-
-
Configuración de entrenamiento
-
max_length
: La longitud máxima de la secuencia en fichas. Esto determina el tamaño de la ventana de contexto para el entrenamiento. El valor máximo admitido es de 32.768 fichas para el DPO.Las secuencias más largas mejorarán la eficiencia del entrenamiento a costa de aumentar los requisitos de memoria. Le recomendamos que haga coincidir el
max_length
parámetro con su distribución de datos.
-
-
Ajustes del entrenador
-
max_epochs
: El número de pasadas completas por tu conjunto de datos de entrenamiento. El valor máximo es 5.En general, los conjuntos de datos más grandes requieren menos épocas para converger, mientras que los conjuntos de datos más pequeños requieren más épocas para converger. Le recomendamos que ajuste el número de épocas en función del tamaño de los datos.
-
-
Ajustes del modelo
-
hidden_dropout
: La probabilidad de eliminar las salidas de estado ocultas. Aumente este valor entre aproximadamente 0,0-0,2 para reducir el sobreajuste en conjuntos de datos más pequeños. Los valores válidos están entre 0 y 1, ambos inclusive. -
attention_dropout
: La probabilidad de perder el peso de la atención. Este parámetro puede ayudar a generalizar. Los valores válidos están comprendidos entre 0 y 1, ambos inclusive. -
ffn_dropout
: La probabilidad de que disminuyan las salidas de la red de retroalimentación. Los valores válidos están entre 0 y 1, ambos inclusive.
-
-
Configuración del optimizador
-
lr
: La tasa de aprendizaje, que controla el tamaño de los pasos durante la optimización. Recomendamos valores entre 1e-6-1e-4 para un buen rendimiento. Los valores válidos están comprendidos entre 0 y 1, ambos inclusive. -
name
: El algoritmo optimizador. En la actualidad, solo se admitedistributed_fused_adam
. -
weight_decay
: La fuerza de regularización L2. Los valores más altos (entre 0,01 y 0,1) aumentan la regularización. -
warmup_steps
: El número de pasos para aumentar gradualmente la tasa de aprendizaje. Esto mejora la estabilidad del entrenamiento. Los valores válidos están entre 1 y 20, ambos inclusive. -
min_lr
: La tasa mínima de aprendizaje al final de la decadencia. Los valores válidos están entre 0 y 1, ambos inclusive, pero deben ser inferiores a la tasa de aprendizaje.
-
-
Configuración de DPO
-
beta
: Determina qué tan cerca debe ajustarse el modelo a los datos de entrenamiento o al modelo original. Los valores válidos están entre 0,001 y 0,5, ambos inclusive.Especifique valores más altos (por ejemplo, 0,5) para conservar una mayor parte del comportamiento del modelo de referencia y, al mismo tiempo, aprender más lentamente las nuevas preferencias. Especifique valores más pequeños (por ejemplo, 0,01-0,05) para aprender más rápidamente las nuevas preferencias con el riesgo de desviarse del comportamiento del modelo de referencia.
-
Receta DPO completa
La siguiente es una receta completa para el 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
Adaptador DPO de rango bajo
Los parámetros de Amazon Nova que están disponibles para el adaptador DPO de rango bajo son los siguientes:
-
Ejecute la configuración
-
name
: un nombre descriptivo para su trabajo de formación. Esto ayuda a identificar su trabajo en el AWS Management Console. -
model_type
: La variante del modelo Nova que se debe utilizar. Las opciones disponibles sonamazon.nova-micro-v1:0:128k
amazon.nova-lite-v1:0:300k
, oamazon.nova-pro-v1:0:300k
. -
model_name_or_path
: La ruta al modelo base. Seleccione el modelo a utilizarnova-micro/prod
,nova-lite/prod
nova-pro/prod
, o la ruta S3 para el punto de control posterior al entrenamiento ()s3://<escrow bucket>/<job id>/outputs/checkpoints
. -
replicas
: el número de instancias informáticas que se van a utilizar para el entrenamiento distribuido. Los valores disponibles varían en función del modelo elegido. Amazon Nova Micro admite 2, 4 u 8 réplicas. Amazon Nova Lite admite 4, 8, 16 o 32 réplicas. Amazon Nova Pro admite 6, 12 ó 24 réplicas.
-
-
Configuración de entrenamiento
-
max_length
: La longitud máxima de la secuencia en fichas. Esto determina el tamaño de la ventana de contexto para el entrenamiento. El valor máximo admitido es de 32.768 fichas para el DPO.Las secuencias más largas mejorarán la eficiencia del entrenamiento a costa de aumentar los requisitos de memoria. Le recomendamos que haga coincidir el
max_length
parámetro con su distribución de datos.
-
-
Ajustes del entrenador
-
max_epochs
: El número de pasadas completas por tu conjunto de datos de entrenamiento. El valor máximo es 5.En general, los conjuntos de datos más grandes requieren menos épocas para converger, mientras que los conjuntos de datos más pequeños requieren más épocas para converger. Le recomendamos que ajuste el número de épocas en función del tamaño de los datos.
-
-
Ajustes del modelo
-
hidden_dropout
: La probabilidad de eliminar las salidas de estado ocultas. Aumente este valor entre aproximadamente 0,0-0,2 para reducir el sobreajuste en conjuntos de datos más pequeños. Los valores válidos están entre 0 y 1, ambos inclusive. -
attention_dropout
: La probabilidad de perder el peso de la atención. Este parámetro puede ayudar a generalizar. Los valores válidos están comprendidos entre 0 y 1, ambos inclusive. -
ffn_dropout
: La probabilidad de que disminuyan las salidas de la red de retroalimentación. Los valores válidos están entre 0 y 1, ambos inclusive.
-
-
Configuración del optimizador
-
lr
: La tasa de aprendizaje, que controla el tamaño de los pasos durante la optimización. Recomendamos valores entre 1e-6-1e-4 para un buen rendimiento. Los valores válidos están comprendidos entre 0 y 1, ambos inclusive. -
name
: El algoritmo optimizador. En la actualidad, solo se admitedistributed_fused_adam
. -
weight_decay
: La fuerza de regularización L2. Los valores más altos (entre 0,01 y 0,1) aumentan la regularización. -
warmup_steps
: El número de pasos para aumentar gradualmente la tasa de aprendizaje. Esto mejora la estabilidad del entrenamiento. Los valores válidos están entre 1 y 20, ambos inclusive. -
min_lr
: La tasa mínima de aprendizaje al final de la decadencia. Los valores válidos están entre 0 y 1, ambos inclusive, pero deben ser inferiores a la tasa de aprendizaje.
-
-
Configuración de DPO
-
beta
: Determina qué tan cerca debe ajustarse el modelo a los datos de entrenamiento o al modelo original. Los valores válidos están entre 0,001 y 0,5, ambos inclusive.Especifique valores más altos (por ejemplo, 0,5) para conservar una mayor parte del comportamiento del modelo de referencia y, al mismo tiempo, aprender más lentamente las nuevas preferencias. Especifique valores más pequeños (por ejemplo, 0,01-0,05) para aprender más rápidamente las nuevas preferencias con el riesgo de desviarse del comportamiento del modelo de referencia.
-
-
Parámetros de configuración de LoRa
-
peft_scheme
: Se configuralora
para habilitar la adaptación de bajo rango, lo que genera un modelo de salida más eficiente y más pequeño. Estas propiedades específicas de Lora también están disponibles:-
alpha
: El factor de escala de las pesas LoRa. Por lo general, se establece en el mismo valor queadapter_dim
. -
adapter_dropout
: El parámetro de regularización de los parámetros LoRa.
-
-
Receta de LoRa DPO
La siguiente es una receta para 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]
Limitaciones
El DPO tiene las siguientes limitaciones:
-
Los puntos de control intermedios no se guardan para su evaluación y no se pueden reanudar desde un punto de control intermedio. Solo se guarda el último punto de control.
-
MLflow no se admite el registro.
-
Para ajustar los hiperparámetros, siga las instrucciones de la sección Selección de hiperparámetros.