数据处理
增量预训练(continue pre-training)前需要对数据集进行预处理,转化为.bin和.idx格式文件,以满足训练要求。
下载数据
增量预训练涉及的数据下载地址:http://github.com/tatsu-lab/stanford_alpaca/blob/main/alpaca_data.json
如果在准备数据章节已下载数据集,此处无需重复操作。
增量预训练和LoRA微调训练使用的是同一个数据集,数据处理一次即可,训练时可以共用。
数据预处理
使用数据预处理脚本preprocess_data.py脚本重新生成.bin和.idx格式的增量预训练数据。preprocess_data.py存放在AscendCloud-3rdLLM-6.3.902/llm_train/AscendSpeed/ModelLink/tools目录中,脚本具体内容如下。
#进入ModelLink目录: cd /home/ma-user/ws/AscendCloud-3rdLLM-6.3.902/llm_train/AscendSpeed/ModelLink python tools/preprocess_data.py --input alpaca_data.json\ --output-prefix $DATA_PATH \ --tokenizer-type PretrainedFromHF \ --tokenizer-name-or-path $TOKENIZER_PATH \ --tokenizer-not-use-fast \ --handler-name GeneralInstructionHandler
参数说明:
- input:增量预训练数据的存放路径。
- output-prefix:处理后的数据集保存路径+数据集名称前缀(例如:alpaca-ft)。
- tokenizer-type:tokenizer的类型,可选项有['BertWordPieceLowerCase', 'BertWordPieceCase','GPT2BPETokenizer', 'PretrainedFromHF'],设置为PretrainedFromHF。
- tokenizer-name-or-path:tokenizer的存放路径。
- handler-name:生成数据集的用途,这里是生成的指令数据集,用于微调。
输出结果
alpaca-ft_packed_attention_mask_document.bin
alpaca-ft_packed_attention_mask_document.idx
alpaca-ft_packed_input_ids_document.bin
alpaca-ft_packed_input_ids_document.idx
alpaca-ft_packed_labels_document.bin
alpaca-ft_packed_labels_document.idx
训练的时候指定的路径为/path/to/alpaca-ft不加文件类型后缀。
此处提供一个实际的数据转换脚本代码示例:
python tools/preprocess_data.py \ --input /home/ma-user/ws/datasets/data/alpaca_data.json \ --output-prefix /home/ma-user/ws/datasets/alpaca-ft/llama2-13b/alpaca-ft \ --tokenizer-type PretrainedFromHF \ --tokenizer-name-or-path /home/ma-user/ws/tokenizers/llama2-13b-hf \ --tokenizer-not-use-fast \ --handler-name GeneralInstructionHandler
数据处理具体操作
增量预训练数据处理具体操作步骤如下。
- 将获取到的增量预训练数据集上传到/home/ma-user/ws/datasets/目录中。
- 创建处理后的数据存放目录/home/ma-user/ws/datasets/alpaca-ft/llama2-13B/。
cd /home/ma-user/ws/datasets #进入/home/ma-user/ws/datasets目录 mkdir -p alpaca-ft/llama2-13B #创建alpaca-ft/llama2-13B目录
- 进入代码目录“/home/ma-user/ws/AscendCloud-3rdLLM-6.3.902/llm_train/AscendSpeed/ModelLink/”,在代码目录中执行preprocess_data.py脚本处理数据。
此处提供一段实际的数据处理代码示例如下。
export PYTHONPATH=$PYTHONPATH:/home/ma-user/ws/AscendCloud-3rdLLM-6.3.902/llm_train/AscendSpeed/ModelLink/ python tools/preprocess_data.py \ --input /home/ma-user/ws/datasets/data/alpaca_data.json \ --output-prefix /home/ma-user/ws/datasets/alpaca-ft/llama2-13b/alpaca-ft \ --tokenizer-type PretrainedFromHF \ --tokenizer-name-or-path /home/ma-user/ws/tokenizers/llama2-13b-hf \ --tokenizer-not-use-fast \ --handler-name GeneralInstructionHandler
数据处理完后,在/home/ma-user/ws/datasets/alpaca-ft/llama2-13B/目录下生成转换后的数据文件。