As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Otimização direta de preferências (DPO)
A otimização direta de preferências (DPO) é um método eficiente de ajuste para modelos de base, que usa dados de comparação emparelhados para alinhar as saídas do modelo com preferências humanas. Essa abordagem permite a otimização direta do comportamento do modelo com base no feedback humano sobre quais respostas são mais desejáveis.
Tanto a DPO completa quanto a DPO de adaptador de classe baixa (LoRA) estão disponíveis.
Requisitos de formato de dados
Tanto para o DPO completo quanto para o LoRa, os requisitos de formato de dados de treinamento são semelhantes aos do SFT. No entanto, para o DPO, o turno final precisa ter pares preferenciais. Aqui está um exemplo do formato de dados do 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" } ] }
Aqui está outro exemplo completo de texto do 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" } ] } ], }
Aqui está uma amostra completa da imagem do 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" } ] } ], }
Outras restrições nos conjuntos de dados de entrada se aplicam. Para obter mais informações, consulte Restrições do conjunto de dados. Recomendamos que você inclua no mínimo 1.000 pares de preferências para um treinamento eficaz. Dados de preferências de alta qualidade levam a resultados mais eficientes.
É recomendável usar a DPO nos seguintes cenários:
-
Otimização para resultados subjetivos que exijam alinhamento com preferências humanas específicas.
-
Ajuste do tom, estilo ou características de conteúdo do modelo para atender aos padrões de resposta desejados.
-
Realização de melhorias específicas em um modelo existente com base em feedback dos usuários e análise dos erros.
-
Manutenção de qualidade de saída consistente em diferentes casos de uso.
-
Implementação de barreiras de segurança por meio de padrões de resposta preferenciais.
-
Treinamento com aprendizado por reforço sem recompensa.
-
Uso apenas dados de preferência em vez de dados avaliados ou rotulados.
-
Aprimoramento do modelo em tarefas de alinhamento com nuances, como utilidade, inocuidade ou honestidade.
DPO de alto escalão
Os parâmetros do Amazon Nova que estão disponíveis para DPO completo são os seguintes:
-
Executar configuração
-
name
: Um nome descritivo para seu trabalho de treinamento. Isso ajuda a identificar seu trabalho no AWS Management Console. -
model_type
: A variante do modelo Nova a ser usada. As opções disponíveis sãoamazon.nova-micro-v1:0:128k
,amazon.nova-lite-v1:0:300k
, ouamazon.nova-pro-v1:0:300k
. -
model_name_or_path
: O caminho para o modelo básico. Selecione o modelo a ser usado emnova-micro/prod
,,nova-lite/prod
nova-pro/prod
, ou o caminho S3 para o ponto de verificação pós-treinamento ().s3://<escrow bucket>/<job id>/outputs/checkpoints
-
replicas
: o número de instâncias de computação a serem usadas para treinamento distribuído. Os valores disponíveis variam de acordo com o modelo escolhido. O Amazon Nova Micro oferece suporte a 2, 4 ou 8 réplicas. O Amazon Nova Lite oferece suporte a 4, 8, 16 ou 32 réplicas. O Amazon Nova Pro oferece suporte a 6, 12 ou 24 réplicas. -
data_s3_path
: a localização do conjunto de dados de treinamento no S3, que é um arquivo JSONL. Esse arquivo deve residir na mesma conta e região do cluster. Todos os locais do S3 fornecidos devem estar na mesma conta e região. -
validation_data_s3_path
: a localização do conjunto de dados de validação no S3, que é um arquivo JSONL. Esse arquivo deve residir na mesma Conta da AWS região do cluster. Todos os locais do S3 fornecidos devem estar na mesma conta e região.
-
-
Configuração de treinamento
-
max_length
: o tamanho máximo da sequência em tokens. Isso determina o tamanho da janela de contexto para treinamento. O valor máximo suportado é de 32.768 tokens para DPO.Sequências mais longas melhorarão a eficiência do treinamento ao custo de maiores requisitos de memória. Recomendamos que você combine o
max_length
parâmetro com sua distribuição de dados.
-
-
Configurações do treinador
-
max_epochs
: o número de passagens completas em seu conjunto de dados de treinamento. O valor máximo é 5.Em geral, conjuntos de dados maiores exigem menos épocas para convergir, enquanto conjuntos de dados menores exigem mais épocas para convergir. Recomendamos que você ajuste o número de épocas com base no tamanho dos seus dados.
-
-
Configurações do modelo
-
hidden_dropout
: A probabilidade de descartar saídas de estado oculto. Aumente esse valor em aproximadamente 0,0-0,2 para reduzir o sobreajuste em conjuntos de dados menores. Os valores válidos estão entre 0-1, inclusive. -
attention_dropout
: A probabilidade de perder os pesos de atenção. Esse parâmetro pode ajudar na generalização. Os valores válidos estão entre 0-1, inclusive. -
ffn_dropout
: A probabilidade de perder as saídas da rede de feed-forward. Os valores válidos estão entre 0-1, inclusive.
-
-
Configuração do otimizador
-
lr
: A taxa de aprendizado, que controla o tamanho da etapa durante a otimização. Recomendamos valores entre 1e-6-1e-4 para um bom desempenho. Os valores válidos estão entre 0-1, inclusive. -
name
: O algoritmo otimizador. No momento, só há compatibilidade comdistributed_fused_adam
. -
weight_decay
: A força de regularização de L2. Valores mais altos (entre 0,01-0,1) aumentam a regularização. -
warmup_steps
: O número de etapas para aumentar gradualmente a taxa de aprendizado. Isso melhora a estabilidade do treinamento. Os valores válidos estão entre 1 e 20, inclusive. -
min_lr
: A taxa mínima de aprendizado no final da decadência. Os valores válidos estão entre 0-1, inclusive, mas devem ser menores que a taxa de aprendizado.
-
-
Configuração do DPO
-
beta
: determina até que ponto o modelo deve se ajustar aos dados de treinamento ou ao modelo original. Os valores válidos estão entre 0,001-0,5, inclusive.Especifique valores maiores (por exemplo, 0,5) para preservar mais do comportamento do modelo de referência e, ao mesmo tempo, aprender mais lentamente novas preferências. Especifique valores menores (por exemplo, 0,01-0,05) para aprender mais rapidamente novas preferências com o risco de divergir do comportamento do modelo de referência.
-
Receita completa de DPO
A seguir está uma receita completa para o 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 baixa classificação
Os parâmetros do Amazon Nova que estão disponíveis para o adaptador DPO de baixa classificação são os seguintes:
-
Executar configuração
-
name
: Um nome descritivo para seu trabalho de treinamento. Isso ajuda a identificar seu trabalho no AWS Management Console. -
model_type
: A variante do modelo Nova a ser usada. As opções disponíveis sãoamazon.nova-micro-v1:0:128k
,amazon.nova-lite-v1:0:300k
, ouamazon.nova-pro-v1:0:300k
. -
model_name_or_path
: O caminho para o modelo básico. Selecione o modelo a ser usado emnova-micro/prod
,,nova-lite/prod
nova-pro/prod
, ou o caminho S3 para o ponto de verificação pós-treinamento ().s3://<escrow bucket>/<job id>/outputs/checkpoints
-
replicas
: o número de instâncias de computação a serem usadas para treinamento distribuído. Os valores disponíveis variam de acordo com o modelo escolhido. O Amazon Nova Micro oferece suporte a 2, 4 ou 8 réplicas. O Amazon Nova Lite oferece suporte a 4, 8, 16 ou 32 réplicas. O Amazon Nova Pro oferece suporte a 6, 12 ou 24 réplicas.
-
-
Configuração de treinamento
-
max_length
: o tamanho máximo da sequência em tokens. Isso determina o tamanho da janela de contexto para treinamento. O valor máximo suportado é de 32.768 tokens para DPO.Sequências mais longas melhorarão a eficiência do treinamento ao custo de maiores requisitos de memória. Recomendamos que você combine o
max_length
parâmetro com sua distribuição de dados.
-
-
Configurações do treinador
-
max_epochs
: o número de passagens completas em seu conjunto de dados de treinamento. O valor máximo é 5.Em geral, conjuntos de dados maiores exigem menos épocas para convergir, enquanto conjuntos de dados menores exigem mais épocas para convergir. Recomendamos que você ajuste o número de épocas com base no tamanho dos seus dados.
-
-
Configurações do modelo
-
hidden_dropout
: A probabilidade de descartar saídas de estado oculto. Aumente esse valor em aproximadamente 0,0-0,2 para reduzir o sobreajuste em conjuntos de dados menores. Os valores válidos estão entre 0-1, inclusive. -
attention_dropout
: A probabilidade de perder os pesos de atenção. Esse parâmetro pode ajudar na generalização. Os valores válidos estão entre 0-1, inclusive. -
ffn_dropout
: A probabilidade de perder as saídas da rede de feed-forward. Os valores válidos estão entre 0-1, inclusive.
-
-
Configuração do otimizador
-
lr
: A taxa de aprendizado, que controla o tamanho da etapa durante a otimização. Recomendamos valores entre 1e-6-1e-4 para um bom desempenho. Os valores válidos estão entre 0-1, inclusive. -
name
: O algoritmo otimizador. No momento, só há compatibilidade comdistributed_fused_adam
. -
weight_decay
: A força de regularização de L2. Valores mais altos (entre 0,01-0,1) aumentam a regularização. -
warmup_steps
: O número de etapas para aumentar gradualmente a taxa de aprendizado. Isso melhora a estabilidade do treinamento. Os valores válidos estão entre 1 e 20, inclusive. -
min_lr
: A taxa mínima de aprendizado no final da decadência. Os valores válidos estão entre 0-1, inclusive, mas devem ser menores que a taxa de aprendizado.
-
-
Configuração do DPO
-
beta
: determina até que ponto o modelo deve se ajustar aos dados de treinamento ou ao modelo original. Os valores válidos estão entre 0,001-0,5, inclusive.Especifique valores maiores (por exemplo, 0,5) para preservar mais do comportamento do modelo de referência e, ao mesmo tempo, aprender mais lentamente novas preferências. Especifique valores menores (por exemplo, 0,01-0,05) para aprender mais rapidamente novas preferências com o risco de divergir do comportamento do modelo de referência.
-
-
Parâmetros de configuração LoRa
-
peft_scheme
: Defina comolora
para ativar a adaptação de baixa classificação, o que gera um modelo de saída menor e mais eficiente. Essas propriedades específicas de Lora também estão disponíveis:-
alpha
: O fator de escala para pesos LoRa. Normalmente, isso é definido com o mesmo valor deadapter_dim
. -
adapter_dropout
: O parâmetro de regularização para os parâmetros LoRa.
-
-
Receita LoRa DPO
A seguir está uma receita para o 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]
Limitações
O DPO tem as seguintes limitações:
-
Os pontos de verificação intermediários não são salvos para avaliação e você não pode retomar a partir de um ponto de verificação intermediário. Somente o último ponto de verificação é salvo.
-
MLflow o registro não é suportado.
-
Para ajustar os hiperparâmetros, siga as orientações em Seleção de hiperparâmetros.