ChatGLM2-6B推理时胡言乱语现象及可能的解决办法
可能是作者疏忽了, chatglm2需要special token.
解决办法:
将single_chat.py文件中63行user_input_ids = tokenizer(user_input, return_tensors="pt", add_special_tokens=False).input_ids
改为user_input_ids = tokenizer(user_input, return_tensors="pt").input_ids(multi_chat.py同理)
现象:
-
模型来源: huggingface上的THUDM/ChatGLM-6B
-
复现:
python ./Firefly/script/chat/single_chat.py -
错误现象:
-
正确现象:
配置:
- OS: Ubuntu18.04
- GPU: Tesla V100S-PCIE-32GB
十分感谢,我就是出现这个问题,还以为我的ChatGLM2模型参数坏掉了
如果这是出错原因的话那岂不是说构造数据的时候模板没对齐?
如果这是出错原因的话那岂不是说构造数据的时候模板没对齐?
我没看完所有源码,所以我的说法很可能不对。我猜应该是对齐了,理由是dummy data的格式是和GLM2一致的。
如果这是出错原因的话那岂不是说构造数据的时候模板没对齐?
我没看完所有源码,所以我的说法很可能不对。我猜应该是对齐了,理由是dummy data的格式是和GLM2一致的。
sorry for the ambiguity.
user_input_ids = tokenizer(user_input, return_tensors="pt", add_special_tokens=False).input_ids 与 user_input_ids = tokenizer(user_input, return_tensors="pt").input_ids 的差别在于生成出的id序列不同,可以打印看一下。通常第二行代码会根据tokenizer的默认配置基于input在首尾处添加特殊的token_id,这类代码对于不同tokenizer设置的效用是不同的。 我说的“没对齐”是指本项目没有完整覆盖chatglm2-6b的所有适配细节。不过还没试过这些代码,不知道有没有其他人遇到过。如果想进一步确认建议你可以加群问一下,获得反馈可能更快些。