Entraîner avec PPO

Reinforcement Learning from Human Feedback (RLHF)

Mina Parham

AI Engineer

Ajustement fin par apprentissage par renforcement

Le LLM initial et le modèle de récompense dans le processus RLHF.

Reinforcement Learning from Human Feedback (RLHF)

Ajustement fin par apprentissage par renforcement

Le processus RLHF au complet.

Reinforcement Learning from Human Feedback (RLHF)

Ajuster finement un modèle de langue avec PPO

 

Schéma : une requête donnée à un LLM qui génère une suite.

Reinforcement Learning from Human Feedback (RLHF)

Ajuster finement un modèle de langue avec PPO

 

Schéma : une requête à un LLM, qui la complète : « we're half way there, oh livin' on a prayer ».

Reinforcement Learning from Human Feedback (RLHF)

Ajuster finement un modèle de langue avec PPO

 

Schéma : une requête à un LLM, qui la complète : « we're half way there, oh livin' on a prayer », puis un autre LLM évalue la complétion.

Reinforcement Learning from Human Feedback (RLHF)

Ajuster finement un modèle de langue avec PPO

  • PPO : ajustements progressifs du modèle
  • Évite le surapprentissage au retour

Un robot et un escargot illustrant l'amélioration graduelle de l'algorithme.

Reinforcement Learning from Human Feedback (RLHF)

Mettre en œuvre PPOTrainer avec TRL

from trl import PPOConfig
config = PPOConfig(model_name="gpt2",learning_rate=1.4e-5)
from trl import AutoModelForCausalLMWithValueHead
model = AutoModelForCausalLMWithValueHead.from_pretrained(config.model_name)
tokenizer = AutoTokenizer.from_pretrained(config.model_name)
from trl import PPOTrainer
ppo_trainer = PPOTrainer(model=model,config=config,dataset=dataset,
                         tokenizer=tokenizer)
Reinforcement Learning from Human Feedback (RLHF)

Démarrer la boucle d'entraînement

for epoch in tqdm(range(10), "epoch: "):


for batch in tqdm(ppo_trainer.dataloader):
# Get responses response_tensors = ppo_trainer.generate(batch["input_ids"])
batch["response"] = [tokenizer.decode(r.squeeze()) for r in response_tensors]
# Compute reward score texts = [q + r for q, r in zip(batch["query"], batch["response"])]
rewards = reward_model(texts)
stats = ppo_trainer.step(query_tensors, response_tensors, rewards) ppo_trainer.log_stats(stats, batch, rewards)
Reinforcement Learning from Human Feedback (RLHF)

Passons à la pratique !

Reinforcement Learning from Human Feedback (RLHF)

Preparing Video For Download...