Treinamento ORPO
ORPO combina SFT e otimização de preferências em uma única fase de treinamento.
O que é ORPO?
ORPO (Odds Ratio Preference Optimization) é uma alternativa mais simples ao DPO que não requer um modelo de referência. Ele otimiza preferências usando razões de chances diretamente, reduzindo o uso de memória e a complexidade do treinamento.
Início Rápido
aitraining llm --train \
--model google/gemma-2-2b \
--data-path ./preferences.jsonl \
--project-name gemma-orpo \
--trainer orpo \
--prompt-text-column prompt \
--text-column chosen \
--rejected-text-column rejected \
--peft
ORPO requer --prompt-text-column e --rejected-text-column. O --text-column tem padrão "text", então especifique apenas se sua coluna escolhida tiver um nome diferente.
Python API
from autotrain.trainers.clm.params import LLMTrainingParams
from autotrain.project import AutoTrainProject
params = LLMTrainingParams(
model="google/gemma-2-2b",
data_path="./preferences.jsonl",
project_name="gemma-orpo",
trainer="orpo",
prompt_text_column="prompt",
text_column="chosen",
rejected_text_column="rejected",
dpo_beta=0.1, # Default: 0.1
max_prompt_length=128, # Default: 128
max_completion_length=None, # Default: None
epochs=3,
batch_size=2,
lr=5e-5,
peft=True,
lora_r=16,
)
project = AutoTrainProject(params=params, backend="local", process=True)
project.create()
O mesmo que DPO - pares de preferência:
{
"prompt": "What is AI?",
"chosen": "AI is artificial intelligence, a field of computer science focused on creating systems that can perform tasks requiring human intelligence.",
"rejected": "AI is just robots."
}
ORPO vs DPO
| Aspecto | ORPO | DPO |
|---|
| Modelo de referência | Não necessário | Não necessário com PEFT, obrigatório para fine-tuning completo |
| Uso de memória | Menor | Maior (se usar modelo de referência) |
| Velocidade de treinamento | Mais rápido | Mais lento |
| Fase SFT | Combinada | Separada |
| Complexidade | Mais simples | Mais opções |
Parâmetros
| Parâmetro | Descrição | Padrão |
|---|
trainer | Definir como "orpo" | Obrigatório |
dpo_beta | Peso da razão de chances | 0.1 |
max_prompt_length | Máximo de tokens do prompt | 128 |
max_completion_length | Máximo de tokens da resposta | None |
Quando Usar ORPO
Escolha ORPO quando:
- Memória é limitada (nenhum modelo de referência necessário)
- Você quer SFT + alinhamento combinado
- Pipeline de treinamento mais simples é preferido
- Começando de um modelo base (não ajustado para instruções)
Escolha DPO quando:
- Você precisa de controle fino
- Trabalhando com modelos já ajustados para instruções
- Comportamento do modelo de referência é importante
Exemplo: Suporte ao Cliente
params = LLMTrainingParams(
model="google/gemma-2-2b",
data_path="./support_preferences.jsonl",
project_name="support-bot",
trainer="orpo",
dpo_beta=0.15,
epochs=3,
batch_size=2,
gradient_accumulation=4,
lr=2e-5,
peft=True,
lora_r=32,
lora_alpha=64,
log="wandb",
)
Próximos Passos