From 43242b41aa7a821ccb8764f7c0586e162426c02a Mon Sep 17 00:00:00 2001 From: Siddharth M Narayanan Date: Sun, 2 Feb 2025 00:18:26 -0600 Subject: [PATCH] apply attention mask when computing logprobs --- trl/trainer/grpo_trainer.py | 37 ++++++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/trl/trainer/grpo_trainer.py b/trl/trainer/grpo_trainer.py index 5e8064fb21d..c4d7c5efaa6 100644 --- a/trl/trainer/grpo_trainer.py +++ b/trl/trainer/grpo_trainer.py @@ -435,6 +435,7 @@ def compute_loss(self, model, inputs, return_outputs=False, num_items_in_batch=N micro_bsz = self.args.per_device_micro_batch_size or bsz # default to full batch if not set prompt_length = prompt_inputs["input_ids"].size(1) prompts = [prompt for prompt in prompts for _ in range(self.num_generations)] + prompt_attn_mask = prompt_inputs["attention_mask"].repeat_interleave(self.num_generations, dim=0) # Prepare reward kwargs before looping through microbatches if any(not isinstance(reward_func, PreTrainedModel) for reward_func in self.reward_funcs): @@ -461,9 +462,11 @@ def compute_loss(self, model, inputs, return_outputs=False, num_items_in_batch=N current_bsz = micro_completion_ids.size(0) # last one may be