的数据训练一个比较好,这里我做了一个小实验,看看选择哪个tokenizer效果更好。
由于我需要从头训练一个中英文的模型,所以这里选择了开源tokenizer:qwen2(通义千问的分词器)、glm4(智谱的分词器),和两个我根据自己数据训练的分词器:custom、custom_tong。这里介绍一下custom是我从训练数据(包含中文、英文和代码)中随机抽取了大约1.5G的文本训练的分词器。考虑到我训练分词器的算法是BPE算法,这种算法将出现频率最高的词添加进词表,为了照顾部分数据集(主要是代码数据)可能因为比较小,不会出现在词表中,所以我从每个数据集中随机抽取同样大小的文本(共1.5G)训练分词器custom_tong。
我选择了在两个小模型上进行实验:10M参数+600M tokens、100M参数+600M tokens。最后的实验结果如下图:
最后的结果可以看到,验证集和训练集loss几乎没有区别。两个大小的模型上效果最好的都是qwen2的分词器。本来以为我自己训练的分词器loss应该会最低,毕竟和训练数据集分布相同,没想到还是不如开源的分词器。感觉开源模型中通义还是很好的模型,效果挺好的,开源的种类也多。
这里介绍一个开源项目:Zero-Chatgpt(github.com/AI-Study-Ha…)。这个项目跑通了从数据收集、清洗、预训练、指令微调、强化学习的全流程,并且提供了全部代码脚本 ,适合新手训练个模型练练手。