数据处理
增量预训练(continue pre-training)前需要对数据集进行预处理,转化为.bin和.idx格式文件,以满足训练要求。
下载数据
增量预训练涉及的数据下载地址:http://github.com/tatsu-lab/stanford_alpaca/blob/main/alpaca_data.json
如果在准备数据章节已下载数据集,此处无需重复操作。
增量预训练和LoRA微调训练使用的是同一个数据集,数据处理一次即可,训练时可以共用。
数据预处理
python ${MA_JOB_DIR}/6.3.902-Ascend/llm_train/AscendSpeed/ModelLink/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 ${MA_JOB_DIR}/6.3.902-Ascend/datasets/data/alpaca_data.json \ --output-prefix ${MA_JOB_DIR}/6.3.902-Ascend/datasets/alpaca-ft/llama2-13b/alpaca-ft \ --tokenizer-type PretrainedFromHF \ --tokenizer-name-or-path ${MA_JOB_DIR}/6.3.902-Ascend/tokenizers/llama2-13b-hf \ --tokenizer-not-use-fast \ --handler-name GeneralInstructionHandler
数据处理具体操作
增量预训练数据处理具体操作步骤如下。
- 单击“作业列表”右侧“+”新建训练作业任务
图1 新建训练作业
- 设置作业名称、描述、作业模式,根据需求选择镜像、资源规格和节点数。
图2 设置训练作业基本信息
- 单击alpaca-ft文件夹右侧“设为输出”,完成输出目录的挂载。
图3 设置输出目录
- 设置“tokenizers/llama2-13b-hf”目录挂载权重目录“obs://standard-llama2-13b/llama-2-13b-chat-hf/”,设置“datasets/data”目录挂载数据目录“obs://standard-llama2-13b/alpaca/llama2-13B”。
图4 设置挂载数据目录
- 输入启动命令。
python ${MA_JOB_DIR}/6.3.902-Ascend/llm_train/AscendSpeed/ModelLink/tools/preprocess_data.py --input ${MA_JOB_DIR}/6.3.902-Ascend/datasets/data/alpaca_data.json --output-prefix ${MA_JOB_DIR}/6.3.902-Ascend/datasets/alpaca-ft/alpaca-ft --tokenizer-type PretrainedFromHF --tokenizer-name-or-path ${MA_JOB_DIR}/6.3.902-Ascend/tokenizers/llama2-13b-hf --tokenizer-not-use-fast --handler-name GeneralInstructionHandler
- 单击“提交作业”完成作业创建,待作业运行完成后,在输出挂载目录下生成转换后的数据文件。