更新时间:2024-04-30 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-xxx/6.3.902-Ascend/llm_train/AscendSpeed/ModelLink/tools目录中,脚本具体内容如下。
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. 单击“作业列表”右侧“+”新建训练作业任务

    图1 新建训练作业

  2. 设置作业名称、描述、作业模式,根据需求选择镜像、资源规格和节点数。

    图2 设置训练作业基本信息

  3. 单击alpaca-ft文件夹右侧“设为输出”,完成输出目录的挂载。

    图3 设置输出目录

  4. 设置“tokenizers/llama2-13b-hf”目录挂载权重目录“obs://standard-llama2-13b/llama-2-13b-chat-hf/”,设置“datasets/data”目录挂载数据目录“obs://standard-llama2-13b/alpaca/llama2-13B”

    图4 设置挂载数据目录

  5. 输入启动命令。

    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

  6. 单击“提交作业”完成作业创建,待作业运行完成后,在输出挂载目录下生成转换后的数据文件。
分享:

    相关文档

    相关产品