Trénování s PPO

Reinforcement Learning from Human Feedback (RLHF)

Mina Parham

AI Engineer

Doladění pomocí zpětnovazebního učení

Výchozí LLM a model odměn v procesu RLHF.

Reinforcement Learning from Human Feedback (RLHF)

Doladění pomocí zpětnovazebního učení

Úplný proces RLHF.

Reinforcement Learning from Human Feedback (RLHF)

Doladění jazykového modelu pomocí PPO

 

Diagram dotazu předaného LLM pro generování navazujícího textu.

Reinforcement Learning from Human Feedback (RLHF)

Doladění jazykového modelu pomocí PPO

 

Diagram dotazu předaného LLM, který dokončuje text: 'we're half way there, oh livin' on a prayer'.

Reinforcement Learning from Human Feedback (RLHF)

Doladění jazykového modelu pomocí PPO

 

Diagram dotazu předaného LLM, který dokončuje text: 'we're half way there, oh livin' on a prayer', přičemž jiný LLM hodnotí toto dokončení.

Reinforcement Learning from Human Feedback (RLHF)

Doladění jazykového modelu pomocí PPO

  • PPO: postupná úprava modelu
  • Zamezuje přeučení na zpětnou vazbu

Robot a šnek znázorňující pomalé zlepšování algoritmu.

Reinforcement Learning from Human Feedback (RLHF)

Implementace PPOTrainer pomocí 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)

Spuštění trénovací smyčky

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)

Pojďme si procvičit!

Reinforcement Learning from Human Feedback (RLHF)

Preparing Video For Download...