微调后推理报错 IndexError: piece id is out of range.
#69
by
lyy0905
- opened
原始模型从hf下载的,可以正常推理,但是微调后的模型推理会报错,似乎是tokenizer的问题。但是我使用的tokenizer.model, tokenizer_config.json,还有py文件都是跟原始模型相同的。这个可能是什么问题?
感觉是这段代码有问题,可能需要官方解决一下,最后的全连接层的输出维数大于词表长度,如果生成了超出这个范围的token应该处理成 或者空字符之类的
# tokenization_chatglm.py: SPTokenizer
def convert_id_to_token(self, index):
"""Converts an index (integer) in a token (str) using the vocab."""
if index in self.index_special_tokens or index in [self.eos_id, self.bos_id, self.pad_id] or index < 0:
return ""
return self.sp_model.IdToPiece(index)
有可能是全参数微调的导出有问题,我试了lora微调,用原始模型+adapter做推理是没问题的,但是全参数微调完就会报这个错
我也遇到了。。
参考 https://huggingface.co/THUDM/chatglm3-6b/commit/ea563876364622a0a5c24e6b71db0b93a9861ba0#d2h-069285
在 tokenization_chatglm.py 里新增两行代码