LLaMA.Tokenizer:Byte Pair Encoding & SentencePiece
没写完,,,勿看
10017
Tokenization是所有NLP任务的第一步,有许多不同的实现方法。今天主要介绍LLaMA中采用的tokenizer:Byte Pair Encoding,实现方法用的是Google提供的分词工具SentencePiece。
基础知识
简单来说,BPE就是,限定一个目标词表数量上限,然后在给定的语料库中进行训练,算法会不断将高词频的词组合在一起(比如说“机器”和“学习”组成“机器学习”),直到达到设定的词表数量上限。
词表的生成是从字符level开始的,假设我们有一个corpus:
1 | [5] low_ # [5] 表示出现频数,即数量 |
注意一定要将空格也记为一个字符,因为est_和est是不一样的,前者代表的是lowest这种词的结尾,而后者则不作为结尾,可能出现在像estate这种词中。
| 字符 | 频次 |
| … | … |
| _ | 18|
LLaMA代码
首先我们需要下载LLaMA的Tokenizer看一下:
1 | from transformers import LlamaTokenizer |
会显示以下warning是因为,huggingface.transformers改过一次LlamaTokenizer的名字,和用之前库训练的模型中保存的信息对不上了,不用管
1 | The tokenizer class you load from this checkpoint is not the same type as the class this function is called from. It may result in unexpected tokenization. |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 不会魔法的小圆!