Optimización de preferencias directas (DPO) - Amazon Nova

Optimización de preferencias directas (DPO)

Descripción general

La optimización de preferencias directas (DPO) es una técnica de adaptación que refina los modelos fundacionales usando datos de comparación emparejados para adaptar los resultados del modelo a las preferencias humanas. A diferencia de los métodos de aprendizaje por refuerzo, la DPO optimiza directamente el comportamiento del modelo en función de la valoración humana sobre cuáles son las respuestas más deseables, ofreciendo un enfoque más estable y escalable.

¿Por qué usar la DPO?

Los modelos fundacionales pueden generar resultados correctos desde el punto de vista fáctico, pero que no se ajustan a las necesidades específicas de los usuarios, los valores de las organizaciones o los requisitos de seguridad. La DPO aborda este problema permitiéndole lo siguiente:

  • Refubar los modelos en función de los patrones de comportamiento deseados.

  • Reducir los resultados no deseados o dañinos.

  • Adaptar las respuestas del modelo a la voz y a las pautas de comunicación de la marca.

  • Mejorar la calidad de la respuesta en función de los comentarios de los expertos del sector.

  • Implementar barreras de protección por medio de los patrones de respuesta preferidos.

Cómo funciona la DPO

La DPO utiliza ejemplos pareados en los que los evaluadores humanos indican cuál de las dos posibles respuestas es la preferida. El modelo aprende a maximizar la probabilidad de generar respuestas preferidas mientras minimiza las no deseadas.

¿Cuándo utilizar la DPO?

Utilice la DPO en las situaciones siguientes:

  • Optimización para obtener resultados subjetivos que exigen una adaptación a preferencias humanas específicas.

  • Modificación del tono, el estilo o las características del contenido del modelo.

  • Realización de mejoras específicas en función de los comentarios de los usuarios y el análisis de errores.

  • Mantenimiento de una calidad de salida constante en diferentes casos de uso.

  • Entrenamiento con aprendizaje por refuerzo sin recompensas utilizando solo datos de preferencias.

Modelos y técnicas compatibles

La DPO admite el refinamiento de parámetros completos y LoRA (adaptación de rango bajo):

Modelo Entradas admitidas Tipo de instancia Recuento de instancia recomendado Recuento de instancias permitido
Amazon Nova Micro Texto ml.p5.48xlarge 2 2, 4, 8
Amazon Nova Lite Texto, imagen ml.p5.48xlarge 4 2, 4, 8, 16
Amazon Nova Pro Texto, imagen ml.p5.48xlarge 6 6, 12, 24

Estrategias de entrenamiento

  • DPO de rango completo: actualiza todos los parámetros del modelo. Puede llegar a ofrecer una mejor calidad de adaptación, pero requiere más recursos computacionales y produce modelos más grandes.

  • DPO de LoRA: utiliza adaptadores ligeros para un refinamiento eficiente de los parámetros. Ofrece un entrenamiento y una implementación más eficientes con modelos resultantes más pequeños que, a su vez, se adaptan a todos los requisitos.

Para la mayoría de los casos de uso, la estrategia LoRA proporciona una capacidad de adaptación suficiente con una eficiencia significativamente mejorada.

Formato de los datos

Los datos de entrenamiento de la DPO siguen el mismo formato que los del SFT, excepto que el último turno del asistente debe contener combinaciones de preferencias con etiquetas preferred y non-preferred.

Estructura básica

El último turno del asistente usa una matriz de candidates en lugar 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" } ] }

Ejemplo de texto completo

{ "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" } ] } ] }

Ejemplo con imágenes

{ "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" } ] } ] }

Requisitos de los conjuntos de datos

  • Formato: archivo JSONL único para el entrenamiento, archivo JSONL único para la validación (opcional).

  • Tamaño mínimo: se recomiendan 1000 pares de preferencias para un entrenamiento efectivo.

  • Calidad: los datos de preferencias de alta calidad producen resultados más efectivos.

  • Otras restricciones: igual que el SFT. Para obtener más información, consulte Restricciones del conjunto de datos.

Subir datos

aws s3 cp /path/to/training-data/ s3://your-bucket/train/ --recursive aws s3 cp /path/to/validation-data/ s3://your-bucket/val/ --recursive

Configuración de fórmulas

Configuración general de ejecución

run: name: "my-dpo-run" model_type: "amazon.nova-lite-v1:0:300k" model_name_or_path: "nova-lite/prod" replicas: 4
Parámetro Descripción
name Nombre descriptivo para su trabajo de entrenamiento.
model_type Variante del modelo de Nova (no modificar)
model_name_or_path Ruta del modelo base (no modificar)
replicas Número de instancias de computación que se van a utilizar para el entrenamiento distribuido.

Configuración de entrenamiento

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
Parámetro Descripción Range
max_length Longitud máxima de la secuencia en tokens 1024–32768
global_batch_size Muestras por paso del optimizador Micro/Lite/Pro: 16, 32, 64, 128 Micro/Lite: 256
max_epochs Ciclos de entrenamiento sobre el conjunto de datos Mín.: 1
hidden_dropout Desactivación aleatoria en los estados ocultos 0,0-1,0
attention_dropout Desactivación aleatoria en las ponderaciones de atención 0,0-1,0
ffn_dropout Desactivación aleatoria en las capas de propagación hacia delante 0,0-1,0

Configuración del optimizador

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
Parámetro Descripción Range
lr Tasa de aprendizaje 0-1 (normalmente de 1e-6 a 1e-4)
weight_decay Fuerza de regularización L2 0,0-1,0
warmup_steps Pasos para aumentar gradualmente el ritmo de aprendizaje 0–20
min_lr Tasa mínima de aprendizaje al final de la degradación 0-1 (debe ser < lr)

Configuración específica de la DPO

model: dpo_cfg: beta: 0.1
Parámetro Descripción Range
beta Equilibrio entre el ajuste a los datos de entrenamiento y la proximidad al modelo original 0,001–0,5
  • Beta superior (0,1): conserva mejor el comportamiento del modelo de referencia, pero puede aprender las preferencias más lentamente.

  • Beta inferior (0,01-0,05): aprendizaje preferencial más agresivo, pero corre el riesgo de desviarse de la referencia.

Recomendación: comience con beta: 0.1 y ajústelo a la baja si el aprendizaje preferencial le parece insuficiente.

Configuración del PEFT LoRA

model: peft: peft_scheme: "lora" lora_tuning: loraplus_lr_ratio: 64.0 alpha: 32 adapter_dropout: 0.01
Parámetro Descripción Valores permitidos
peft_scheme Método de refinamiento "lora" o null (rango completo)
alpha Factor de escalado para ponderaciones de LoRA 32, 64, 96, 128, 160, 192
loraplus_lr_ratio Factor de escalado del ritmo de aprendizaje de LoRA+ 0,0-100,0
adapter_dropout Regularización de los parámetros de LoRA 0,0-1,0

Inicio de un trabajo de entrenamiento

Imagen de contenedor

708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-TJ-DPO-latest

Código de ejemplo

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)

Implementación del modelo

Una vez finalizado el entrenamiento, implemente el modelo personalizado en Amazon Bedrock mediante la función de importación de modelos personalizados. El modelo admite tanto el rendimiento aprovisionado como la inferencia bajo demanda. Los modelos entrenados con LoRA admiten la inferencia bajo demanda.

Para obtener instrucciones de implementación, consulte Implementación de modelos personalizados.

Limitaciones

  • Modalidades de entrada: la DPO solo acepta texto e imágenes. No se admite la entrada de video.

  • Modalidad de salida: solo texto.

  • Pares de preferencias: el turno final del asistente debe contener exactamente dos candidatos con etiquetas preferred y non-preferred.

  • Límite de imágenes: máximo 10 imágenes por bloque de contenido.

  • Modalidades mixtas: no se puede combinar texto, imagen y video en el mismo trabajo de entrenamiento.