GanjinZero / RRHF

[NIPS2023] RRHF & Wombat
780 stars 49 forks source link

一些训练细节 #27

Closed xiaoyuan1996 closed 1 year ago

xiaoyuan1996 commented 1 year ago

感谢您的工作,我们在复现时有一些细节的问题想咨询下:

  1. model_max_length被设置为192, 但我在看logits输出的时候,总能看到L为192以上的值。我猜想截断长度是否在其他位置设置为了512?比如:logit_label.shape: torch.Size([6, 308])

  2. 数据集alpaca_responses_hh.json,load后长度为76256,按照单卡bs1来跑,trainer中的tqdm不应该为76256么,但是实际是28596,我不太理解这个值是怎么来的

  3. 在rrhf_loss中,操作 aval = torch.bitwise_and(rw_diff > 0, diff < 0)[0] 我的理解是把不匹配的给筛出来,但是为什么没有rw_diff < 0, diff > 0这种情况呢?如果加上这种情况把按位与修改为异或就可以了吧?

谢谢!

GanjinZero commented 1 year ago

1.

query_input_ids = _single_tokenize(prompt_input, self.tokenizer)
res_input_ids = _single_tokenize(r + self.tokenizer.eos_token, self.tokenizer, max_len=self.tokenizer.model_max_length-query_input_ids.shape[0]) # eos here

我们的代码query忘记截取到max_len了,没有造成我们的oom,当时就没有管

2. 你可能设置了gradient_accumulation_steps

3. 如果i和j满足rw_diff > 0;那么j和i一定满足rw_diff<0;没必要重复计算

xiaoyuan1996 commented 1 year ago

感谢🙏