إنتقل إلى المحتوى الرئيسي

الفصل 2: TRL و SFTTrainer

تبسيط التدريب لنماذج LLM​

يوفر TRL (تعلم التعزيز للمحول) مدربين متخصصين للتدريب الدقيق.


أساسيات SFTTrainer​

from trl import SFTTrainer
from transformers import TrainingArguments

training_args = TrainingArguments(
output_dir="./output",
num_train_epochs=3,
per_device_train_batch_size=4,
gradient_accumulation_steps=4,
learning_rate=2e-4,
bf16=True,
gradient_checkpointing=True,
logging_steps=10,
save_strategy="epoch",
)

trainer = SFTTrainer(
model=model,
args=training_args,
train_dataset=dataset,
tokenizer=tokenizer,
dataset_text_field="text", # or use formatting_func
max_seq_length=512,
packing=False,
)

trainer.train()

تنسيق مجموعة البيانات​

الخيار 1: حقل النص​

# Dataset has "text" column
trainer = SFTTrainer(
dataset_text_field="text",
...
)

الخيار 2: وظيفة التنسيق​

def formatting_func(example):
return f"### Instruction:\n{example['instruction']}\n\n### Response:\n{example['response']}"

trainer = SFTTrainer(
formatting_func=formatting_func,
...
)

المعلمات الهامة​

المعلمةالغرضالقيمة النموذجية
max_seq_lengthالحد الأقصى لطول التسلسل512-2048
packingحزم أمثلة متعددةFalse (أبسط)
dataset_num_procعمال المعالجة المسبقة4-8

الاستدعاءات وتسجيل الأحداث​

from transformers import EarlyStoppingCallback

trainer = SFTTrainer(
callbacks=[EarlyStoppingCallback(early_stopping_patience=3)],
...
)

# For W&B logging
training_args = TrainingArguments(
report_to="wandb",
...
)

الانتقال إلى الفصل 3 →