[THUDM/ChatGLM-6B][BUG/Help] <词表替换>

2024-06-12 406 views
7

现在想要微调的项目中,有一些不在当前词表里面的token,想替换成词表中这样的token,词表中好像只有这一个。有什么解决办法吗?<|blank_*|>这些也是待使用的token吗?

Environment
- OS:
- Python:
- Transformers:
- PyTorch:
- CUDA Support (`python -c "import torch; print(torch.cuda.is_available())"`) :

回答

8

你怎么加进去呢?

2

你怎么加进去呢?

目前采用的方法是把不在词表中的字符替换成词表中的一些出现频率较少的特殊字符,例如emoji。

3

我也想加入一些新词,我用的是tokenizer.add_tokens(),encode时没问题,但是decode时总是报错”IndexError: Out of range: piece id is out of range“

3

我也想加入一些新词,我用的是tokenizer.add_tokens(),encode时没问题,但是decode时总是报错”IndexError: Out of range: piece id is out of range“

我这边测试tokenizer.add_tokens是没有问题的。 image

config.json中vocab_size是提前设定好的,可能也需要修改一下。

0

我也想加入一些新词,我用的是tokenizer.add_tokens(),encode时没问题,但是decode时总是报错”IndexError: Out of range: piece id is out of range“

我这边测试tokenizer.add_tokens是没有问题的。 image

config.json中vocab_size是提前设定好的,可能也需要修改一下。

今天更新的code修复了前面的问题

1

使用tokenizer.add_tokens()后,encode后新增的词前边会自动加上一个空格(vocab中第5个token“▁”),导致与输入文本有出入; 且训练时,加入model.resize_token_embeddings(len(tokenizer))语句后,出现异常,loss巨大。 请问有正确的示例吗?