关于reward model
Closed this issue · 5 comments
感谢贵团队在rlhf开源的最新成果,不过我有几个小问题想问:
- reward model的输入是完整的prompt+response,按照moss的格式应该是
<|Human|>hello<|MOSS|>hi</s>
这样的,那么是否意味着sft的模型也只能按照这个格式进行训练?或者也可以通过脚本转换其他的template(比如alpaca)到moss? - 还有reward model的tokenizer是和sft model共用吗?比如我想使用经过词表拓展的llama作为sft model,那会不会有冲突?
您好!感谢您的关注。
对于第一个问题,您提到的输入格式是正确的,如果是多轮就是将您的输入格式复用几次
<|Human|>hello<|MOSS|>hi</s><|Human|>你好<|MOSS|>嗨</s>
这里<|Human|>和<|MOSS|>只是两个特殊token,对应token id为32000和32001,所以你只需要将自己的两个特殊prompt绑定到这两个token id,就可以实现替换,而不需要更改模型。
第二个问题,这确实会有冲突,但是对于一句话,你可以使用两个tokenizer。我们的tokenizer用来对输入给奖励模型和critic model的句子进行切分。使用自己的扩充的tokenizer对输入给policy和reference model的token进行切分。这样就不会有问题了。这只需要修改少量的代码,我们对dataset进行了封装,希望粗略地分析能够帮助到你~
您好,释放的reward模型: moss-rlhf-reward-model-7B-zh 是关于helpful还是harmless数据集训练的?
您好,释放的reward模型: moss-rlhf-reward-model-7B-zh 是关于helpful还是harmless数据集训练的?
都包括
感谢回答
<|Human|>hello<|MOSS|>hi</s><|Human|>你好<|MOSS|>嗨</s>
这里<|Human|>和<|MOSS|>只是两个特殊token,对应token id为32000和32001,所以你只需要将自己的两个特殊prompt绑定到这两个token id,就可以实现替换,而不需要更改模型。 第二个问题,这确实会有冲突,但是对于一句话,你可以使用两个tokenizer。我们的tokenizer用来对输入给奖励模型和critic model的句子进行切分。使用自己的扩充的tokenizer对输入给policy和reference model的token进行切分。这样就不会有问题了。这只需要修改少量的代码,我们对dataset进行了封装,希望粗略地分析能够帮助到你~
@Ablustrund 您好
这里是不是有点问题,critic model如果和policy model的tokenizer不一样,那critic model得到的value的句长和policy model得到的logit的句长就不一样,是不是没法计算pg_loss