l294265421 / alpaca-rlhf

Finetuning LLaMA with RLHF (Reinforcement Learning with Human Feedback) based on DeepSpeed Chat
https://88aeeb3aef5040507e.gradio.live/
MIT License
103 stars 13 forks source link

关于Step3中是否需要把生成的answer中eos后面token mask掉 #9

Closed Ablustrund closed 1 year ago

Ablustrund commented 1 year ago

您好!十分感谢您的开源贡献! 我在看您的代码过程中发现您在rlhf中,把模型生成的eos后,后面的所有token mask掉了。这里我有一个疑惑就是:

对于critic model而言,他虽然知道eos后面是pad的,但是也会为pad的hidden state过fc输出一个分数,而并不是不计算分数; 对于actor model而言,只知道每个token所对应的value,用value和reward来监督,但是不知道这个token是否被mask,也不知道这个token是否是pad; 而这样用pad的分来监督actor会不会是更不准确的呢

l294265421 commented 1 year ago

这里确实是可以优化的。这里的问题是,padding的value是无意义的,不应该影响前面正常token的advantage。一个简单的优化方式就是把这部分的value设置为0,其它地方不用修改。我会把这个加到代码里。