所需先决条件
- 我已阅读了文档 https://github.com/baichuan-inc/baichuan-7B/blob/HEAD/README.md 。
- 我已在 Issue Tracker 和 Discussions 中搜索,以确保这个问题尚未报告。如果已经报告过,请在那里加1或评论。
- 考虑首先在 Discussion 中提问。
问题
- 在训练时,需要padding,但是pad_token_id并没有跟着tokenizer一起保存下来
>>> tokenizer = AutoTokenizer.from_pretrained("baichuan-inc/baichuan-7B")
>>> print(tokenizer.pad_token_id, tokenizer.pad_token)
Output: None, None
如果不指定pad_token_id会触发Cuda Error越界问题或者pad_token not found
- 在 https://github.com/baichuan-inc/baichuan-7B/blob/main/models/modeling_baichuan.py 的96行可以看到,注册到buffer的inv_freq跟着state_dict()一起保存下来了,但是这个在推理时完全没用!如果用model.named_parameters()保存模型参数,会报错没有找到model.model.layers.31.self_attn.rotary_emb.inv_freq
检查清单
- 我已在上方提供了所有相关且必要的信息。
- 我已为这个问题选择了一个合适的标题。
3条答案
按热度按时间bq3bfh9z1#
kuarbcqp2#
也可以在
special_tokens_map.json
中添加一个pad_token
,内容直接复制unk_token
,即:06odsfpq3#
改成tokenizer.pad_token_id = 0微调实验,跑着跑着还会出现Cuda Error越界问题