🏆Entraînement d'optimisation des préférences - DPO, ORPO & KTO
Apprenez l'alignement des préférences par ajustement avec DPO, GRPO, ORPO ou KTO via Unsloth, suivez les étapes ci-dessous :
Code DPO
python
import os
os.environ["CUDA_VISIBLE_DEVICES"] = "0" # Optionnel : définir l'ID du périphérique GPU
from unsloth import FastLanguageModel, PatchDPOTrainer
from transformers import TrainingArguments,Trainer,DataCollatorForSeq2Seq
PatchDPOTrainer()
import torch
from transformers import TrainingArguments
from trl import DPOTrainer
model, tokenizer = FastLanguageModel.from_pretrained(
model_name = "unsloth/zephyr-sft-bnb-4bit",
max_seq_length = max_seq_length,
dtype = None,
load_in_4bit = True,
)
# Effectuer le patching du modèle et ajouter des poids LoRA rapides
model = FastLanguageModel.get_peft_model(
model,
r = 64,
target_modules = ["q_proj", "k_proj", "v_proj", "o_proj",
"gate_proj", "up_proj", "down_proj",],
lora_alpha = 64,
lora_dropout = 0, # Prend en charge n'importe quelle valeur, mais = 0 est optimisé
bias = "none", # Prend en charge n'importe quelle valeur, mais = "none" est optimisé
# [NOUVEAU] "unsloth" utilise 30 % de VRAM en moins, permet des tailles de batch 2x plus grandes !
use_gradient_checkpointing = "unsloth", # True or "unsloth" pour des contextes très longs
random_state = 3407,
max_seq_length = max_seq_length,
)
dpo_trainer = DPOTrainer(
trainer = Trainer(
ref_model = None,
train_dataset = dataset,
per_device_train_batch_size = 4,
gradient_accumulation_steps = 8,
warmup_ratio = 0.1,
num_train_epochs = 3,
learning_rate = 2e-4,
fp16 = not is_bfloat16_supported(),
bf16 = is_bfloat16_supported(),
optim = "adamw_8bit",
seed = 42,
output_dir = "outputs",
),
beta = 0.1,
train_dataset = YOUR_DATASET_HERE,
# eval_dataset = YOUR_DATASET_HERE,
tokenizer = tokenizer,
max_length = 1024,
max_prompt_length = 512,
)
dpo_trainer.train()Mis à jour
Ce contenu vous a-t-il été utile ?

