TRL (Transformer Reinforcement Learning) ist eine hochmoderne Bibliothek, die von HuggingFace entwickelt wurde und sich auf das Nachtrainieren von Basismodellen mit fortschrittlichen Technologien spezialisiert hat. Die Bibliothek ist für das Nachtrainieren von Basismodellen konzipiert und verwendet fortschrittliche Techniken wie überwachtes Feintuning (SFT), Proximal Policy Optimization (PPO) und Direct Preference Optimization (DPO).
TRL bietet eine Vielzahl leicht zugänglicher Trainer:
Bietet eine einfache CLI-Schnittstelle, um Modelle ohne Programmierung zu verfeinern.
from trl import SFTTrainer
from datasets import load_dataset
dataset = load_dataset("trl-lib/Capybara", split="train")
trainer = SFTTrainer(
model="Qwen/Qwen2.5-0.5B",
train_dataset=dataset,
)
trainer.train()
Der GRPO-Algorithmus ist speichereffizienter als PPO und wurde zum Trainieren des R1-Modells von Deepseek AI verwendet:
from datasets import load_dataset
from trl import GRPOTrainer
dataset = load_dataset("trl-lib/tldr", split="train")
def reward_num_unique_chars(completions, **kwargs):
return [len(set(c)) for c in completions]
trainer = GRPOTrainer(
model="Qwen/Qwen2-0.5B-Instruct",
reward_funcs=reward_num_unique_chars,
train_dataset=dataset,
)
trainer.train()
DPO ist ein beliebter Algorithmus, der zum Nachtrainieren von Modellen wie Llama 3 verwendet wurde:
from datasets import load_dataset
from transformers import AutoModelForCausalLM, AutoTokenizer
from trl import DPOConfig, DPOTrainer
model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen2.5-0.5B-Instruct")
tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen2.5-0.5B-Instruct")
dataset = load_dataset("trl-lib/ultrafeedback_binarized", split="train")
training_args = DPOConfig(output_dir="Qwen2.5-0.5B-DPO")
trainer = DPOTrainer(
model=model,
args=training_args,
train_dataset=dataset,
processing_class=tokenizer
)
trainer.train()
from trl import RewardConfig, RewardTrainer
from datasets import load_dataset
from transformers import AutoModelForSequenceClassification, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen2.5-0.5B-Instruct")
model = AutoModelForSequenceClassification.from_pretrained(
"Qwen/Qwen2.5-0.5B-Instruct", num_labels=1
)
dataset = load_dataset("trl-lib/ultrafeedback_binarized", split="train")
training_args = RewardConfig(output_dir="Qwen2.5-0.5B-Reward")
trainer = RewardTrainer(
args=training_args,
model=model,
processing_class=tokenizer,
train_dataset=dataset,
)
trainer.train()
pip install trl
pip install git+https://github.com/huggingface/trl.git
git clone https://github.com/huggingface/trl.git
cd trl/
pip install -e .[dev]
trl sft --model_name_or_path Qwen/Qwen2.5-0.5B \
--dataset_name trl-lib/Capybara \
--output_dir Qwen2.5-0.5B-SFT
trl dpo --model_name_or_path Qwen/Qwen2.5-0.5B-Instruct \
--dataset_name argilla/Capybara-Preferences \
--output_dir Qwen2.5-0.5B-DPO
TRL ist eine leistungsstarke und einfach zu bedienende Bibliothek, die Forschern und Entwicklern ein komplettes Toolkit zum Trainieren und Optimieren großer Sprachmodelle bietet. Sie kombiniert die neuesten Reinforcement-Learning-Technologien und die Vorteile des HuggingFace-Ökosystems, wodurch das Training hochwertiger Modelle zugänglicher und effizienter wird. Ob akademische Forschung oder industrielle Anwendung, TRL ist die ideale Wahl für das Nachtrainieren von Transformer-Modellen.