View a markdown version of this page

Otimização direta de preferências (DPO) - Amazon Nova

Otimização direta de preferências (DPO)

Visão geral

A otimização direta de preferências (DPO) é uma técnica de alinhamento que ajusta modelos de base usando dados de comparação emparelhados para alinhar as saídas do modelo com as preferências humanas. Ao contrário dos métodos de aprendizado por reforço, a DPO otimiza diretamente o comportamento dos modelos com base no feedback humano sobre quais são as respostas mais desejáveis, oferecendo uma abordagem mais estável e escalável.

Por que usar a DPO

Os modelos de base podem gerar resultados que estão factualmente corretos, mas que não estão alinhados com as necessidades específicas do usuário, com os valores organizacionais ou com os requisitos de segurança. A DPO resolve essa questão permitindo que você:

  • Ajuste os modelos de acordo com os padrões de comportamento desejados

  • Reduza as saídas indesejadas ou prejudiciais

  • Alinhe as respostas do modelo com as diretrizes de voz e comunicação da marca

  • Melhore a qualidade das respostas com base no feedback de especialistas no domínio

  • Implemente barreiras de proteção por meio de padrões de resposta preferenciais

Como a DPO funciona

A DPO usa exemplos pareados nos quais avaliadores humanos indicam qual de duas respostas possíveis é a resposta preferida. O modelo aprende a maximizar a probabilidade de gerar respostas preferidas enquanto minimiza as respostas indesejadas.

Quando usar a DPO

Use a DPO nos seguintes cenários:

  • Otimização para saídas subjetivas que exijam alinhamento com preferências humanas específicas

  • Ajuste do tom, do estilo ou das características de conteúdo do modelo

  • Realização de melhorias específicas com base nos feedbacks dos usuários e na análise dos erros.

  • Manutenção da qualidade consistente das saídas em diferentes casos de uso

  • Treinamento com aprendizado por reforço sem recompensa usando apenas dados preferenciais

Modelos e técnicas compatíveis

O DPO oferece suporte ao ajuste fino de parâmetros completos e à LoRA (adaptação low-rank):

Modelo Entradas compatíveis Tipo de instância Contagem de instâncias recomendada Contagem de instâncias permitidas
Amazon Nova Micro Texto ml.p5.48xlarge 2 2, 4, 8
Amazon Nova Lite Texto, imagem ml.p5.48xlarge 4 2, 4, 8, 16
Amazon Nova Pro Texto, imagem ml.p5.48xlarge 6 6, 12, 24

Abordagens de treinamento

  • DPO full-rank: atualiza todos os parâmetros dos modelos. Potencialmente entrega uma melhor qualidade de alinhamento, mas requer mais recursos computacionais e gera modelos maiores.

  • DPO LoRA: usa adaptadores leves para um ajuste fino com eficiência de parâmetros. Oferece treinamento e implantação mais eficientes com modelos de saída menores, mantendo uma boa qualidade de alinhamento.

Para a maioria dos casos de uso, a abordagem LoRA fornece capacidade de adaptação suficiente com eficiência significativamente superior.

Formato de dados

Os dados de treinamento da DPO seguem o mesmo formato do SFT, exceto que o último turno do assistente deve conter pares de preferências com preferred e rótulos non-preferred.

Estrutura básica

O turno final do assistente usa uma matriz candidates em vez 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" } ] }

Concluir o texto de exemplo

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

Exemplo com imagens

{ "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 conjunto de dados

  • Formato: arquivo JSONL único para treinamento, arquivo JSONL único para validação (opcional)

  • Tamanho mínimo: são recomendados 1.000 pares de preferências para um treinamento eficaz

  • Qualidade: dados de preferência de alta qualidade geram resultados mais eficazes

  • Outras restrições: as mesmas do SFT. Para ter mais informações, consulte Restrições de conjuntos de dados.

Upload dos dados

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

Configuração de fórmula

Configuração geral de execução

run: name: "my-dpo-run" model_type: "amazon.nova-lite-v1:0:300k" model_name_or_path: "nova-lite/prod" replicas: 4
Parameter Descrição
name Um nome descritivo para sua tarefa de treinamento.
model_type Variante do modelo Nova (não modificar)
model_name_or_path Caminho do modelo de base (não modificar)
replicas O número de instâncias de computação para treinamento distribuído

Configuração do treinamento

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
Parameter Descrição Intervalo
max_length O tamanho máximo da sequência em tokens 1024–32768
global_batch_size Amostras por etapa do otimizador Micro/Lite/Pro: 16, 32, 64, 128. Micro/Lite: 256
max_epochs O treinamento passa pelo conjunto de dados Mín.: 1
hidden_dropout Dropout nos estados ocultos 0, 0 a 1,0
attention_dropout Dropout nos pesos de atenção 0, 0 a 1,0
ffn_dropout Dropout em camadas de alimentação direta 0, 0 a 1,0

Configuração do otimizador

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
Parameter Descrição Intervalo
lr Taxa de aprendizado 0–1 (normalmente 1e-6 a 1e-4)
weight_decay Força de regularização de L2 0, 0 a 1,0
warmup_steps Etapas para aumentar gradualmente a taxa de aprendizado 0 a 20
min_lr Taxa mínima de aprendizado no final do decaimento 0–1 (deve ser < Ir)

Configuração específica da DPO

model: dpo_cfg: beta: 0.1
Parameter Descrição Intervalo
beta Equilíbrio entre ajustar os dados de treinamento e permanecer próximo ao modelo original 0,001–0,5
  • Beta superior (0,1): preserva mais o comportamento do modelo de referência, mas pode aprender as preferências mais lentamente.

  • Beta inferior (0,01–0,05): aprendizado preferencial mais agressiva, mas corre o risco de divergência da referência.

Recomendação: comece com beta: 0.1 e ajuste para baixo se o aprendizado preferencial parecer insuficiente.

Configuração PEFT LoRA

model: peft: peft_scheme: "lora" lora_tuning: loraplus_lr_ratio: 64.0 alpha: 32 adapter_dropout: 0.01
Parameter Descrição Valores permitidos
peft_scheme Método de ajuste fino "lora" ou null (full-rank)
alpha Fator de escala para os pesos LoRA 32, 64, 96, 128, 160, 192
loraplus_lr_ratio Fator de escala da taxa de aprendizado LoRA+ 0,0–100,0
adapter_dropout Regularização para parâmetros de LoRA. 0, 0 a 1,0

Início de uma tarefa de treinamento

Imagem de contêiner

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

Código de exemplo

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)

Implantação do modelo

Após a conclusão do treinamento, implante o modelo personalizado no Amazon Bedrock usando a funcionalidade de importação de modelos personalizados. O modelo é compatível tanto com o throughput provisionado quanto com a inferência sob demanda. Modelos treinados pela LoRA são compatíveis com a inferência sob demanda.

Para obter instruções de implantação, consulte Implantação de modelos personalizados.

Limitações

  • Modalidades de entrada: a DPO aceita somente texto e imagens. A entrada de vídeo não é compatível.

  • Modalidade de saída: somente texto

  • Pares de preferências: o turno final de assistente deve conter exatamente dois candidatos com os rótulos preferred e non-preferred.

  • Limite de imagens: máximo de dez imagens por bloco de conteúdo

  • Modalidades mistas: não é possível combinar texto, imagem e vídeo na mesma tarefa de treinamento.