AI开发平台MODELARTS-SFT微调数据处理:数据预处理说明

时间:2024-11-05 09:54:17

数据预处理说明

使用数据预处理脚本preprocess_data.py脚本重新生成.bin和.idx格式的SFT全参微调数据。preprocess_data.py存放在llm_train/AscendSpeed/ModelLink/tools目录中,脚本具体内容如下。

#进入ModelLink目录
cd /home/ma-user/ws/xxx-Ascend/llm_train/AscendSpeed/ModelLink
#加载ascendspeed及megatron模型 
export PYTHONPATH=$PYTHONPATH:/home/ma-user/ws/xxx-Ascend/llm_train/AscendSpeed/AscendSpeed
export PYTHONPATH=$PYTHONPATH:/home/ma-user/ws/xxx-Ascend/llm_train/AscendSpeed/ModelLink
#执行以下命令
python ./tools/preprocess_data.py \
     --input /home/ma-user/ws/training_data/finetune/alpaca_gpt4_data.json \
     --tokenizer-name-or-path $TOKENIZER_PATH \
     --output-prefix $DATASET_PATH\
     --tokenizer-type PretrainedFromHF \
     --seq-length 4096 \
     --workers 8 \
     --handler-name GeneralInstructionHandler \
     --make-vocab-size-divisible-by 128 \
     --log-interval 1000

参数说明:

- input:SFT微调数据的存放路径。

- output-prefix:处理后的数据集保存路径+数据集名称前缀(例如:alpaca_ft)。

- tokenizer-type:tokenizer的类型,可选项有['BertWordPieceLowerCase', 'BertWordPieceCase','GPT2BPETokenizer', 'PretrainedFromHF'],设置为PretrainedFromHF。

- tokenizer-name-or-path:tokenizer的存放路径。

- handler-name:生成数据集的用途,这里是生成的指令数据集,用于微调。

- seq-length:是一个用于计算序列长度的函数。它接收一个序列作为输入,并返回序列的长度,需和训练时参数保持一致。

- workers:数据处理线程数。

--make-vocab-size-divisible-by:填充词汇大小,使模型中padded-vocab-size的值可被该值整除。这是出于计算效率的原因而添加的。

- log-interval:输出处理日志刷新间隔。

输出结果

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

support.huaweicloud.com/bestpractice-modelarts/modelarts_10_1652.html