更新时间:2024-03-20 GMT+08:00
分享

数据处理

增量预训练(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 

数据处理具体操作

增量预训练数据处理具体操作步骤如下。

  1. 将获取到的增量预训练数据集上传到/home/ma-user/ws/datasets/目录中。
  2. 创建处理后的数据存放目录/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目录
  3. 进入代码目录“/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/目录下生成转换后的数据文件。

分享:

    相关文档

    相关产品