LLMs Tokenizer 篇
Byte-PairEncoding(BPE)篇
1 Byte-PairEncoding(BPE)如何构建词典?
1准备足够的训练语料;以及期望的词表大小:2将单词拆分为字符粒度(字粒度),并在末尾添加后缀“”,统计单词频率3合并方式:统计每一个连续/相邻字节对的出现频率,将最高频的连续字节对合并为新字词:4重复第3步,直到词表达到设定的词表大小;或下一个最高频字节对出现频率为1.注:GPT2、BART和LLaMA就采用了BPE.
WordPiece篇
WordPiece与BPE异同点是什么?
本质上还是BPE的思想.与BPE最大区别在于:如何选择两个子词进行合并
BPE是选择频次最大的相邻子词合并:
WordPiece算法选择能够提升语言模型概率最大的相邻子词进行合并,来加入词表:注:BERT采用了WordPicce.
SentencePiece篇
简单介绍一下SentencePiece思路?
把空格也当作一种特殊字符来处理,再用BPE或者来构造词汇表.注:ChatGLM、BLOOM、PaLM采用了SentencePiece.
对比篇
1举例介绍一下不同大模型LLMs的分词方式?
模型 词表大小 分词结果 长度LLaMA 32000[男”,何”,不, ‘,' , 24[男,儿,何,不,带,吴,物,,收取,关,山,五十,州”, ,收,取,关,山r,五,十,州,Chinese LLaMA 49953 14ChatGLM-6B 130528[男儿,何不,“带,吴,物,”“收取,关山,五十,州,] 65024[男,儿,何,不,带,吴,物,,收取,关,山,五十,州”, 11ChatGLM2-6B 14Bloom 250880[男,儿何不,带,吴,钩,,“收取,关,山,五十,州,] 13Falcon 65024 [男儿不,带,吴,,收 取山五十州 22
2介绍一下不同大模型LLMs的分词方式的区别?
中文平均 英文平均 中文处理 英文处理模型 词表大小 token数 token数 时间(s) 时间(s)LLaMA 32000 1.45 0.25 12.6 19.4Falcon 65024 1.18 0.235 21.395 24.73ChineseLLaMA 49953 0.62 0.249 8.65 19.12ChatGLM-6B 130528 0.55 0.19 15.91 20.84ChatGLM2-6B 65024 0.58 0.23 8.899 18.63Bloom 250880 0.53 0.22 9.87 15.6
1.LLaMA的词表是最小的,LLaMA在中英文上的平均token数都是最多的,这意味着LLaMA对中英文分词都会比较碎,比较细粒度.尤其在中文上平均token数高达1.45,这意味着LLaMA大概率会将中文字符切分为2个以上的token.
2.ChineseLLaMA扩展词表后,中文平均token数显著降低,会将一个汉字或两个汉字切分为一个token,提高了中文编码效率.
3.ChatGLM-6B是平衡中英文分词效果最好的 tokenizer.由于词表比较大,中文处理时间也有增加
4.BLOOM虽然是词表最大的,但由于是多语种的,在中英文上分词效率与ChatGLM-6B基本相当.