华为云用户手册

  • HuggingFace转Megatron参数说明 --model-type:模型类型。 --loader:选择对应加载模型脚本的名称。 --saver:选择模型保存脚本的名称。 --tensor-model-parallel-size:${TP}张量并行数,需要与训练脚本中的TP值配置一样。 --pipeline-model-parallel-size:${PP}流水线并行数,需要与训练脚本中的PP值配置一样。 --load-dir:加载转换模型权重路径。 --save-dir : 权重转换完成之后保存路径。 --tokenizer-model : tokenizer路径。
  • 用户自定义执行数据处理脚本修改参数说明 如果用户要自定义数据处理脚本并且单独执行,同样以 llama2 为例。 方法一:用户可打开scripts/llama2/1_preprocess_data.sh脚本,将执行的python命令复制下来,修改环境变量的值,进入到 /home/ma-user/ws/llm_train/AscendSpeed/ModelLink 路径中,再执行python命令。 方法二:用户直接编辑scripts/llama2/1_preprocess_data.sh脚本,自定义环境变量的值,并在脚本的首行中添加 cd /home/ma-user/ws/llm_train/AscendSpeed/ModelLink 命令,随后运行该脚本。 其中环境变量详细介绍如下: 表1 数据预处理中的环境变量 环境变量 示例 参数说明 RUN_TYPE pretrain、sft、lora 数据预处理区分: 预训练场景下数据预处理,默认参数:pretrain 微调场景下数据预处理,默认:sft / lora ORIGINAL_TRAIN_DATA_PATH /home/ma-user/ws/llm_train/AscendSpeed/training_data/${用户自定义的数据集路径和名称} 原始数据集的存放路径。 TOKENIZER_PATH /home/ma-user/ws/llm_train/AscendSpeed/tokenizers/llama2-13b tokenizer的存放路径,与HF权重存放在一个文件夹下。请根据实际规划修改。 PRO CES SED_DATA_PREFIX /home/ma-user/ws/llm_train/AscendSpeed/processed_for_input/llama2-13b/data 处理后的数据集保存路径+数据集前缀 TOKENIZER_TYPE PretrainedFromHF 可选项有:['BertWordPieceLowerCase','BertWordPieceCase','GPT2BPETokenizer','PretrainedFromHF'],一般为 PretrainedFromHF 。 SEQ_LEN 4096 要处理的最大seq length。脚本会检测超出SEQ_LEN长度的数据,并打印log。
  • 微调数据集预处理参数说明 微调包含SFT和LoRA微调。数据集预处理脚本参数说明如下: --input:原始数据集的存放路径。 --output-prefix:处理后的数据集保存路径+数据集名称(例如:moss-003-sft-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/ws/llm_train/AscendSpeed/processed_for_input/llama2-13b/data/finetune/
  • 预训练数据集预处理参数说明 预训练数据集预处理脚本scripts/llama2/1_preprocess_data.sh 中的具体参数如下: --input:原始数据集的存放路径。 --output-prefix:处理后的数据集保存路径+数据集名称(例如:moss-003-sft-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/ws/llm_train/AscendSpeed/processed_for_input/llama2-13b/data/pretrain/
  • 网卡名称错误 当训练开始时提示网卡名称错误。或者通信超时。可以使用ifconfig命令检查网卡名称配置是否正确。 比如,ifconfig看到当前机器IP对应的网卡名称为enp67s0f5,则可以设置环境变量指定该值。 export GLOO_SOCKET_IFNAME=enp67s0f5 # 多机之间使用gloo通信时需要指定网口名称, export TP_SOCKET_IFNAME=enp67s0f5 # 多机之间使用TP通信时需要指定网口名称 export HCCL_SOCKET_IFNAME=enp67s0f5 # 多机之间使用HCCL通信时需要指定网口名称 关于环境变量的解释可以参考:Distributed communication package - torch.distributed — PyTorch 2.3 documentation 父主题: 常见错误原因和解决方法
  • Yi模型 在使用Yi模型的chat版本时,由于transformer 4.38版本的bug,导致在读取tokenizer文件时,加载的vocab_size出现类似如下尺寸不匹配的问题。 RuntimeError: Error(s) in loading state_dict for VocabParallelEmbedding: size mismatch for weight: copying a param with shape torch.Size([64000, 4096]) from checkpoint, the shape in current model is torch.Size([63992, 4096]). 需要在训练开始前,修改llm_train/AscendSpeed/yi/3_training.sh文件,并添加--tokenizer-not-use-fast参数。修改后如图1所示。 图1 修改Yi 模型3_training.sh文件
  • ChatGLMv3-6B 在训练开始前,针对ChatGLMv3-6B模型中的tokenizer文件,需要修改代码。修改文件chatglm3-6b/tokenization_chatglm.py 。 文件最后几处代码中需要修改,具体位置可根据上下文代码信息进行查找,修改后如图所示。 图2 修改ChatGLMv3-6B tokenizer文件 图3 修改ChatGLMv3-6B tokenizer文件
  • 模型推荐的参数与NPU卡数设置 不同模型推荐的训练参数和计算规格要求如表2所示。规格与节点数中的1*节点 & 4*Ascend表示单机4卡,以此类推。 表2 不同模型推荐的参数与NPU卡数设置 序号 支持模型 支持模型参数量 训练策略类型 文本序列长度(SEQ_LEN) 并行参数设置 micro batch size (MBS) 规格与节点数 1 llama2 llama2-7b pretrain/sft 4096 TP(tensor model parallel size)=1 PP(pipeline model parallel size)=4 1 1*节点 & 8*Ascend lora TP(tensor model parallel size)=1 PP(pipeline model parallel size)=4 2 1*节点 & 8*Ascend pretrain/sft 8192 TP(tensor model parallel size)=2 PP(pipeline model parallel size)=4 1 1*节点 & 8*Ascend lora TP(tensor model parallel size)=2 PP(pipeline model parallel size)=4 2 1*节点 & 8*Ascend 2 llama2-13b pretrain/sft 4096 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=1 4 1*节点 & 8*Ascend lora TP(tensor model parallel size)=8 PP(pipeline model parallel size)=1 4 1*节点 & 8*Ascend pretrain/sft 8192 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=1 2 1*节点 & 8*Ascend lora TP(tensor model parallel size)=8 PP(pipeline model parallel size)=1 2 1*节点 & 8*Ascend 3 llama2-70b pretrain/sft 4096 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=4 1 4*节点 & 8*Ascend lora TP(tensor model parallel size)=8 PP(pipeline model parallel size)=4 2 4*节点 & 8*Ascend pretrain/sft 8192 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=8 1 8*节点 & 8*Ascend lora TP(tensor model parallel size)=8 PP(pipeline model parallel size)=4 1 4*节点 & 8*Ascend 4 llama3 llama3-8b pretrain/sft 4096 TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 2 1*节点 & 8*Ascend lora TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 4 1*节点 & 8*Ascend pretrain/sft 8192 TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 1 1*节点 & 8*Ascend lora TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 2 1*节点 & 8*Ascend 5 llama3-70b pretrain/sft 4096 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=4 1 4*节点 & 8*Ascend lora TP(tensor model parallel size)=8 PP(pipeline model parallel size)=4 2 4*节点 & 8*Ascend pretrain/sft 8192 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=8 1 8*节点 & 8*Ascend lora TP(tensor model parallel size)=8 PP(pipeline model parallel size)=4 1 4*节点 & 8*Ascend 6 Qwen qwen-7b pretrain/sft 4096 TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 2 1*节点 & 8*Ascend lora TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 4 1*节点 & 8*Ascend pretrain/sft 8192 TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 1 1*节点 & 8*Ascend lora TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 2 1*节点 & 8*Ascend 7 qwen-14b pretrain/sft 4096 TP(tensor model parallel size)=4 PP(pipeline model parallel size)=2 2 1*节点 & 8*Ascend lora TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 2 1*节点 & 8*Ascend pretrain/sft 8192 TP(tensor model parallel size)=4 PP(pipeline model parallel size)=2 1 1*节点 & 8*Ascend lora TP(tensor model parallel size)=4 PP(pipeline model parallel size)=2 2 1*节点 & 8*Ascend 8 qwen-72b pretrain/sft 4096 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=4 1 4*节点 & 8*Ascend lora TP(tensor model parallel size)=8 PP(pipeline model parallel size)=4 2 4*节点 & 8*Ascend pretrain/sft 8192 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=8 1 8*节点 & 8*Ascend lora TP(tensor model parallel size)=8 PP(pipeline model parallel size)=4 1 4*节点 & 8*Ascend 9 Qwen1.5 qwen1.5-7b pretrain/sft 4096 TP(tensor model parallel size)=1 PP(pipeline model parallel size)=4 1 1*节点 & 8*Ascend lora TP(tensor model parallel size)=1 PP(pipeline model parallel size)=4 2 1*节点 & 8*Ascend pretrain/sft 8192 TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 1 1*节点 & 8*Ascend lora TP(tensor model parallel size)=1 PP(pipeline model parallel size)=4 1 1*节点 & 8*Ascend 10 qwen1.5-14b pretrain/sft 4096 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=1 4 1*节点 & 8*Ascend lora TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 4 1*节点 & 8*Ascend pretrain/sft 8192 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=1 2 1*节点 & 8*Ascend lora TP(tensor model parallel size)=8 PP(pipeline model parallel size)=1 2 1*节点 & 8*Ascend 11 qwen1.5-32b pretrain/sft 4096 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=2 2 2*节点 & 8*Ascend lora TP(tensor model parallel size)=8 PP(pipeline model parallel size)=2 4 2*节点 & 8*Ascend pretrain/sft 8192 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=2 1 2*节点 & 8*Ascend lora TP(tensor model parallel size)=8 PP(pipeline model parallel size)=2 2 2*节点 & 8*Ascend 12 qwen1.5-72b pretrain/sft 4096 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=4 1 4*节点 & 8*Ascend lora TP(tensor model parallel size)=8 PP(pipeline model parallel size)=4 2 4*节点 & 8*Ascend pretrain/sft 8192 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=8 1 8*节点 & 8*Ascend lora TP(tensor model parallel size)=8 PP(pipeline model parallel size)=4 1 4*节点 & 8*Ascend 13 Yi yi-6b pretrain/sft 4096 TP(tensor model parallel size)=1 PP(pipeline model parallel size)=4 1 1*节点 & 8*Ascend lora TP(tensor model parallel size)=1 PP(pipeline model parallel size)=4 2 1*节点 & 8*Ascend pretrain/sft 8192 TP(tensor model parallel size)=2 PP(pipeline model parallel size)=2 1 1*节点 & 8*Ascend lora TP(tensor model parallel size)=1 PP(pipeline model parallel size)=4 1 1*节点 & 8*Ascend 14 yi-34b pretrain/sft 4096 TP(tensor model parallel size)=4 PP(pipeline model parallel size)=4 1 2*节点 & 8*Ascend lora TP(tensor model parallel size)=4 PP(pipeline model parallel size)=4 2 2*节点 & 8*Ascend pretrain/sft 8192 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=4 1 4*节点 & 8*Ascend lora TP(tensor model parallel size)=8 PP(pipeline model parallel size)=4 2 4*节点 & 8*Ascend 15 ChatGLMv3 glm3-6b pretrain/sft 4096 TP(tensor model parallel size)=1 PP(pipeline model parallel size)=2 1 1*节点 & 4*Ascend lora TP(tensor model parallel size)=1 PP(pipeline model parallel size)=2 2 1*节点 & 4*Ascend pretrain/sft 8192 TP(tensor model parallel size)=1 PP(pipeline model parallel size)=4 1 1*节点 & 4*Ascend lora TP(tensor model parallel size)=1 PP(pipeline model parallel size)=2 1 1*节点 & 4*Ascend 16 Baichuan2 baichuan2-13b pretrain/sft 4096 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=1 2 1*节点 & 8*Ascend lora TP(tensor model parallel size)=8 PP(pipeline model parallel size)=1 4 1*节点 & 8*Ascend pretrain/sft 8192 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=2 1 1*节点 & 8*Ascend lora TP(tensor model parallel size)=8 PP(pipeline model parallel size)=1 1 2*节点 & 8*Ascend 17 Qwen2 qwen2-0.5b pretrain/sft 4096 TP(tensor model parallel size)=1 PP(pipeline model parallel size)=1 2 1*节点 & 4*Ascend lora TP(tensor model parallel size)=1 PP(pipeline model parallel size)=1 2 1*节点 & 4*Ascend pretrain/sft 8192 TP(tensor model parallel size)=1 PP(pipeline model parallel size)=1 1 1*节点 & 4*Ascend lora TP(tensor model parallel size)=1 PP(pipeline model parallel size)=1 1 1*节点 & 4*Ascend 18 qwen2-1.5b pretrain/sft 4096 TP(tensor model parallel size)=1 PP(pipeline model parallel size)=1 2 1*节点 & 4*Ascend lora TP(tensor model parallel size)=1 PP(pipeline model parallel size)=1 2 1*节点 & 4*Ascend pretrain/sft 8192 TP(tensor model parallel size)=1 PP(pipeline model parallel size)=1 1 1*节点 & 4*Ascend lora TP(tensor model parallel size)=1 PP(pipeline model parallel size)=1 1 1*节点 & 4*Ascend 19 qwen2-7b pretrain/sft 4096 TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 2 1*节点 & 8*Ascend lora TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 2 1*节点 & 8*Ascend pretrain/sft 8192 TP(tensor model parallel size)=4 PP(pipeline model parallel size)=2 1 1*节点 & 8*Ascend lora TP(tensor model parallel size)=4 PP(pipeline model parallel size)=2 2 1*节点 & 8*Ascend 20 qwen2-72b pretrain/sft 4096 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=4 1 4*节点 & 8*Ascend lora TP(tensor model parallel size)=8 PP(pipeline model parallel size)=4 2 4*节点 & 8*Ascend pretrain/sft 8192 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=8 1 8*节点 & 8*Ascend lora TP(tensor model parallel size)=8 PP(pipeline model parallel size)=8 1 8*节点 & 8*Ascend 21 GLMv4 glm4-9b pretrain/sft 4096 TP(tensor model parallel size)=1 PP(pipeline model parallel size)=4 1 1*节点 & 8*Ascend lora TP(tensor model parallel size)=1 PP(pipeline model parallel size)=2 1 1*节点 & 4*Ascend pretrain/sft 8192 TP(tensor model parallel size)=2 PP(pipeline model parallel size)=2 1 1*节点 & 8*Ascend lora TP(tensor model parallel size)=2 PP(pipeline model parallel size)=1 1 1*节点 & 4*Ascend 22 mistral mistral-7b pretrain/sft 4096 TP(tensor model parallel size)=1 PP(pipeline model parallel size)=4 1 1*节点 & 8*Ascend lora TP(tensor model parallel size)=1 PP(pipeline model parallel size)=4 2 1*节点 & 8*Ascend 23 mixtral mixtral-8x7b pretrain/sft 4096 TP(tensor model parallel size)=2 PP(pipeline model parallel size)=8 1 2*节点 & 8*Ascend pretrain/sft 8192 TP(tensor model parallel size)=2 PP(pipeline model parallel size)=8 1 2*节点 & 8*Ascend 24 llama3.1 llama3.1-8b pretrain/sft 4096 TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 2 1*节点 & 8*Ascend lora TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 4 1*节点 & 8*Ascend pretrain/sft 8192 TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 1 1*节点 & 8*Ascend lora TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 2 1*节点 & 8*Ascend 25 llama3.1-70b pretrain/sft 4096 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=4 1 4*节点 & 8*Ascend lora TP(tensor model parallel size)=8 PP(pipeline model parallel size)=2 4 2*节点 & 8*Ascend pretrain/sft 8192 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=8 1 8*节点 & 8*Ascend lora TP(tensor model parallel size)=8 PP(pipeline model parallel size)=2 2 2*节点 & 8*Ascend 26 Qwen2.5 qwen2.5-0.5b pretrain/sft 4096 TP(tensor model parallel size)=1 PP(pipeline model parallel size)=1 1 1*节点 & 4*Ascend lora TP(tensor model parallel size)=1 PP(pipeline model parallel size)=1 2 1*节点 & 4*Ascend pretrain/sft 8192 TP(tensor model parallel size)=1 PP(pipeline model parallel size)=1 1 1*节点 & 4*Ascend lora TP(tensor model parallel size)=1 PP(pipeline model parallel size)=1 1 1*节点 & 4*Ascend 27 qwen2.5-7b pretrain/sft 4096 TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 2 1*节点 & 8*Ascend lora TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 4 1*节点 & 8*Ascend pretrain/sft 8192 TP(tensor model parallel size)=4 PP(pipeline model parallel size)=2 1 1*节点 & 8*Ascend lora TP(tensor model parallel size)=4 PP(pipeline model parallel size)=2 2 1*节点 & 8*Ascend 28 qwen2.5-14b pretrain/sft 4096 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=1 4 1*节点 & 8*Ascend lora TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 4 1*节点 & 8*Ascend pretrain/sft 8192 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=1 2 1*节点 & 8*Ascend lora TP(tensor model parallel size)=8 PP(pipeline model parallel size)=1 2 1*节点 & 8*Ascend 29 qwen2.5-32b pretrain/sft 4096 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=2 2 2*节点 & 8*Ascend lora TP(tensor model parallel size)=8 PP(pipeline model parallel size)=2 4 2*节点 & 8*Ascend pretrain/sft 8192 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=2 1 2*节点 & 8*Ascend lora TP(tensor model parallel size)=8 PP(pipeline model parallel size)=2 2 2*节点 & 8*Ascend 30 qwen2.5-72b pretrain/sft 4096 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=4 1 4*节点 & 8*Ascend lora TP(tensor model parallel size)=8 PP(pipeline model parallel size)=4 4 4*节点 & 8*Ascend pretrain/sft 8192 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=8 1 8*节点 & 8*Ascend lora TP(tensor model parallel size)=8 PP(pipeline model parallel size)=4 2 4*节点 & 8*Ascend 31 llama3.2 llama3.2-1b pretrain/sft 4096 TP(tensor model parallel size)=1 PP(pipeline model parallel size)=1 2 1*节点 & 4*Ascend lora TP(tensor model parallel size)=1 PP(pipeline model parallel size)=1 2 1*节点 & 4*Ascend pretrain/sft 8192 TP(tensor model parallel size)=1 PP(pipeline model parallel size)=1 1 1*节点 & 4*Ascend lora TP(tensor model parallel size)=1 PP(pipeline model parallel size)=1 1 1*节点 & 4*Ascend 32 llama3.2-3b pretrain/sft 4096 TP(tensor model parallel size)=1 PP(pipeline model parallel size)=2 2 1*节点 & 4*Ascend lora TP(tensor model parallel size)=1 PP(pipeline model parallel size)=1 2 1*节点 & 4*Ascend pretrain/sft 8192 TP(tensor model parallel size)=1 PP(pipeline model parallel size)=2 1 1*节点 & 4*Ascend lora TP(tensor model parallel size)=1 PP(pipeline model parallel size)=1 1 1*节点 & 4*Ascend
  • Megatron转HuggingFace参数说明 训练完成的权重文件默认不会自动转换为Hugging Face格式权重。如果用户需要自动转换,则在运行脚本,例如0_pl_pretrain_13b.sh中,添加变量CONVERT_MG2HF并赋值TRUE。如果用户后续不需要自动转换,则在运行脚本中必须删除CONVERT_MG2HF变量。 Megatron转HuggingFace脚本具体参数如下: --model-type:模型类型。 --save-model-type:输出后权重格式。 --load-dir:训练完成后保存的权重路径。 --save-dir:需要填入原始HF模型路径,新权重会存于../Llama2-13B/mg2hg下。 --target-tensor-parallel-size:任务不同调整参数target-tensor-parallel-size,默认为1。 --target-pipeline-parallel-size :任务不同调整参数target-pipeline-parallel-size,默认为1。 输出转换后权重文件保存路径: 权重转换完成后,在/home/ma-user/work/llm_train/saved_dir_for_output/llama2-13b/saved_models/pretrain_hf/目录下查看转换后的权重文件。 权重转换完成后,需要将例如saved_models/pretrain_hf中的文件与原始Hugging Face模型中的文件进行对比,查看是否缺少如tokenizers.json、tokenizer_config.json、special_tokens_map.json等tokenizer文件或者其他json文件。如果缺少则需要直接复制至权重转换后的文件夹中,否则不能直接用于推理。
  • 用户自定义执行权重转换参数修改说明 如果用户要自定义数据处理脚本并且单独执行,同样以 llama2 为例。注意脚本中的python命令分别有Hugging Face 转 Megatron格式,以及Megatron 转 Hugging Face格式,而脚本使用hf2hg、mg2hf参数传递来区分。 方法一:用户可打开scripts/llama2/2_convert_mg_hf.sh脚本,将执行的python命令复制下来,修改环境变量的值。在Notebook进入到 /home/ma-user/work/llm_train/AscendSpeed/ModelLink 路径中,再执行python命令。 方法二:用户在Notebook直接编辑scripts/llama2/2_convert_mg_hf.sh脚本,自定义环境变量的值,并在脚本的首行中添加 cd /home/ma-user/work/llm_train/AscendSpeed/ModelLink 命令,随后在Notebook中运行该脚本。 其中环境变量详细介绍如下: 表1 权重转换脚本中的环境变量 参数 示例 参数说明 $1 hf2hg、mg2hf 运行 2_convert_mg_hf.sh 时,需要附加的参数值。如下: hf2hg:用于Hugging Face 转 Megatron mg2hf:用于Megatron 转 Hugging Face TP 8 张量并行数,一般等于单机卡数 PP 1 流水线并行数,一般等于节点数量 ORIGINAL_HF_WEIGHT /home/ma-user/work/model/Llama2-13B 原始Hugging Face模型路径 CONVERT_MODEL_PATH /home/ma-user/work/llm_train/processed_for_ma_input/llama2-13b/converted_weights_TP8PP1 权重转换完成之后保存路径 TOKENIZER_PATH /home/ma-user/work/model/llama-2-13b-chat-hf tokenizer路径,即:原始Hugging Face模型路径 MODEL_SAVE_PATH /home/ma-user/work/llm_train/saved_dir_for_output/llama2-13b 训练完成后保存的权重路径。
  • HuggingFace转Megatron参数说明 --model-type:模型类型。 --loader:选择对应加载模型脚本的名称。 --saver:选择模型保存脚本的名称。 --tensor-model-parallel-size:${TP}张量并行数,需要与训练脚本中的TP值配置一样。 --pipeline-model-parallel-size:${PP}流水线并行数,需要与训练脚本中的PP值配置一样。 --load-dir:加载转换模型权重路径。 --save-dir : 权重转换完成之后保存路径。 --tokenizer-model : tokenizer路径。
  • 预训练数据集预处理参数说明 预训练数据集预处理脚本 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:原始数据集的存放路径。支持 .parquet \ .csv \ .json \ .jsonl \ .txt \ .arrow 格式。 --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中运行该脚本。 其中环境变量详细介绍如下: 表1 数据预处理中的环境变量 环境变量 示例 参数说明 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。
  • 模型推荐的参数与NPU卡数设置 不同模型推荐的训练参数和计算规格要求如表2所示。规格与节点数中的1*节点 & 4*Ascend表示单机4卡,以此类推。 表2 不同模型推荐的参数与NPU卡数设置 序号 支持模型 支持模型参数量 训练策略类型 文本序列长度(SEQ_LEN) 并行参数设置 micro batch size (MBS) 规格与节点数 1 llama2 llama2-7b pretrain/sft 4096 TP(tensor model parallel size)=1 PP(pipeline model parallel size)=4 1 1*节点 & 8*Ascend lora TP(tensor model parallel size)=1 PP(pipeline model parallel size)=4 2 1*节点 & 8*Ascend pretrain/sft 8192 TP(tensor model parallel size)=2 PP(pipeline model parallel size)=4 1 1*节点 & 8*Ascend lora TP(tensor model parallel size)=2 PP(pipeline model parallel size)=4 2 1*节点 & 8*Ascend 2 llama2-13b pretrain/sft 4096 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=1 4 1*节点 & 8*Ascend lora TP(tensor model parallel size)=8 PP(pipeline model parallel size)=1 4 1*节点 & 8*Ascend pretrain/sft 8192 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=1 2 1*节点 & 8*Ascend lora TP(tensor model parallel size)=8 PP(pipeline model parallel size)=1 2 1*节点 & 8*Ascend 3 llama2-70b pretrain/sft 4096 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=4 1 4*节点 & 8*Ascend lora TP(tensor model parallel size)=8 PP(pipeline model parallel size)=4 2 4*节点 & 8*Ascend pretrain/sft 8192 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=8 1 8*节点 & 8*Ascend lora TP(tensor model parallel size)=8 PP(pipeline model parallel size)=4 1 4*节点 & 8*Ascend 4 llama3 llama3-8b pretrain/sft 4096 TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 2 1*节点 & 8*Ascend lora TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 4 1*节点 & 8*Ascend pretrain/sft 8192 TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 1 1*节点 & 8*Ascend lora TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 2 1*节点 & 8*Ascend 5 llama3-70b pretrain/sft 4096 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=4 1 4*节点 & 8*Ascend lora TP(tensor model parallel size)=8 PP(pipeline model parallel size)=4 2 4*节点 & 8*Ascend pretrain/sft 8192 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=8 1 8*节点 & 8*Ascend lora TP(tensor model parallel size)=8 PP(pipeline model parallel size)=4 1 4*节点 & 8*Ascend 6 Qwen qwen-7b pretrain/sft 4096 TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 2 1*节点 & 8*Ascend lora TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 4 1*节点 & 8*Ascend pretrain/sft 8192 TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 1 1*节点 & 8*Ascend lora TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 2 1*节点 & 8*Ascend 7 qwen-14b pretrain/sft 4096 TP(tensor model parallel size)=4 PP(pipeline model parallel size)=2 2 1*节点 & 8*Ascend lora TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 2 1*节点 & 8*Ascend pretrain/sft 8192 TP(tensor model parallel size)=4 PP(pipeline model parallel size)=2 1 1*节点 & 8*Ascend lora TP(tensor model parallel size)=4 PP(pipeline model parallel size)=2 2 1*节点 & 8*Ascend 8 qwen-72b pretrain/sft 4096 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=4 1 4*节点 & 8*Ascend lora TP(tensor model parallel size)=8 PP(pipeline model parallel size)=4 2 4*节点 & 8*Ascend pretrain/sft 8192 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=8 1 8*节点 & 8*Ascend lora TP(tensor model parallel size)=8 PP(pipeline model parallel size)=4 1 4*节点 & 8*Ascend 9 Qwen1.5 qwen1.5-7b pretrain/sft 4096 TP(tensor model parallel size)=1 PP(pipeline model parallel size)=4 1 1*节点 & 8*Ascend lora TP(tensor model parallel size)=1 PP(pipeline model parallel size)=4 2 1*节点 & 8*Ascend pretrain/sft 8192 TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 1 1*节点 & 8*Ascend lora TP(tensor model parallel size)=1 PP(pipeline model parallel size)=4 1 1*节点 & 8*Ascend 10 qwen1.5-14b pretrain/sft 4096 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=1 4 1*节点 & 8*Ascend lora TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 4 1*节点 & 8*Ascend pretrain/sft 8192 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=1 2 1*节点 & 8*Ascend lora TP(tensor model parallel size)=8 PP(pipeline model parallel size)=1 2 1*节点 & 8*Ascend 11 qwen1.5-32b pretrain/sft 4096 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=2 2 2*节点 & 8*Ascend lora TP(tensor model parallel size)=8 PP(pipeline model parallel size)=2 4 2*节点 & 8*Ascend pretrain/sft 8192 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=2 1 2*节点 & 8*Ascend lora TP(tensor model parallel size)=8 PP(pipeline model parallel size)=2 2 2*节点 & 8*Ascend 12 qwen1.5-72b pretrain/sft 4096 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=4 1 4*节点 & 8*Ascend lora TP(tensor model parallel size)=8 PP(pipeline model parallel size)=4 2 4*节点 & 8*Ascend pretrain/sft 8192 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=8 1 8*节点 & 8*Ascend lora TP(tensor model parallel size)=8 PP(pipeline model parallel size)=4 1 4*节点 & 8*Ascend 13 Yi yi-6b pretrain/sft 4096 TP(tensor model parallel size)=1 PP(pipeline model parallel size)=4 1 1*节点 & 8*Ascend lora TP(tensor model parallel size)=1 PP(pipeline model parallel size)=4 2 1*节点 & 8*Ascend pretrain/sft 8192 TP(tensor model parallel size)=2 PP(pipeline model parallel size)=2 1 1*节点 & 8*Ascend lora TP(tensor model parallel size)=1 PP(pipeline model parallel size)=4 1 1*节点 & 8*Ascend 14 yi-34b pretrain/sft 4096 TP(tensor model parallel size)=4 PP(pipeline model parallel size)=4 1 2*节点 & 8*Ascend lora TP(tensor model parallel size)=4 PP(pipeline model parallel size)=4 2 2*节点 & 8*Ascend pretrain/sft 8192 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=4 1 4*节点 & 8*Ascend lora TP(tensor model parallel size)=8 PP(pipeline model parallel size)=4 2 4*节点 & 8*Ascend 15 ChatGLMv3 glm3-6b pretrain/sft 4096 TP(tensor model parallel size)=1 PP(pipeline model parallel size)=2 1 1*节点 & 4*Ascend lora TP(tensor model parallel size)=1 PP(pipeline model parallel size)=2 2 1*节点 & 4*Ascend pretrain/sft 8192 TP(tensor model parallel size)=1 PP(pipeline model parallel size)=4 1 1*节点 & 4*Ascend lora TP(tensor model parallel size)=1 PP(pipeline model parallel size)=2 1 1*节点 & 4*Ascend 16 Baichuan2 baichuan2-13b pretrain/sft 4096 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=1 2 1*节点 & 8*Ascend lora TP(tensor model parallel size)=8 PP(pipeline model parallel size)=1 4 1*节点 & 8*Ascend pretrain/sft 8192 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=2 1 1*节点 & 8*Ascend lora TP(tensor model parallel size)=8 PP(pipeline model parallel size)=1 1 2*节点 & 8*Ascend 17 Qwen2 qwen2-0.5b pretrain/sft 4096 TP(tensor model parallel size)=1 PP(pipeline model parallel size)=1 2 1*节点 & 4*Ascend lora TP(tensor model parallel size)=1 PP(pipeline model parallel size)=1 2 1*节点 & 4*Ascend pretrain/sft 8192 TP(tensor model parallel size)=1 PP(pipeline model parallel size)=1 1 1*节点 & 4*Ascend lora TP(tensor model parallel size)=1 PP(pipeline model parallel size)=1 1 1*节点 & 4*Ascend 18 qwen2-1.5b pretrain/sft 4096 TP(tensor model parallel size)=1 PP(pipeline model parallel size)=1 2 1*节点 & 4*Ascend lora TP(tensor model parallel size)=1 PP(pipeline model parallel size)=1 2 1*节点 & 4*Ascend pretrain/sft 8192 TP(tensor model parallel size)=1 PP(pipeline model parallel size)=1 1 1*节点 & 4*Ascend lora TP(tensor model parallel size)=1 PP(pipeline model parallel size)=1 1 1*节点 & 4*Ascend 19 qwen2-7b pretrain/sft 4096 TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 2 1*节点 & 8*Ascend lora TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 2 1*节点 & 8*Ascend pretrain/sft 8192 TP(tensor model parallel size)=4 PP(pipeline model parallel size)=2 1 1*节点 & 8*Ascend lora TP(tensor model parallel size)=4 PP(pipeline model parallel size)=2 2 1*节点 & 8*Ascend 20 qwen2-72b pretrain/sft 4096 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=4 1 4*节点 & 8*Ascend lora TP(tensor model parallel size)=8 PP(pipeline model parallel size)=4 2 4*节点 & 8*Ascend pretrain/sft 8192 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=8 1 8*节点 & 8*Ascend lora TP(tensor model parallel size)=8 PP(pipeline model parallel size)=8 1 8*节点 & 8*Ascend 21 GLMv4 glm4-9b pretrain/sft 4096 TP(tensor model parallel size)=1 PP(pipeline model parallel size)=4 1 1*节点 & 8*Ascend lora TP(tensor model parallel size)=1 PP(pipeline model parallel size)=2 1 1*节点 & 4*Ascend pretrain/sft 8192 TP(tensor model parallel size)=2 PP(pipeline model parallel size)=2 1 1*节点 & 8*Ascend lora TP(tensor model parallel size)=2 PP(pipeline model parallel size)=1 1 1*节点 & 4*Ascend 22 mistral mistral-7b pretrain/sft 4096 TP(tensor model parallel size)=1 PP(pipeline model parallel size)=4 1 1*节点 & 8*Ascend lora TP(tensor model parallel size)=1 PP(pipeline model parallel size)=4 2 1*节点 & 8*Ascend 23 mixtral mixtral-8x7b pretrain/sft 4096 TP(tensor model parallel size)=2 PP(pipeline model parallel size)=8 1 2*节点 & 8*Ascend pretrain/sft 8192 TP(tensor model parallel size)=2 PP(pipeline model parallel size)=8 1 2*节点 & 8*Ascend 24 llama3.1 llama3.1-8b pretrain/sft 4096 TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 2 1*节点 & 8*Ascend lora TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 4 1*节点 & 8*Ascend pretrain/sft 8192 TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 1 1*节点 & 8*Ascend lora TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 2 1*节点 & 8*Ascend 25 llama3.1-70b pretrain/sft 4096 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=4 1 4*节点 & 8*Ascend lora TP(tensor model parallel size)=8 PP(pipeline model parallel size)=2 4 2*节点 & 8*Ascend pretrain/sft 8192 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=8 1 8*节点 & 8*Ascend lora TP(tensor model parallel size)=8 PP(pipeline model parallel size)=2 2 2*节点 & 8*Ascend 26 Qwen2.5 qwen2.5-0.5b pretrain/sft 4096 TP(tensor model parallel size)=1 PP(pipeline model parallel size)=1 1 1*节点 & 4*Ascend lora TP(tensor model parallel size)=1 PP(pipeline model parallel size)=1 2 1*节点 & 4*Ascend pretrain/sft 8192 TP(tensor model parallel size)=1 PP(pipeline model parallel size)=1 1 1*节点 & 4*Ascend lora TP(tensor model parallel size)=1 PP(pipeline model parallel size)=1 1 1*节点 & 4*Ascend 27 qwen2.5-7b pretrain/sft 4096 TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 2 1*节点 & 8*Ascend lora TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 4 1*节点 & 8*Ascend pretrain/sft 8192 TP(tensor model parallel size)=4 PP(pipeline model parallel size)=2 1 1*节点 & 8*Ascend lora TP(tensor model parallel size)=4 PP(pipeline model parallel size)=2 2 1*节点 & 8*Ascend 28 qwen2.5-14b pretrain/sft 4096 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=1 4 1*节点 & 8*Ascend lora TP(tensor model parallel size)=4 PP(pipeline model parallel size)=1 4 1*节点 & 8*Ascend pretrain/sft 8192 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=1 2 1*节点 & 8*Ascend lora TP(tensor model parallel size)=8 PP(pipeline model parallel size)=1 2 1*节点 & 8*Ascend 29 qwen2.5-32b pretrain/sft 4096 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=2 2 2*节点 & 8*Ascend lora TP(tensor model parallel size)=8 PP(pipeline model parallel size)=2 4 2*节点 & 8*Ascend pretrain/sft 8192 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=2 1 2*节点 & 8*Ascend lora TP(tensor model parallel size)=8 PP(pipeline model parallel size)=2 2 2*节点 & 8*Ascend 30 qwen2.5-72b pretrain/sft 4096 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=4 1 4*节点 & 8*Ascend lora TP(tensor model parallel size)=8 PP(pipeline model parallel size)=4 4 4*节点 & 8*Ascend pretrain/sft 8192 TP(tensor model parallel size)=8 PP(pipeline model parallel size)=8 1 8*节点 & 8*Ascend lora TP(tensor model parallel size)=8 PP(pipeline model parallel size)=4 2 4*节点 & 8*Ascend 31 llama3.2 llama3.2-1b pretrain/sft 4096 TP(tensor model parallel size)=1 PP(pipeline model parallel size)=1 2 1*节点 & 4*Ascend lora TP(tensor model parallel size)=1 PP(pipeline model parallel size)=1 2 1*节点 & 4*Ascend pretrain/sft 8192 TP(tensor model parallel size)=1 PP(pipeline model parallel size)=1 1 1*节点 & 4*Ascend lora TP(tensor model parallel size)=1 PP(pipeline model parallel size)=1 1 1*节点 & 4*Ascend 32 llama3.2-3b pretrain/sft 4096 TP(tensor model parallel size)=1 PP(pipeline model parallel size)=2 2 1*节点 & 4*Ascend lora TP(tensor model parallel size)=1 PP(pipeline model parallel size)=1 2 1*节点 & 4*Ascend pretrain/sft 8192 TP(tensor model parallel size)=1 PP(pipeline model parallel size)=2 1 1*节点 & 4*Ascend lora TP(tensor model parallel size)=1 PP(pipeline model parallel size)=1 1 1*节点 & 4*Ascend
  • 查看日志和性能 单击作业详情页面,则可查看训练过程中的详细信息。 图1 查看训练作业 在作业详情页的日志页签,查看最后一个节点的日志,其包含“elapsed time per iteration (ms)”数据,可换算为tokens/s/p的性能数据。 吞吐量(tokens/s/p):global batch size*seq_length/(总卡数*elapsed time per iteration)*1000,其global batch size(GBS)、seq_len(SEQ_LEN)为训练时设置的参数 loss收敛情况:日志里存在lm loss参数 ,lm loss参数随着训练迭代周期持续性减小,并逐渐趋于稳定平缓。 图2 查看日志和性能 父主题: 主流开源大模型基于Standard+OBS+SFS适配PyTorch NPU训练指导(6.3.910)
  • Step1 修改训练超参配置 以llama2-13b LORA微调为例,执行脚本0_pl_lora_13b.sh 。 修改模型训练脚本中的超参配置,必须修改的参数如表1所示。其他超参均有默认值,可以参考表1按照实际需求修改。 表1 训练超参配置说明 参数 示例值 参数说明 ORIGINAL_TRAIN_DATA_PATH /home/ma-user/work/training_data/alpaca_gpt4_data.json 必须修改。训练时指定的输入数据路径。请根据实际规划修改。 ORIGINAL_HF_WEIGHT /home/ma-user/work/models/llama-2-13b-chat-hf 必须修改。加载Hugging Face权重(可与tokenizer相同文件夹)时,对应的存放地址。请根据实际规划修改。 TOKENIZER_PATH /home/ma-user/work/tokenizers/llama-2-13b-chat-hf 该参数为tokenizer文件的存放地址。默认与ORIGINAL_HF_WEIGHT路径相同。如果用户需要将Hugging Face权重与tokenizer文件分开存放时,则需要修改参数。 INPUT_PROCESSED_DIR /home/ma-user/work/AscendSpeed/processed_for_input/llama2-13b 该路径下保存“数据转换”和“权重转换”的结果。示例中,默认生成在“processed_for_input”文件夹下。如果用户需要修改,可添加并自定义该变量。 OUTPUT_SAVE_DIR /home/ma-user/work/AscendSpeed/saved_dir_for_output/ 该路径下统一保存生成的 CKPT、P LOG 、LOG 文件。示例中,默认统一保存在“saved_dir_for_output”文件夹下。如果用户需要修改,可添加并自定义该变量。 CKPT_SAVE_PATH /home/ma-user/work/AscendSpeed/saved_dir_for_output/saved_models/llama2-13b 保存训练生成的模型 CKPT 文件。示例中,默认保存在“saved_dir_for_output/saved_models”文件夹下。如果用户需要修改,可添加并自定义该变量。 LOG_SAVE_PATH /home/ma-user/work/AscendSpeed/saved_dir_for_output/saved_models/llama2-13b/log 保存训练过程记录的日志 LOG 文件。示例中,默认保存在“saved_models/llama2-13b/log”文件夹下。如果用户需要修改,可添加并自定义该变量。 ASCEND_PROCESS_LOG_PATH /home/ma-user/work/AscendSpeed/saved_dir_for_output/plog 保存训练过程中记录的程序堆栈信息日志 PLOG 文件。示例中,默认保存在“saved_dir_for_output/plog”文件夹下。如果用户需要修改,可添加并自定义该变量。 SAVE_INTERVAL 10 表示训练间隔多少step,则会保存一次权重文件。 对于Yi系列模型、ChatGLMv3-6B和Qwen系列模型,还需要手动修改训练参数和tokenizer文件,具体请参见训练tokenizer文件说明。
  • Step2 创建LoRA微调训练任务 创建训练作业,并自定义名称、描述等信息。选择自定义算法,启动方式自定义,以及上传的镜像。训练脚本中会自动执行训练前的权重转换操作和数据处理操作。 图1 选择镜像 如果镜像使用使用基础镜像中的基础镜像时,训练作业启动命令中输入: cd /home/ma-user/work/llm_train/AscendSpeed; sh ./scripts/install.sh; sh ./scripts/llama2/0_pl_lora_13b.sh 如果镜像使用E CS 中构建新镜像构建的新镜像时,训练作业启动命令中输入: cd /home/ma-user/work/llm_train/AscendSpeed; sh ./scripts/llama2/0_pl_lora_13b.sh 创建训练作业时,可开启自动重启功能。当环境问题导致训练作业异常时,系统将自动修复异常或隔离节点,并重启训练作业,提高训练成功率。为了避免丢失训练进度、浪费算力。此功能已适配断点续训练。 图2 开启故障重启 断点续训练是通过checkpoint机制实现。checkpoint机制是在模型训练的过程中,不断地保存训练结果(包括但不限于EPOCH、模型权重、优化器状态、调度器状态)。即便模型训练中断,也可以基于checkpoint继续训练。 当训练作业发生故障中断本次作业时,代码可自动从训练中断的位置继续训练,加载中断生成的checkpoint,中间不需要改动任何参数。可以通过训练脚本中的SAVE_INTERVAL参数来指定间隔多少step保存checkpoint。
  • Step1 修改训练超参配置 以llama2-13b SFT微调为例,执行脚本 0_pl_sft_13b.sh 。 修改模型训练脚本中的超参配置,必须修改的参数如表1所示。其他超参均有默认值,可以参考表1按照实际需求修改。 表1 训练超参配置说明 参数 示例值 参数说明 ORIGINAL_TRAIN_DATA_PATH /home/ma-user/work/training_data/alpaca_gpt4_data.json 必须修改。训练时指定的输入数据路径。请根据实际规划修改。 ORIGINAL_HF_WEIGHT /home/ma-user/work/models/llama-2-13b-chat-hf 必须修改。加载Hugging Face权重(可与tokenizer相同文件夹)时,对应的存放地址。请根据实际规划修改。 TOKENIZER_PATH /home/ma-user/work/tokenizers/llama-2-13b-chat-hf 该参数为tokenizer文件的存放地址。默认与ORIGINAL_HF_WEIGHT路径相同。如果用户需要将Hugging Face权重与tokenizer文件分开存放时,则需要修改参数。 INPUT_PROCESSED_DIR /home/ma-user/work/AscendSpeed/processed_for_input/llama2-13b 该路径下保存“数据转换”和“权重转换”的结果。示例中,默认生成在“processed_for_input”文件夹下。如果用户需要修改,可添加并自定义该变量。 OUTPUT_SAVE_DIR /home/ma-user/work/AscendSpeed/saved_dir_for_output/ 该路径下统一保存生成的 CKPT、PLOG、LOG 文件。示例中,默认统一保存在“saved_dir_for_output”文件夹下。如果用户需要修改,可添加并自定义该变量。 CKPT_SAVE_PATH /home/ma-user/work/AscendSpeed/saved_dir_for_output/saved_models/llama2-13b 保存训练生成的模型 CKPT 文件。示例中,默认保存在“saved_dir_for_output/saved_models”文件夹下。如果用户需要修改,可添加并自定义该变量。 LOG_SAVE_PATH /home/ma-user/work/AscendSpeed/saved_dir_for_output/saved_models/llama2-13b/log 保存训练过程记录的日志 LOG 文件。示例中,默认保存在“saved_models/llama2-13b/log”文件夹下。如果用户需要修改,可添加并自定义该变量。 ASCEND_PROCESS_LOG_PATH /home/ma-user/work/AscendSpeed/saved_dir_for_output/plog 保存训练过程中记录的程序堆栈信息日志 PLOG 文件。示例中,默认保存在“saved_dir_for_output/plog”文件夹下。如果用户需要修改,可添加并自定义该变量。 SAVE_INTERVAL 10 表示训练间隔多少step,则会保存一次权重文件。 对于Yi系列模型、ChatGLMv3-6B和Qwen系列模型,还需要手动修改训练参数和tokenizer文件,具体请参见训练tokenizer文件说明。
  • Step2 创建SFT全参微调训练任务 创建训练作业,并自定义名称、描述等信息。选择自定义算法,启动方式自定义,以及上传的镜像。训练脚本中会自动执行训练前的权重转换操作和数据处理操作。 图1 选择镜像 如果镜像使用使用基础镜像中的基础镜像时,训练作业启动命令中输入: cd /home/ma-user/work/llm_train/AscendSpeed; sh ./scripts/install.sh; sh ./scripts/llama2/0_pl_sft_13b.sh 如果镜像使用ECS中构建新镜像构建的新镜像时,训练作业启动命令中输入: cd /home/ma-user/work/llm_train/AscendSpeed; sh ./scripts/llama2/0_pl_sft_13b.sh 创建训练作业时,可开启自动重启功能。当环境问题导致训练作业异常时,系统将自动修复异常或隔离节点,并重启训练作业,提高训练成功率。为了避免丢失训练进度、浪费算力。此功能已适配断点续训练。 图2 开启故障重启 断点续训练是通过checkpoint机制实现。checkpoint机制是在模型训练的过程中,不断地保存训练结果(包括但不限于EPOCH、模型权重、优化器状态、调度器状态)。即便模型训练中断,也可以基于checkpoint继续训练。 当训练作业发生故障中断本次作业时,代码可自动从训练中断的位置继续训练,加载中断生成的checkpoint,中间不需要改动任何参数。可以通过训练脚本中的SAVE_INTERVAL参数来指定间隔多少step保存checkpoint。
  • Step1 修改训练超参配置 以llama2-13b预训练为例,执行脚本0_pl_pretrain_13b.sh。 修改模型训练脚本中的超参配置,必须修改的参数如表1所示。其他超参均有默认值,可以参考表1按照实际需求修改。 表1 训练超参配置说明 参数 示例值 参数说明 ORIGINAL_TRAIN_DATA_PATH /home/ma-user/work/training_data/train-00000-of-00001-a09b74b3ef9c3b56.parquet 必须修改。训练时指定的输入数据路径。请根据实际规划修改。 ORIGINAL_HF_WEIGHT /home/ma-user/work/models/llama-2-13b-chat-hf 必须修改。加载Hugging Face权重(可与tokenizer相同文件夹)时,对应的存放地址。请根据实际规划修改。 TOKENIZER_PATH /home/ma-user/work/tokenizers/llama-2-13b-chat-hf 可添加。该参数为tokenizer文件的存放地址。默认与ORIGINAL_HF_WEIGHT路径相同。如果用户需要将Hugging Face权重与tokenizer文件分开存放时,则需要修改参数。 INPUT_PROCESSED_DIR /home/ma-user/work/AscendSpeed/processed_for_input/llama2-13b 该路径下保存“数据转换”和“权重转换”的结果。示例中,默认生成在“processed_for_input”文件夹下。如果用户需要修改,可添加并自定义该变量。 OUTPUT_SAVE_DIR /home/ma-user/work/AscendSpeed/saved_dir_for_output/ 该路径下统一保存生成的 CKPT、PLOG、LOG 文件。示例中,默认统一保存在“saved_dir_for_output”文件夹下。如果用户需要修改,可添加并自定义该变量。 CKPT_SAVE_PATH /home/ma-user/work/AscendSpeed/saved_dir_for_output/saved_models/llama2-13b 保存训练生成的模型 CKPT 文件。示例中,默认保存在“saved_dir_for_output/saved_models”文件夹下。如果用户需要修改,可添加并自定义该变量。 LOG_SAVE_PATH /home/ma-user/work/AscendSpeed/saved_dir_for_output/saved_models/llama2-13b/log 保存训练过程记录的日志 LOG 文件。示例中,默认保存在“saved_models/llama2-13b/log”文件夹下。如果用户需要修改,可添加并自定义该变量。 ASCEND_PROCESS_LOG_PATH /home/ma-user/work/AscendSpeed/saved_dir_for_output/plog 保存训练过程中记录的程序堆栈信息日志 PLOG 文件。示例中,默认保存在“saved_dir_for_output/plog”文件夹下。如果用户需要修改,可添加并自定义该变量。 SAVE_INTERVAL 10 表示训练间隔多少step,则会保存一次权重文件。 对于Yi系列模型、ChatGLMv3-6B和Qwen系列模型,还需要手动修改训练参数和tokenizer文件,具体请参见训练tokenizer文件说明。
  • Step2 创建预训练任务 创建训练作业,并自定义名称、描述等信息。选择自定义算法,启动方式自定义,以及上传的镜像。训练脚本中会自动执行训练前的权重转换操作和数据处理操作。 图1 选择镜像 如果镜像使用使用基础镜像中的基础镜像时,训练作业启动命令中输入: cd /home/ma-user/work/llm_train/AscendSpeed; sh ./scripts/install.sh; sh ./scripts/llama2/0_pl_pretrain_13b.sh 如果镜像使用ECS中构建新镜像构建的新镜像时,训练作业启动命令中输入: cd /home/ma-user/work/llm_train/AscendSpeed; sh ./scripts/llama2/0_pl_pretrain_13b.sh 创建训练作业时,可开启自动重启功能。当环境问题导致训练作业异常时,系统将自动修复异常或隔离节点,并重启训练作业,提高训练成功率。为了避免丢失训练进度、浪费算力。此功能已适配断点续训练。 图2 开启故障重启 断点续训练是通过checkpoint机制实现。checkpoint机制是在模型训练的过程中,不断地保存训练结果(包括但不限于EPOCH、模型权重、优化器状态、调度器状态)。即便模型训练中断,也可以基于checkpoint继续训练。 当训练作业发生故障中断本次作业时,代码可自动从训练中断的位置继续训练,加载中断生成的checkpoint,中间不需要改动任何参数。可以通过训练脚本中的SAVE_INTERVAL参数来指定间隔多少step保存checkpoint。
  • 使用基础镜像 通过ECS获取和上传基础镜像将镜像上传至SWR服务后,可创建训练作业,在“选择镜像”中选择SWR中基础镜像。 由于基础镜像内需要安装固定版本依赖包,如果直接使用基础镜像进行训练,每次创建训练作业时,训练作业的图1中都需要执行 install.sh文件,来安装依赖以及下载完整代码。 使用基础镜像的方法,需要确认训练作业的资源池是否联通公网,否则执行 install.sh 文件时下载代码会失败。因此可以选择配置网络或使用ECS中构建新镜像的方法。 若要对ChatCLMv3、GLMv4系列模型进行训练时,需要修改 install.sh 中的 transformers 的版本。 由默认 transformers==4.45.0 修改为:transformers==4.44.2 以创建llama2-13b预训练作业为例,执行脚本0_pl_pretrain_13b.sh时,命令如下: cd /home/ma-user/work/llm_train/AscendSpeed; sh ./scripts/install.sh; sh ./scripts/llama2/0_pl_pretrain_13b.sh 创建训练作业后,会在节点机器中使用基础镜像创建docker容器,并在容器内进行分布式训练。而install.sh则会在容器内安装依赖以及下载完整的代码。当训练作业结束后,对应的容器也会同步销毁。 图1 训练作业启动命令 父主题: 准备镜像
  • Step3 安装Docker 检查docker是否安装。 docker -v #检查docker是否安装 如尚未安装,运行以下命令安装docker。 yum install -y docker 配置IP转发,用于容器内的网络访问。执行以下命令查看net.ipv4.ip_forward配置项的值,如果为1,可跳过此步骤。 sysctl -p | grep net.ipv4.ip_forward 如果net.ipv4.ip_forward配置项的值不为1,执行以下命令配置IP转发。 sed -i 's/net\.ipv4\.ip_forward=0/net\.ipv4\.ip_forward=1/g' /etc/sysctl.conf sysctl -p | grep net.ipv4.ip_forward
  • 基础镜像的使用 用户通过ECS获取和上传基础镜像步骤拉取基础镜像并上传至SWR中。随后可通过使用基础镜像、ECS中构建新镜像的方式(可二选一)来部署训练环境。方案的区别如下: 直接使用基础镜像方案:用户可在训练作业中直接选择基础镜像作为运行环境。但基础镜像中pip依赖包缺少或版本不匹配,因此每次创建训练作业时,训练作业的启动命令中都需要执行 install.sh 文件,来安装依赖以及下载完整代码。 ECS中构建新镜像方案:在ECS中,通过运行Dockerfile文件会在基础镜像上创建新的镜像。新镜像命名可自定义。Dockerfile会下载Megatron-LM、MindSpeed、ModelLink源码,并将以上源码打包至镜像环境中。 如果用户希望修改源码,则需要使用新镜像创建容器,在容器内的/home/ma-user工作目录中访问并编辑以上源码文件。编辑完成后重新构建新镜像。 使用以上方案时,都会下载Megatron-LM、MindSpeed、ModelLink源码至AscendSpeed文件夹中。下载后的源码文件结构如下: AscendSpeed/ |──ascendcloud_patch/ # 针对昇腾云平台适配的功能补丁包 |──scripts/ # 训练需要的启动脚本 |——src/ # 启动命令行封装脚本,在install.sh里面自动构建 |──Megatron-LM/ # 适配昇腾的Megatron-LM训练框架 |──MindSpeed/ # MindSpeed昇腾大模型加速库 |──ModelLink/ # ModelLink端到端的大语言模型方案 |——megatron/ # 注意:该文件夹从Megatron-LM中复制得到 |——...
  • 基础镜像地址 本教程中用到的训练的基础镜像地址和配套版本关系如下表所示,请提前了解。 表1 基础容器镜像地址 镜像用途 镜像地址 配套版本 训练基础镜像 swr.cn-southwest-2.myhuaweicloud.com/atelier/pytorch_2_1_ascend:pytorch_2.1.0-cann_8.0.rc3-py_3.9-hce_2.0.2409-aarch64-snt9b-20241112192643-c45ac6b CANN:cann_8.0.rc3 PyTorch:2.1.0
  • 获取模型软件包 本方案支持的模型对应的软件和依赖包获取地址如表1所示。 表1 模型对应的软件包和依赖包获取地址 代码包名称 代码说明 下载地址 AscendCloud-6.3.909-xxx.zip 说明: 软件包名称中的xxx表示时间戳。 包含了本教程中使用到的模型训练代码。代码包具体说明请参见模型软件包结构说明。 获取路径:Support-E,在此路径中查找下载ModelArts 6.3.910 版本。 说明: 如果上述软件获取路径打开后未显示相应的软件信息,说明您没有下载权限,请联系您所在企业的华为方技术支持下载获取。
  • 模型软件包结构说明 AscendCloud-6.3.910代码包中AscendCloud-LLM代码包结构介绍如下,训练脚本以分类的方式集中在scripts文件夹中: |──llm_train # 模型训练代码包 |──AscendSpeed # 基于AscendSpeed的训练代码 |──ascendcloud_patch/ # 针对昇腾云平台适配的功能补丁包 |──scripts/ # 训练需要的启动脚本 |──llama2 # llama2系列模型执行脚本的文件夹 |──llama3 # llama3系列模型执行脚本的文件夹 |──qwen # Qwen系列模型执行脚本的文件夹 |──qwen1.5 # Qwen1.5系列模型执行脚本的文件夹 |── ... |── dev_pipeline.sh # 系列模型共同调用的多功能的脚本 |── install.sh # 环境部署脚本 |——src/ # 启动命令行封装脚本,在install.sh里面自动构建 |──llm_inference # 推理代码包 |──llm_tools # 推理工具
  • 代码上传至SFS Turbo 将AscendSpeed代码包AscendCloud-LLM-xxx.zip直接上传至ECS服务器中的SFS Turbo中,例如存放在/mnt/sfs_turbo/AscendCloud-LLM-xxx.zip目录下并解压缩。 unzip AscendCloud-*.zip 结合准备数据、准备权重、准备代码,将数据集、原始权重、代码文件都上传至SFS Turbo后,目录结构如下。 /mnt/sfs_turbo/ |──llm_train # 解压代码包后自动生成的代码目录,无需用户创建 |── AscendSpeed # 代码目录 |──ascendcloud_patch/ # 针对昇腾云平台适配的功能代码包 |──scripts/ # 训练需要的启动脚本 # 自动生成数据目录结构 |── processed_for_input # 目录结构会自动生成,无需用户创建 |── ${model_name} # 模型名称 |── data # 预处理后数据 |── pretrain # 预训练加载的数据 |── finetune # 微调加载的数据 |──converted_weights # HuggingFace格式转换megatron格式后权重文件 |── saved_dir_for_output # 训练输出保存权重,目录结构会自动生成,无需用户创建 |── ${model_name} # 模型名称 |── logs # 训练过程中日志(loss、吞吐性能) |—— saved_models |── lora # lora微调输出权重 |── sft # 增量训练输出权重 |── pretrain # 预训练输出权重 # 以下目录结构,用户自己创建 |── training_data #原始数据目录,需要用户手动创建并上传,后续操作步骤中会提示 ├── train-00000-of-00001-a09b74b3ef9c3b56.parquet #预训练时预处理后的数据存放地址 ├── alpaca_gpt4_data.json #微调数据文件 |── tokenizers #tokenizer目录,需要用户手动创建,后续操作步骤中会提示 |── llama2-13b-hf |── models #原始权重与tokenizer目录,需要用户手动创建,后续操作步骤中会提示 |── llama2-13b-hf
  • 本地上传权重文件至SFS Turbo 通过以下两种方式将下载到本地的模型文件上传至SFS Turbo中。方式一操作简单,但是数据传输速度比较慢,费时间。方式二操作相对方式一复杂一些,但是数据传输速度较快。 方式一:将已下载的模型文件通过SSH直接上传至SFS Turbo中。具体步骤如下: 进入到/mnt/sfs_turbo/目录下。创建目录“training_data”,将原始数据存放在/mnt/sfs_turbo/model目录下。 通过拖拽文件的方式,上传文件。使用CloudShell或者其它SSH远程工具
共100000条