def get_completion_probability(self, input, completion, tok): self.model.eval() ids = tok.encode(input).ids ids = torch.tensor(ids, device=self.device).unsqueeze(0) completion_ids = torch.tensor(tok.encode(completion).ids, device=self.device).unsqueeze(0) probs = [] for i in range(completion_ids.size(1)): y = self.model(ids) y = y[0,:,-1].softmax(dim=0) # prob is the probability of this completion. prob = y[completion_ids[0,i]] probs.append(prob) ids = torch.cat([ids, completion_ids[:,i:i+1]], dim=1) # return torch.tensor(probs) #