Antrenament cu PPO

Reinforcement Learning from Human Feedback (RLHF)

Mina Parham

AI Engineer

Ajustare fină cu învățare prin întărire

LLM-ul inițial și modelul de recompensă în procesul RLHF.

Reinforcement Learning from Human Feedback (RLHF)

Ajustare fină cu învățare prin întărire

Procesul complet RLHF.

Reinforcement Learning from Human Feedback (RLHF)

Ajustarea unui model de limbaj cu PPO

 

Diagramă a unui query trimis unui LLM pentru a genera o continuare.

Reinforcement Learning from Human Feedback (RLHF)

Ajustarea unui model de limbaj cu PPO

 

Diagramă a unui query trimis unui LLM, care completează: 'we're half way there, oh livin' on a prayer'.

Reinforcement Learning from Human Feedback (RLHF)

Ajustarea unui model de limbaj cu PPO

 

Diagramă a unui query trimis unui LLM, care completează: 'we're half way there, oh livin' on a prayer', cu un alt LLM care evaluează completarea.

Reinforcement Learning from Human Feedback (RLHF)

Ajustarea unui model de limbaj cu PPO

  • PPO: ajustare graduală a modelului
  • Evită supraadaptarea la feedback

Un robot și un melc reprezentând îmbunătățirea lentă a algoritmului.

Reinforcement Learning from Human Feedback (RLHF)

Implementarea PPOTrainer cu 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)

Pornirea buclei de antrenament

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)

Să exersăm!

Reinforcement Learning from Human Feedback (RLHF)

Preparing Video For Download...