Skip to content

Latest commit

 

History

History
 
 

tools

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 

本目录提供辅助模型训练的一些工具,文件结构如下所示:

├── transformers  # 适配hugging face的transformers的一些工具
│   ├── configuration_internlm.py  # config适配工具
│   ├── modeling_internlm.py  # model适配工具
│   ├── tokenization_internlm.py  # tokenizer适配工具
│   └── convert2hf.py  # 模型适配hugging face工具
└── tokenizer.py  # 将原始数据转换成bin和meta文件的工具

tokenizer.py

生成原始数据的binmeta文件需要使用tokenizer,我们通过在tools/tokenizer.py中指定模型参数路径的方式来导入tokenizer模型。目前我们提供了V7_sft.model来生成tokens。若想使用不同的模型,可直接修改tokernizer.py中的模型参数路径。

可以运行以下命令生成原始数据对应的binmeta文件,其中参数text_input_path表示原始文本数据路径,目前支持txtjsonjsonl三种输入格式,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,原始数据集如下所示:

感恩生活中的每一个细节,才能真正体会到幸福的滋味。
梦想是人生的动力源泉,努力追逐,才能实现自己的目标。
学会宽容和理解,才能建立真正和谐的人际关系。

可以通过运行以下命令来生成binmeta文件:

$ 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

例如,对于第一个sequencestarting index为 0,有 11 个tokens;对于第二个sequence,由于第一个sequence转换为string后的长度为89,因此它的starting index为 90,有 15 个tokens

jsonjsonl类型的文件的binmeta文件格式和txt一致,此处不再赘叙。