Closed AndySze closed 6 months ago
这个问题是因为phi3实际表示推理结束的标志为"<|end|>",而在tokenizer_config.json文件中,用于判断推理结束的标志eos_token被设置为"<|endoftext|>". 解决这个问题只需要在转换模型前,将tokenizer_config.json中的eos_token设置为"<|end|>"即可
这个问题是因为phi3实际表示推理结束的标志为"<|end|>",而在tokenizer_config.json文件中,用于判断推理结束的标志eos_token被设置为"<|endoftext|>". 解决这个问题只需要在转换模型前,将tokenizer_config.json中的eos_token设置为"<|end|>"即可
感谢解答,重新改了tokenizer_config.json并转了模型,可以及时停止输出了,但每次会在最后打印:<|end|>
比如:
1、
前面省略... How can I help you today?<|end|>
2、
For words are but a poet's art,
That touches hearts from start to part.<|end|>
3、
In winter’s arms we find our peace, in frost-kissed moments shared,
A timeless poem of snow and soul, forevermore declared.<|end|>
另外,如果输出文字很长,超过了设定的token数量限制,会在结尾处,输出一些无关内容,如下两个例子:
1、
前面省略...
it held something far more precious - ancient knowledge about the world's natural balance = self.__get_balance(
^^^^^^^^^^^^^^^^^^^^^
无关内容
2、
前面省略...
Remy would occasionally look back tofragment{<div class="modal" data-dismiss="modal">...</div>}
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
无关内容
使用Phi3模型,推理结束貌似有问题, Prompt Prefix和Postfix参考官方的文档后,这样写的:
Ollama的Template是这样的:
如下所示:
第一个例子(回答完毕后,没有马上结束,而是输出了很多无效文字,最终超过最长限制后结束?)
第二个例子(回答完毕后,会在后面追加
<|end|><|endoftext|>
)