Träning med PPO

Reinforcement Learning from Human Feedback (RLHF)

Mina Parham

AI Engineer

Finjustering med förstärkningsinlärning

Den initiala LLM:en och belöningsmodellen i RLHF-processen.

Reinforcement Learning from Human Feedback (RLHF)

Finjustering med förstärkningsinlärning

Den fullständiga RLHF-processen.

Reinforcement Learning from Human Feedback (RLHF)

Finjustering av en språkmodell med PPO

 

Ett diagram över en fråga som skickas till en LLM för att generera en fortsättning.

Reinforcement Learning from Human Feedback (RLHF)

Finjustering av en språkmodell med PPO

 

Ett diagram över en fråga till en LLM som genererar fortsättningen: "we're half way there, oh livin' on a prayer".

Reinforcement Learning from Human Feedback (RLHF)

Finjustering av en språkmodell med PPO

 

Ett diagram över en fråga till en LLM som genererar fortsättningen: "we're half way there, oh livin' on a prayer", med en annan LLM som utvärderar resultatet.

Reinforcement Learning from Human Feedback (RLHF)

Finjustering av en språkmodell med PPO

  • PPO: gradvis justering av modellen
  • Undviker överanpassning till feedback

En robot och en snigel som symboliserar algoritmens långsamma förbättring.

Reinforcement Learning from Human Feedback (RLHF)

Implementera PPOTrainer med 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)

Starta träningsloopen

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)

Nu kör vi en övning!

Reinforcement Learning from Human Feedback (RLHF)

Preparing Video For Download...