训练的数据集预处理说明
以 llama2-13b 举例,使用训练作业运行:0_pl_pretrain_13b.sh 训练脚本后,脚本检查是否已经完成数据集预处理。
如果已完成数据集预处理,则直接执行预训练任务。若未进行数据集预处理,则会自动执行 scripts/llama2/1_preprocess_data.sh 。
预训练数据集预处理参数说明
预训练数据集预处理脚本 scripts/llama2/1_preprocess_data.sh 中的具体参数如下:
- --input:原始数据集的存放路径。
- --output-prefix:处理后的数据集保存路径+数据集名称(例如:alpaca_gpt4_data)。
- --tokenizer-type:tokenizer的类型,可选项有['BertWordPieceLowerCase','BertWordPieceCase','GPT2BPETokenizer','PretrainedFromHF'],一般为PretrainedFromHF。
- --tokenizer-name-or-path:tokenizer的存放路径,与HF权重存放在一个文件夹下。
- --seq-length:要处理的最大seq length。
- --workers:设置数据处理使用执行卡数量 / 启动的工作进程数。
- --log-interval:是一个用于设置日志输出间隔的参数,表示输出日志的频率。在训练大规模模型时,可以通过设置这个参数来控制日志的输出。
输出数据预处理结果路径:
训练完成后,以 llama2-13b 为例,输出数据路径为:/home/ma-user/work/llm_train/processed_for_input/llama2-13b/data/pretrain/
微调数据集预处理参数说明
微调包含SFT和LoRA微调。数据集预处理脚本参数说明如下:
- --input:原始数据集的存放路径。
- --output-prefix:处理后的数据集保存路径+数据集名称(例如:alpaca_gpt4_data)
- --tokenizer-type:tokenizer的类型,可选项有['BertWordPieceLowerCase','BertWordPieceCase','GPT2BPETokenizer','PretrainedFromHF'],一般为PretrainedFromHF。
- --tokenizer-name-or-path:tokenizer的存放路径,与HF权重存放在一个文件夹下。
- --handler-name:生成数据集的用途,这里是生成的指令数据集,用于微调。
- GeneralPretrainHandler:默认。用于预训练时的数据预处理过程中,将数据集根据key值进行简单的过滤。
- GeneralInstructionHandler:用于sft、lora微调时的数据预处理过程中,会对数据集full_prompt中的user_prompt进行mask操作。
- --seq-length:要处理的最大seq length。
- --workers:设置数据处理使用执行卡数量 / 启动的工作进程数。
- --log-interval:是一个用于设置日志输出间隔的参数,表示输出日志的频率。在训练大规模模型时,可以通过设置这个参数来控制日志的输出。
输出数据预处理结果路径:
训练完成后,以llama2-13b为例,输出数据路径为:/home/ma-user/work/llm_train/processed_for_input/llama2-13b/data/finetune/
用户自定义执行数据处理脚本修改参数说明
若用户要自定义数据处理脚本并且单独执行,同样以 llama2 为例。
- 方法一:用户可打开scripts/llama2/1_preprocess_data.sh脚本,将执行的python命令复制下来,修改环境变量的值。在Notebook进入到 /home/ma-user/work/llm_train/AscendSpeed/ModelLink 路径中,再执行python命令。
- 方法二:用户在Notebook中直接编辑scripts/llama2/1_preprocess_data.sh脚本,自定义环境变量的值,并在脚本的首行中添加 cd /home/ma-user/work/llm_train/AscendSpeed/ModelLink 命令,随后在Notebook中运行该脚本。
其中环境变量详细介绍如下:
环境变量 |
示例 |
参数说明 |
---|---|---|
RUN_TYPE |
pretrain、sft、lora |
数据预处理区分: 预训练场景下数据预处理,默认参数:pretrain 微调场景下数据预处理,默认:sft / lora |
ORIGINAL_TRAIN_DATA_PATH |
/home/ma-user/work/training_data/finetune/moss_LossCompare.jsonl |
原始数据集的存放路径。 |
TOKENIZER_PATH |
/home/ma-user/work/model/llama-2-13b-chat-hf |
tokenizer的存放路径,与HF权重存放在一个文件夹下。请根据实际规划修改。 |
PROCESSED_DATA_PREFIX |
/home/ma-user/work/llm_train/processed_for_input/llama2-13b/data/pretrain/alpaca |
处理后的数据集保存路径+数据集前缀。 |
TOKENIZER_TYPE |
PretrainedFromHF |
可选项有:['BertWordPieceLowerCase','BertWordPieceCase','GPT2BPETokenizer','PretrainedFromHF'],一般为 PretrainedFromHF 。 |
SEQ_LEN |
4096 |
要处理的最大seq length。脚本会检测超出SEQ_LEN长度的数据,并打印log。 |