云服务器内容精选

  • 下载数据 SFT全参微调涉及的数据下载地址:https://huggingface.co/datasets/tatsu-lab/alpaca/resolve/main/data/train-00000-of-00001-a09b74b3ef9c3b56.parquet 如果在准备数据章节已下载数据集,此处无需重复操作。 SFT全参微调和LoRA微调训练使用的是同一个数据集,数据处理一次即可,训练时可以共用。
  • 数据预处理说明 使用数据预处理脚本preprocess_data.py脚本重新生成.bin和.idx格式的SFT全参微调数据。preprocess_data.py存放在6.3.904-Ascend/llm_train/AscendSpeed/ModelLink/tools目录中,脚本具体内容如下。 #加载ascendspeed及megatron模型: export PYTHONPATH=$PYTHONPATH:/home/ma-user/ws/6.3.904-Ascend/llm_train/AscendSpeed/AscendSpeed export PYTHONPATH=$PYTHONPATH:/home/ma-user/ws/6.3.904-Ascend/llm_train/AscendSpeed/ModelLink #进入到ModelLink目录下: cd /home/ma-user/ws/6.3.904-Ascend/llm_train/AscendSpeed/ModelLink/ #执行以下命令: python ./tools/preprocess_data.py \ --input /home/ma-user/code/train-00000-of-00001-a09b74b3ef9c3b56.parquet \ --tokenizer-name-or-path $TOKENIZER_PATH \ --output-prefix $DATA_PATH \ --workers 8 \ --log-interval 1000 \ --tokenizer-type PretrainedFromHF \ --handler-name GeneralInstructionHandler \ --seq-length 4096 \ --append-eod 参数说明: - input:用于微调的原始数据。 - output-prefix:处理后的数据集保存路径+数据集名称前缀(例如:alpaca-ft)。 - tokenizer-type:tokenizer的类型,可选项有['BertWordPieceLowerCase', 'BertWordPieceCase','GPT2BPETokenizer', 'PretrainedFromHF'],设置为PretrainedFromHF。 - tokenizer-name-or-path:tokenizer的存放路径。 - handler-name:生成数据集的用途,这里是生成的指令数据集,用于微调。 - append-eod:参数用于控制是否在每个输入序列的末尾添加一个特殊的标记。这个标记表示输入序列的结束,可以帮助模型更好地理解和处理长序列 - workers 需要使用的卡数 - seq-length:是一个用于计算序列长度的函数。它接收一个序列作为输入,并返回序列的长度,需和训练时参数保持一致。 输出结果 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
  • 数据处理具体操作 SFT全参微调数据处理具体操作步骤如下。 创建处理后的数据存放目录/home/ma-user/ws/processed_for_ma_input/BaiChuan2-13B/data/finetune/。 cd /home/ma-user/ws/ #进入容器工作目录 mkdir -p processed_for_ma_input/BaiChuan2-13B/data/finetune 进入代码目录“/home/ma-user/ws/6.3.904-Ascend/llm_train/AscendSpeed/ModelLink/”,在代码目录中执行preprocess_data.py脚本处理数据。 此处提供一段实际的数据处理代码示例如下。 #加载ascendspeed及megatron模型: export PYTHONPATH=$PYTHONPATH:/home/ma-user/ws/6.3.904-Ascend/llm_train/AscendSpeed/AscendSpeed export PYTHONPATH=$PYTHONPATH:/home/ma-user/ws/6.3.904-Ascend/llm_train/AscendSpeed/ModelLink #进入到ModelLink目录下: cd /home/ma-user/ws/6.3.904-Ascend/llm_train/AscendSpeed/ModelLink/ #执行以下命令: python ./tools/preprocess_data.py \ --input /home/ma-user/ws/training_data/train-00000-of-00001-a09b74b3ef9c3b56.parquet \ --tokenizer-name-or-path /home/ma-user/ws/tokenizers/BaiChuan2-13B \ --output-prefix /home/ma-user/ws/processed_for_ma_input/BaiChuan2-13B/data/finetune/alpaca_ft \ --workers 8 \ --log-interval 1000 \ --tokenizer-type PretrainedFromHF \ --handler-name GeneralInstructionHandler \ --seq-length 4096 \ --append-eod 数据处理完后,在 /home/ma-user/ws/processed_for_ma_input/BaiChuan2-13B/data/finetune/目录下生成转换后的数据文件。
  • 数据预处理说明 使用数据预处理脚本preprocess_data.py脚本重新生成.bin和.idx格式的SFT全参微调数据。preprocess_data.py存放在xxx-Ascend/llm_train/AscendSpeed/ModelLink/tools目录中,脚本具体内容如下。xxx-Ascend请根据实际目录替换。 #加载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 #进入ModelLink目录 cd /home/ma-user/ws/xxx-Ascend/llm_train/AscendSpeed/ModelLink python ./tools/preprocess_data.py \ --input /home/ma-user/ws/training_data/train-00000-of-00001-a09b74b3ef9c3b56.parquet \ --tokenizer-name-or-path $TOKENIZER_PATH \ --output-prefix $DATASET_PATH\ --tokenizer-type PretrainedFromHF \ --workers 8 \ --handler-name GeneralInstructionHandler \ --log-interval 1000 \ --append-eod 参数说明: - input:SFT全参微调数据的存放路径。 - output-prefix:处理后的数据集保存路径+数据集名称前缀(例如:alpaca_ft)。 - tokenizer-type:tokenizer的类型,可选项有['BertWordPieceLowerCase', 'BertWordPieceCase','GPT2BPETokenizer', 'PretrainedFromHF'],设置为PretrainedFromHF。 - tokenizer-name-or-path:tokenizer的存放路径。 - handler-name:生成数据集的用途,这里是生成的指令数据集,用于微调。 - workers:数据处理线程数。 -append-eod:用于控制是否在每个输入序列的末尾添加一个特殊的标记。这个标记表示输入序列结束,可以帮助模型更好地理解和处理长序列。 - 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
  • 下载数据 SFT全参微调涉及的数据下载地址:https://huggingface.co/datasets/tatsu-lab/alpaca/resolve/main/data/train-00000-of-00001-a09b74b3ef9c3b56.parquet 如果在准备数据章节已下载数据集,此处无需重复操作。 SFT全参微调和LoRA微调训练使用的是同一个数据集,数据处理一次即可,训练时可以共用。
  • 数据处理具体操作 SFT全参微调数据处理具体操作步骤如下。 创建处理后的数据存放目录/home/ma-user/ws/processed_for_ma_input/Llama2-70B/data/finetune/ cd /home/ma-user/ws/ #进入容器工作目录 mkdir -p processed_for_ma_input/Llama2-70B/data/finetune 进入代码目录“/home/ma-user/ws/xxx-Ascend/llm_train/AscendSpeed/ModelLink/”,在代码目录中执行preprocess_data.py脚本处理数据。 此处提供一段实际的数据处理代码示例如下。 #进入到ModelLink目录下,xxx-Ascend请根据实际目录替换。 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/train-00000-of-00001-a09b74b3ef9c3b56.parquet \ --tokenizer-name-or-path /home/ma-user/ws/tokenizers/Llama2-70B \ --output-prefix /home/ma-user/ws/processed_for_ma_input/Llama2-70B/data/finetune/alpaca_ft \ --workers 8 \ --log-interval 1000 \ --tokenizer-type PretrainedFromHF \ --handler-name GeneralInstructionHandler \ --append-eod 数据处理完后,在/home/ma-user/ws/processed_for_ma_input/Llama2-70B/data/finetune/目录下生成转换后的数据文件。
  • HuggingFace权重转换操作 下载Llama2-13b的预训练权重和词表文件,并上传到/home/ma-user/ws/tokenizers/llama2-13b-hf目录下。具体下载地址请参见表1。如果已下载,忽略此步骤。 创建权重转换后的输出目录/home/ma-user/ws/weight/llama2-13b-ckpt/。 cd /home/ma-user/ws/ #进入/home/ma-user/ws/目录 mkdir -p weight/llama2-13b-ckpt 进入代码目录/home/ma-user/ws/AscendCloud-3rdLLM-6.3.902/llm_train/AscendSpeed/,在代码目录中执行convert_weights_from_huggingface.py脚本。 export PYTHONPATH=$PYTHONPATH:/home/ma-user/ws/AscendCloud-3rdLLM-6.3.902/llm_train/AscendSpeed/ModelLink cd /home/ma-user/ws/AscendCloud-3rdLLM-6.3.902/llm_train/AscendSpeed/ModelLink # 权重格式转换 python tools/ckpt_convert/llama/convert_weights_from_huggingface.py \ --input-model-dir /home/ma-user/ws/tokenizers/llama2-13b-hf \ # 输入权重文件夹 --output-model-dir /home/ma-user/ws/weight/llama2-13b-ckpt \ #转换之后的权重输出路径 --tensor-model-parallel-size 8 \ #tp需要与训练脚本中的配置一样 --pipeline-model-parallel-size 1 \ # pp需要与训练脚本中的配置一样 --type 13B \ #模型类型(13B) --merge-mlp 权重转换完成后,在/home/ma-user/ws/weight/llama2-13b-ckpt目录下查看转换后的权重文件。 图1 转换后的权重文件