Closed ZeyuTeng96 closed 8 months ago
添加更多token无非就是在tokenizer中增加更多的entry,最终体现在模型上的词向量矩阵和LM-head矩阵增加对应的列。
如果你已经确定要加什么token了,直接在transformers的tokenizer应用.add_tokens()
方法(或者类似的方法,具体自己查官方文档)。
添加更多token无非就是在tokenizer中增加更多的entry,最终体现在模型上的词向量矩阵和LM-head矩阵增加对应的列。 如果你已经确定要加什么token了,直接在transformers的tokenizer应用
.add_tokens()
方法(或者类似的方法,具体自己查官方文档)。
请问是否可以在50行后 52行前([https://github.com/ymcui/Chinese-LLaMA-Alpaca/blob/main/scripts/merge_tokenizer/merge_tokenizers.py#L50),通过: tokenizer.add_special_tokens({'additional_special_tokens': ['<|User|>', '<|Assistant|>', '<|System|>']}) 这个方法引入呢?
add_tokens()方法和add_special_tokens()方法有什么区别呢?
训练sp model时,传入user_defined_symbols的作用是什么呢?
烦请您指教一下
@iMountTai 请问您能解答一下嘛?
tokenizer.add_special_tokens({'additional_special_tokens': ['<|User|>', '<|Assistant|>', '<|System|>']})
可以在加载tokenizer后使用。user_defined_symbols
的作用还需您查看相关文档。
- 没尝试过,不确定是否可行并可用。
- 两个方法本质上是等价的,可以查看接口文档确定使用方法。
tokenizer.add_special_tokens({'additional_special_tokens': ['<|User|>', '<|Assistant|>', '<|System|>']})
可以在加载tokenizer后使用。- 训练sp model时我们基本用的都是默认参数,所以
user_defined_symbols
的作用还需您查看相关文档。
所以这边的chinese llama就是正常的进行词表扩充,没有添加额外的special token进行预训练。然后,在sft chinese alpaca的时候,用tokenizer.add_special_tokens进行添加special token嘛?
二代llama/alpaca是在PT之前扩充词表的,扩充词表后,PT阶段或者SFT阶段都没有做额外的词表扩充。
二代llama/alpaca是在PT之前扩充词表的,扩充词表后,PT阶段或者SFT阶段都没有做额外的词表扩充。
一代是在sft alpaca的时候有添加special token嘛?我记得好像是有这个操作的
是的,一代llama SFT阶段添加了pad。
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your consideration.
Closing the issue, since no updates observed. Feel free to re-open if you need any further assistance.
提交前必须检查以下项目
问题类型
其他问题
基础模型
Chinese-LLaMA-2 (7B/13B)
操作系统
Linux
详细描述问题
在使用Llama2进行词表扩充 + 中文数据增量预训练时,想在预训练前引入更多的special token (比如:<|User|>, <|Assistant|>,<|System|>等)。是通过何种方式引入呢?
是在合并完词表,保存chinese_llama.model并重新加载tokenizer后 - 50行后 52行前(https://github.com/ymcui/Chinese-LLaMA-Alpaca/blob/main/scripts/merge_tokenizer/merge_tokenizers.py#L50),通过:%EF%BC%8C%E9%80%9A%E8%BF%87%EF%BC%9A) tokenizer.add_special_tokens({'additional_special_tokens': ['<|User|>', '<|Assistant|>', '<|System|>']}) 这个方法引入嘛?
还是在训练chinese_sp_model时(https://github.com/ymcui/Chinese-LLaMA-Alpaca/blob/main/scripts/merge_tokenizer/merge_tokenizers.py#L18),通过某种方法引入呢?%EF%BC%8C%E9%80%9A%E8%BF%87%E6%9F%90%E7%A7%8D%E6%96%B9%E6%B3%95%E5%BC%95%E5%85%A5%E5%91%A2%EF%BC%9F) 尝试过通过如下方式训练chinese_sp_model,但是并不能将<|User|>, <|Assistant|>, <|System|>作为special token spm.SentencePieceTrainer.train(input='./wiki.txt', model_prefix='wiki', model_type='bpe', vocab_size=20000, byte_fallback=True, user_defined_symbols= ['<|User|>', '<|Assistant|>', '<|System|>'])
还是其他方式呢?
依赖情况(代码类问题务必提供)
运行日志或截图