finetune_for_instruction data.py的理解问题
你好,https://github.com/FlagOpen/FlagEmbedding/blob/master/FlagEmbedding/llm_reranker/finetune_for_instruction/data.py,这里面 pos 和 neg 我的理解应该是Label对应 Yes 和 No, 为什么所有的query+pos-passage或者neg-passage 都拼接 Yes,怎么理解啊
我们只需要一个数值进行排序,这里计算的是yes的概率,进行排序。
我们只需要一个数值进行排序,这里计算的是yes的概率,进行排序。
ok 明白,那最后算loss的时候,target为啥都是0,batch内第一条是pos,其余是neg, target应该是[1, 0, 0, 0...]才对啊 grouped_logits = ranker_logits.view(self.train_batch_size, -1) target = torch.zeros(self.train_batch_size, device=grouped_logits.device, dtype=torch.long) loss = self.compute_loss(grouped_logits, target)
target指示的是第几个为pos,所以0的意思是第0个为pos
target指示的是第几个为pos,所以0的意思是第0个为pos
嗯嗯,我搞混了,这个batch 不是 group的那个,应该是 多个group组成batch,每个group内Yes最大概率是在第0个
我们只需要一个数值进行排序,这里计算的是yes的概率,进行排序。
我们只需要一个数值进行排序,这里计算的是yes的概率,进行排序。
请问为什么不直接取-2位置的logits,或者不加yes,取-1位置的logits,而是通过在最后加一个yes,然后torch.max来定位?padding应该都是left padding吧,还是最后一个位置的logits预测label?