def METHOD_NAME(self, dataloader):
    dist = 0
    on = 0
    cnt = 0
    self.model.eval()
    with torch.no_grad():
        for chosen_ids, c_mask, reject_ids, r_mask in dataloader:
            chosen_ids = chosen_ids.squeeze(1).to(torch.cuda.current_device())
            c_mask = c_mask.squeeze(1).to(torch.cuda.current_device())
            reject_ids = reject_ids.squeeze(1).to(torch.cuda.current_device())
            r_mask = r_mask.squeeze(1).to(torch.cuda.current_device())
            chosen_reward = self.model(chosen_ids, attention_mask=c_mask)
            reject_reward = self.model(reject_ids, attention_mask=r_mask)
            for i in range(len(chosen_reward)):
                cnt += 1
                if chosen_reward[i] > reject_reward[i]:
                    on += 1
            dist += (chosen_reward - reject_reward).mean().item()
        dist_mean = dist / len(dataloader)
        acc = on / cnt
    self.model.train()
    return dist_mean, acc