def _generate_loss_mask(self, input_ids): loss_mask = [0] * len(input_ids) i = 0 while i < len(input_ids): if input_ids[i:i + len(self.bos_id)] == self.bos_id: start = i + len(self.bos_id) end = start while end < len(input_ids): if input_ids[end:end + len...
# losses * loss_mask = [0, 0, a2, a3, a4, 0, b1, b2, 0, 0, c2, c3, c4, 0, 0] # loss_token_num: [3, 3, 3, 3, 3, 2, 2, 2, 3, 3, 3, 3, 3, 1, 1] # losses * loss_mask / loss_token_num = [0, 0, a2/3, a3/3, a4/3, 0, b1/2, b2/2, 0, ...
loss = torch.sum(losses * loss_mask / loss_token_num) loss_and_turn_num = torch.cat([loss.view(1), turn_num.view(1)]) # Reduce loss for logging. loss_and_turn_num = loss_and_turn_num.clone().detach() torch.distributed.all_reduce(loss_and_turn_num, group=mpu.get_data_paralle...
主要原因是 prompt 的同质化比较严重,不做 loss_mask 的话,同样的一句话会被翻来覆去的学,但如果你能保证你的每条 prompt 都是独一无二的,就完全可以省去 prompt 的 loss_mask 环节。对了,session 数据一定要想清楚是每一个 answer 都算 loss,还是只对最后一...
loss_mask = [0]*context_length+[1]*(len(input_id[mask_position+1:])) + [0]*pad_len 构造好输入后,token转为embedding,经过transformer的过程跟之前预训练完全一样,也就是我们又得到了一个维度是(1,10,vocab_size)的输出logits=output_layer(transformer(X)),进一步就可以计算answer部分的loss了,其实...
sft 的 prompt 不做 loss,但这并不是说它不能做 loss。主要原因是 prompt 的同质化比较严重,不做 loss_mask 的话,同样的一句话会被翻来覆去的学,但如果你能保证你的每条 prompt 都是独一无二的,就完全可以省去 prompt 的 loss_mask 环节。对了,session 数据一定要想清楚是每一个 answer 都算 loss,还...
因源衔吧 causal attention mask,所刀要癞 token 锤冕俺潮最面裹 token,判算上花之前逼椭恰隔。室吁桥样吼一择鬼:坯果鼻旗河旅刚兽的震式晶谎 input_ids 挎 labels (鲁色狐-100,钱色梯input_ids)loss 呛算是忌问胧帽。pytorch CrossEntropyLoss 颂哮 loss 按蒿下脯谤方兄,镣明膨"mean"践卵耸雕...
最近,大家都在讨论SFT(Sequence-to-Sequence Framework)的训练技巧,尤其是mask input的使用,它不参与loss计算。然而,除了这个关键点,还有一个非常重要的方面被忽视了——样本拼接。🔄在多轮对话的场景中,我们发现样本拼接的方式对效果有着显著的影响。大多数SFT框架都是按照样本来计算loss的,不同样本之间的长度通过...
if self.train_phase == 1: return { "input_ids": self.chosen_dataset[idx]["input_ids"], "attention_mask": self.chosen_dataset[idx]["attention_mask"], "labels": self.chosen_dataset[idx]["input_ids"] } In the SFT stage, input_ids and labels are the same, so the loss calculatio...
'attention_mask':tensor([[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]...