loss=13(l1n1+l2n2+l3n3) 其中l_i 表示第 i 个样本的 loss,n_i 表示第 i 个样本输出的 token 数量 (对应绿色部分) 这样除了训练比较慢,没有什么别的问题。因为不同样本之间有很多重复计算的前缀,实际上这部分计算一次就行。 加速计算 如果将三轮三个样本合并成一个样本,可以尝试这种构造形式。因为存在...
class InstructionDataset(Dataset): def __getitem__(self, index): IGNORE_INDEX = -100 # The default setting in CrossEntropyLoss ann = self.ann[index] if ann.get("input", "") == "": prompt = PROMPT_DICT["prompt_no_input"].format_map(ann) else: prompt = PROMPT_DICT["prompt_input...
-SFT损失的公式为(l_1/n_1+l_2/n2+l_3/n_3)/3,其中l_i是输入i的损失,n_i是输入i的令牌数。 -SFT损失可以与因果注意力掩码一起使用,以确保正确的词元会计。 -PyTorch交叉熵损失函数可用于计算损失,并可选择使用“均值”方法。
sft loss 计算 SFT损失函数(SFT loss)是一种常用于人脸识别任务的损失函数。在人脸识别中,我们希望将不同人的人脸图像映射到不同的特征空间中,以便于通过特征向量的距离来判断是否为同一个人。SFT损失函数可以帮助我们实现这个目标。SFT损失函数的全称是Softmax Triplet Loss,它由两部分组成:Softmax Loss和...
交叉熵损失越小。在训练过程中,通过调整模型的参数,使得交叉熵损失最小化,从而让模型的预测结果尽可能接近真实结果。除了交叉熵损失,在一些特定的任务或场景中,也可能会使用其他损失函数,如均方误差损失(Mean Squared Error Loss)等,具体使用哪种损失函数需要根据任务的性质和特点来决定。
经过一通分析后,我们发现,新的训练方式改变了短 answer 数据的 loss 占比,毕竟模型在计算 loss 的时候,是先算一个句子内每个 token 的 平均 loss,再算一个 batch_size 内的平均 loss。 分类任务的 answer 通常只有 1 个 token:不 concat 的时...
看了其他project(比如deepspeedchat)的sft部分计算loss时的输入labels和inputs_ids是一样的,而safe_rlhf在sft阶段计算loss时将labels的prompt部分设置为了IGNORE_INDEX,两种方式会有什么区别吗? Checklist I have provided all relevant and necessary information above. I have chosen a suitable title for this issue...
[Question] 请教下关于SFT部分的loss计算 PKU-Alignment/safe-rlhf#63 slatter666 commented on Jul 26, 2023 slatter666on Jul 26, 2023 I also think this issue makes sense cause many well-known SFT work like alpaca and vicuna exclude the prompt's loss. Anyway, it's an interesting thing to...
SFT训练的数据集很大,训练时间较长,大概需要2-3天的时间,其中部分输出(从这里看loss值已经开始下降了): 代码语言:javascript 代码运行次数:0 运行 AI代码解释 ... Epoch:[7/20](307000/341718) loss:0.644 lr:0.0000070 epoch_Time:13.0min: Epoch:[7/20](308000/341718) loss:0.856 lr:0.0000070 epoch_...