本目录提供辅助模型训练的一些工具,文件结构如下所示:
├── transformers # 适配hugging face的transformers的一些工具
│ ├── configuration_internlm.py # config适配工具
│ ├── modeling_internlm.py # model适配工具
│ ├── tokenization_internlm.py # tokenizer适配工具
│ └── convert2hf.py # 模型适配hugging face工具
└── tokenizer.py # 将原始数据转换成bin和meta文件的工具
生成原始数据的bin
和meta
文件需要使用tokenizer
,我们通过在tools/tokenizer.py
中指定模型参数路径的方式来导入tokenizer模型。目前我们提供了V7_sft.model
来生成tokens。若想使用不同的模型,可直接修改tokernizer.py
中的模型参数路径。
可以运行以下命令生成原始数据对应的bin
和meta
文件,其中参数text_input_path
表示原始文本数据路径,目前支持txt
、json
和jsonl
三种输入格式,bin_output_path
表示生成的bin
文件的保存路径。
$ python tools/tokenizer.py --text_input_path your_input_text_path --bin_output_path your_output_bin_path
下面是一个数据处理的例子:
给定一个包含原始数据集的文件raw_data.txt
,原始数据集如下所示:
感恩生活中的每一个细节,才能真正体会到幸福的滋味。
梦想是人生的动力源泉,努力追逐,才能实现自己的目标。
学会宽容和理解,才能建立真正和谐的人际关系。
可以通过运行以下命令来生成bin
和meta
文件:
$ python tools/tokenizer.py --text_input_path raw_data.txt --bin_output_path cn/output.bin
需要注意的是,生成的bin
文件需要保存在cn
或者en
或者code
或者ja
或者ar
或者kaoshi
这五个目录下,以区分数据集的类型。
其中,cn
表示中文数据集;en
表示英文数据集;code
表示代码数据集;ja
表示日语数据集;ar
表示阿拉伯语数据集;kaoshi
表示考试数据集。
生成的bin文件的格式如下:
{"tokens": [73075, 75302, 69522, 69022, 98899, 67713, 68015, 81269, 74637, 75445, 99157]}
{"tokens": [69469, 60355, 73026, 68524, 60846, 61844, 98899, 67775, 79241, 98899, 67713, 67800, 67453, 67838, 99157]}
{"tokens": [68057, 79017, 60378, 68014, 98899, 67713, 67990, 68015, 70381, 67428, 61003, 67622, 99157]}
bin
文件中的每一行均对应原始数据集中的每一个句子,表示每个句子的token
(下文将用sequence指定)。
生成的meta
文件的格式如下:
(0, 11), (90, 15), (208, 13)
在meta
文件中,每个元组对应着bin
文件中每一个sequence
的元信息。其中,元组的第一个元素表示每个sequence
在所有sequence
中的starting index
,第二个元素表示每个sequence
中有多少个tokens
。
例如,对于第一个sequence
,starting index
为 0,有 11 个tokens
;对于第二个sequence
,由于第一个sequence
转换为string
后的长度为89
,因此它的starting index
为 90,有 15 个tokens
。
json
和jsonl
类型的文件的bin
和meta
文件格式和txt
一致,此处不再赘叙。