verl
verl copied to clipboard
我们为什么在tokenizer里仅需要特殊处理gemma-2-2b-it
观察到hftokenizer类主要的两个用途之一是为generation_config具有多个结束符的模型指定EOS token https://github.com/volcengine/verl/blob/65cceb3c9dbe6e18230bc3dc045af6e3280c9752/verl/utils/tokenizer.py#L50-L55
我发现除了gemma2以外,llama3和qwen2等系列都具有类似的现象,例如llama3.1-8b甚至有三个结束符 https://huggingface.co/meta-llama/Llama-3.1-8B-Instruct/blob/0e9e39f249a16976918f6564b8830bc894c89659/generation_config.json#L4-L9
所以这个地方仅处理gemma2是有特殊的原因吗,还是说这是一个需要PR的遗漏部分?
我发现了原因,是因为只有这个instruct模型的tokenizer还把eos设置为预训练的eos token,其他系列的模型都正常设置了。
这可能还有一个问题,做ZERO类型RL的探索很多都是从base model开始的,所以对于base模型来说,需要额外将他们的eos token设置为与开源instruct模型的后训练eos token对齐的设置吗,还是就直接采用预训练的eos token设置就行?
This is a design option. You can set either use instruct model's eos_token or the base model's eos_token :) For Qwen model, I think using the base model's tokenizer is fine.