TRL (Transformer Reinforcement Learning) es una biblioteca de vanguardia desarrollada por HuggingFace, especializada en el post-entrenamiento de modelos base utilizando tecnologías avanzadas. La biblioteca está diseñada para el post-entrenamiento de modelos base utilizando técnicas avanzadas como el ajuste fino supervisado (SFT), la optimización de políticas proximales (PPO) y la optimización directa de preferencias (DPO).
TRL ofrece una variedad de entrenadores de fácil acceso:
Proporciona una interfaz CLI sencilla para el ajuste fino de modelos sin necesidad de escribir código.
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()
El algoritmo GRPO ahorra más memoria que PPO y se utilizó para entrenar el modelo R1 de Deepseek AI:
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 es un algoritmo popular que se ha utilizado para el post-entrenamiento de modelos como Llama 3:
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 es una biblioteca potente y fácil de usar que proporciona a investigadores y desarrolladores un conjunto de herramientas completo para entrenar y optimizar modelos de lenguaje grandes. Combina las últimas técnicas de aprendizaje por refuerzo con las ventajas del ecosistema HuggingFace, haciendo que el entrenamiento de modelos de alta calidad sea más accesible y eficiente. Ya sea para investigación académica o aplicaciones industriales, TRL es la opción ideal para el post-entrenamiento de modelos Transformer.