华为云用户手册

  • Step4 开启训练故障自动重启功能 创建训练作业时,可开启自动重启功能。当环境问题导致训练作业异常时,系统将自动修复异常或隔离节点,并重启训练作业,提高训练成功率。为了避免丢失训练进度、浪费算力。此功能已适配断点续训练。 图3 开启故障重启 断点续训练是通过checkpoint机制实现。checkpoint机制是在模型训练的过程中,不断地保存训练结果(包括但不限于EPOCH、模型权重、优化器状态、调度器状态)。即便模型训练中断,也可以基于checkpoint继续训练。 当训练作业发生故障中断本次作业时,代码可自动从训练中断的位置继续训练,加载中断生成的checkpoint,中间不需要改动任何参数。可以通过训练脚本中的SAVE_INTERVAL参数来指定间隔多少step保存checkpoint。 如果要使用自动重启功能,资源规格必须选择八卡规格。 当前功能还处于试验阶段,只有llama3-8B/70B适配。
  • Step1 创建训练任务 创建训练作业,并自定义名称、描述等信息。选择自定义算法,启动方式自定义,以及选择上传的镜像。 代码目录选择:OBS桶路径下的llm_train/AscendSpeed代码目录。 图1 创建训练作业 如果镜像使用使用基础镜像中的基础镜像时,训练作业启动命令中输入: cd /home/ma-user/modelarts/user-job-dir/AscendSpeed; sh ./scripts/install.sh; sh ./scripts/obs_pipeline.sh 如果镜像使用E CS 中构建新镜像构建的新镜像时,训练作业启动命令中输入: cd /home/ma-user/modelarts/user-job-dir/AscendSpeed; sh ./scripts/obs_pipeline.sh
  • Step2 配置数据输入和输出 单击“增加训练输入”和“增加训练输出”,用于配置训练作业开始时需要输入数据的路径和训练结束后输出数据的路径。 在“输入”的输入框内设置变量:ORIGINAL_TRAIN_DATA_PATH、ORIGINAL_HF_WEIGHT。 ORIGINAL_TRAIN_DATA_PATH:训练时指定的输入数据集路径。 ORIGINAL_HF_WEIGHT:加载tokenizer与Hugging Face权重时,对应的存放地址。 在“输出”的输入框内设置变量:OUTPUT_SAVE_DIR、HF_SAVE_DIR。 OUTPUT_SAVE_DIR:训练完成后指定的输出模型路径。 HF_SAVE_DIR:训练完成的权重文件自动转换为Hugging Face格式权重输出的路径(确保添加CONVERT_MG2HF环境变量并设置为True)。 分别单击“输入”和“输出”的数据存储位置,如图所示,选择OBS桶中指定的目录。ORIGINAL_TRAIN_DATA_PATH中则直接选中数据集文件。 “输入”和“输出”中的获取方式全部选择为:环境变量。 “输出”中的预下载至本地目标选择:下载,此时输出路径中的数据则会下载至OBS中。
  • Step1 创建训练任务 创建训练作业,并自定义名称、描述等信息。选择自定义算法,启动方式自定义,以及选择上传的镜像。 代码目录选择:OBS桶路径下的llm_train/AscendSpeed代码目录。 图1 创建训练作业 如果镜像使用使用基础镜像中的基础镜像时,训练作业启动命令中输入: cd /home/ma-user/modelarts/user-job-dir/AscendSpeed; sh ./scripts/install.sh; sh ./scripts/obs_pipeline.sh 如果镜像使用ECS中构建新镜像构建的新镜像时,训练作业启动命令中输入: cd /home/ma-user/modelarts/user-job-dir/AscendSpeed; sh ./scripts/obs_pipeline.sh
  • Step4 开启训练故障自动重启功能 创建训练作业时,可开启自动重启功能。当环境问题导致训练作业异常时,系统将自动修复异常或隔离节点,并重启训练作业,提高训练成功率。为了避免丢失训练进度、浪费算力。此功能已适配断点续训练。 图2 开启故障重启 断点续训练是通过checkpoint机制实现。checkpoint机制是在模型训练的过程中,不断地保存训练结果(包括但不限于EPOCH、模型权重、优化器状态、调度器状态)。即便模型训练中断,也可以基于checkpoint继续训练。 当训练作业发生故障中断本次作业时,代码可自动从训练中断的位置继续训练,加载中断生成的checkpoint,中间不需要改动任何参数。可以通过训练脚本中的SAVE_INTERVAL参数来指定间隔多少step保存checkpoint。 如果要使用自动重启功能,资源规格必须选择八卡规格。 当前功能还处于试验阶段,只有llama3-8B/70B适配。
  • 创建Notebook 创建开发环境Notebook实例,具体操作步骤请参考创建Notebook实例。 镜像选择已注册的 自定义镜像 ,资源类型选择创建好的专属资源池,规格推荐选择“Ascend: 8*ascend-snt9b”。 图1 Notebook中选择自定义镜像与规格 云硬盘EVS是Notebook开发环境内存的存储硬盘,作为持久化存储挂载在/home/ma-user/work目录下,该目录下的内容在实例停止后会被保留。可以自定义磁盘空间,如果需要存储数据集、模型等大型文件,建议申请规格300GB+。存储支持在线按需扩容。 图2 自定义存储配置
  • 使用基础镜像 通过ECS获取和上传基础镜像将镜像上传至SWR服务后,可创建训练作业,在“选择镜像”中选择SWR中基础镜像。 由于基础镜像内需要安装固定版本依赖包,如果直接使用基础镜像进行训练,每次创建训练作业时,训练作业的图1中都需要执行install.sh文件,来安装依赖以及下载完整代码。命令如下: cd /home/ma-user/modelarts/user-job-dir/AscendSpeed; sh ./scripts/install.sh; sh ./scripts/obs_pipeline.sh 使用基础镜像的方法,需要确认训练作业的资源池是否联通公网,否则执行 install.sh 文件时下载代码会失败。因此可以选择配置网络或使用ECS中构建新镜像的方法。 若要对ChatCLMv3、GLMv4系列模型进行训练时,需要修改 install.sh 中的 transformers 的版本。 由默认 transformers==4.45.0 修改为:transformers==4.44.2 创建训练作业后,会在节点机器中使用基础镜像创建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工作目录中访问并编辑以上源码文件。编辑完成后重新构建新镜像。 注意:训练作业的资源池以及ECS都需要联通外网,否则会安装和下载失败。
  • 基础镜像地址 本教程中用到的训练的基础镜像地址和配套版本关系如下表所示,请提前了解。 表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
  • 模型软件包结构说明 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 # 推理工具
  • 数据集下载 本教程使用Alpaca数据集,数据集的介绍及下载链接如下。 Alpaca数据集是由OpenAI的text-davinci-003引擎生成的包含52k条指令和演示的数据集。这些指令数据可以用来对语言模型进行指令调优,使语言模型更好地遵循指令。 预训练使用的Alpaca数据集下载:https://huggingface.co/datasets/tatsu-lab/alpaca/resolve/main/data/train-00000-of-00001-a09b74b3ef9c3b56.parquet,数据大小:24M左右。 SFT和LoRA微调使用的Alpaca数据集下载:https://huggingface.co/datasets/QingyiSi/Alpaca-CoT/blob/main/alpacaGPT4/alpaca_gpt4_data.json,数据大小:43.6 MB。
  • 创建OBS桶 ModelArts使用 对象存储服务 (Object Storage Service,简称OBS)进行数据存储以及模型的备份和快照,实现安全、高可靠和低成本的存储需求。因此,在使用ModelArts之前通常先创建一个OBS桶,然后在OBS桶中创建文件夹用于存放数据。 本文档也以将运行代码以及输入输出数据存放OBS为例,请参考创建OBS桶,例如桶名:standard-llama2-13b。并在该桶下创建文件夹目录用于后续存储代码使用,例如:training_data。
  • 操作流程 图1 操作流程图 表2 操作任务流程说明 阶段 任务 说明 准备工作 准备资源 本教程案例是基于ModelArts Standard运行的,需要购买并开通ModelArts专属资源池和OBS桶。 准备数据 准备训练数据,可以用本案使用的数据集,也可以使用自己准备的数据集。 准备权重 准备所需的权重文件。 准备代码 准备AscendSpeed训练代码。 准备镜像 准备训练模型适用的容器镜像。 准备Notebook 本案例需要创建一个Notebook,以便能够通过它访问SFS Turbo服务。随后,通过Notebook将OBS中的数据上传至SFS Turbo,并对存储在SFS Turbo中的数据执行编辑操作。 预训练 预训练 介绍如何进行预训练,包括训练数据处理、超参配置、创建训练任务及性能查看。 微调训练 SFT全参微调 介绍如何进行SFT全参微调,包括训练数据处理、超参配置、创建训练任务及性能查看。 LoRA微调训练 介绍如何进行LoRA微调训练,包括训练数据处理、超参配置、创建训练任务及性能查看。
  • 文档更新内容 6.3.910版本相对于6.3.909版本新增如下内容: 文档中新增对Qwen2.5的适配(包括0.5B、7B, 14B, 32B, and 72B),支持sft、lora、预训练。 文档中新增对Llama3.2的适配(包括1B和3B),支持sft、lora、预训练。 代码中ModelLink、MindSpeed已升级到最新版本,Python三方依赖版本已升级,其中: MindSpeed的版本升级到commitID=4ea42a23 ModelLink的版本升级到commitID=8f50777 transformers版本升级到4.45.0 peft版本升级到0.12.0
  • 方案概览 本文档利用训练框架PyTorch_npu+华为自研Ascend Snt9B硬件,为用户提供了常见主流开源大模型在ModelArts Standard上的预训练和全量微调方案。 本方案目前仅适用于部分企业客户,完成本方案的部署,需要先联系您所在企业的华为方技术支持。 提示:本文档适用于仅使用OBS对象存储服务(Object Storage Service)作为存储的方案,OBS用于存储模型文件、训练数据、代码、日志等,提供了高可靠性的数据存储解决方案。
  • 支持的模型列表 本方案支持以下模型的训练,如表1所示。 表1 支持的模型列表 序号 支持模型 支持模型参数量 权重文件获取地址 1 llama2 llama2-7b https://huggingface.co/meta-llama/Llama-2-7b-chat-hf 2 llama2-13b https://huggingface.co/meta-llama/Llama-2-13b-chat-hf 3 llama2-70b https://huggingface.co/meta-llama/Llama-2-70b-hf https://huggingface.co/meta-llama/Llama-2-70b-chat-hf (推荐) 4 llama3 llama3-8b https://huggingface.co/meta-llama/Meta-Llama-3-8B-Instruct 5 llama3-70b https://huggingface.co/meta-llama/Meta-Llama-3-70B-Instruct 6 Qwen qwen-7b https://huggingface.co/Qwen/Qwen-7B-Chat 7 qwen-14b https://huggingface.co/Qwen/Qwen-14B-Chat 8 qwen-72b https://huggingface.co/Qwen/Qwen-72B-Chat 9 Qwen1.5 qwen1.5-7b https://huggingface.co/Qwen/Qwen1.5-7B-Chat 10 qwen1.5-14b https://huggingface.co/Qwen/Qwen1.5-14B-Chat 11 qwen1.5-32b https://huggingface.co/Qwen/Qwen1.5-32B-Chat 12 qwen1.5-72b https://huggingface.co/Qwen/Qwen1.5-72B-Chat 13 Yi yi-6b https://huggingface.co/01-ai/Yi-6B-Chat 14 yi-34b https://huggingface.co/01-ai/Yi-34B-Chat 15 ChatGLMv3 glm3-6b https://huggingface.co/THUDM/chatglm3-6b 16 Baichuan2 baichuan2-13b https://huggingface.co/baichuan-inc/Baichuan2-13B-Chat 17 Qwen2 qwen2-0.5b https://huggingface.co/Qwen/Qwen2-0.5B-Instruct 18 qwen2-1.5b https://huggingface.co/Qwen/Qwen2-1.5B-Instruct 19 qwen2-7b https://huggingface.co/Qwen/Qwen2-7B-Instruct 20 qwen2-72b https://huggingface.co/Qwen/Qwen2-72B-Instruct 21 GLMv4 glm4-9b https://huggingface.co/THUDM/glm-4-9b-chat 说明: glm4-9b模型必须使用版本4b556ad4d70c38924cb8c120adbf21a0012de6ce 22 mistral mistral-7b https://huggingface.co/mistralai/Mistral-7B-Instruct-v0.2 23 mixtral mixtral-8x7b https://huggingface.co/mistralai/Mixtral-8x7B-Instruct-v0.1 24 llama3.1 llama3.1-8b https://huggingface.co/meta-llama/Meta-Llama-3.1-8B-Instruct 25 llama3.1-70b https://huggingface.co/meta-llama/Meta-Llama-3.1-70B-Instruct 26 Qwen2.5 qwen2.5-0.5b https://huggingface.co/Qwen/Qwen2.5-0.5B-Instruct 27 qwen2.5-7b https://huggingface.co/Qwen/Qwen2.5-7B-Instruct 28 qwen2.5-14b https://huggingface.co/Qwen/Qwen2.5-14B-Instruct 29 qwen2.5-32b https://huggingface.co/Qwen/Qwen2.5-32B-Instruct 30 qwen2.5-72b https://huggingface.co/Qwen/Qwen2.5-72B-Instruct 31 llama3.2 llama3.2-1b https://huggingface.co/meta-llama/Llama-3.2-1B-Instruct 32 llama3.2-3b https://huggingface.co/meta-llama/Llama-3.2-3B-Instruct
  • 网卡名称错误 当训练开始时提示网卡名称错误。或者通信超时。可以使用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 父主题: 常见错误原因和解决方法
  • 解决方法: 通过npu-smi info查看是否有进程资源占用NPU,导致训练时显存不足。解决可通过kill掉残留的进程或等待资源释放。 可调整参数:TP张量并行(tensor-model-parallel-size) 和PP流水线并行(pipeline-model-parallel-size),可以尝试增加 TP和PP的值,一般TP×PP≤NPU数量,并且要被整除,具体调整值可参照表2进行设置。
  • 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所示。 图2 修改ChatGLMv3-6B tokenizer文件 图3 修改ChatGLMv3-6B tokenizer文件
  • 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/ws/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 为例,用户可直接编辑 scripts/llama2/2_convert_mg_hf.sh 脚本,自定义环境变量的值,并运行该脚本。其中环境变量详细介绍如下: 表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/ws/xxx-Ascend/llm_train/AscendSpeed/tokenizers/Llama2-13B 原始Hugging Face模型路径 CONVERT_MODEL_PATH /home/ma-user/ws/processed_for_ma_input/llama2-13b/converted_weights_TP8PP1 权重转换完成之后保存路径 TOKENIZER_PATH /home/ma-user/ws/xxx-Ascend/llm_train/AscendSpeed/tokenizers/Llama2-13B tokenizer路径,即:原始Hugging Face模型路径 MODEL_SAVE_PATH /home/ma-user/ws/xxx-Ascend/llm_train/AscendSpeed/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:处理后的数据集保存路径+数据集名称(例如: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/
  • 用户自定义执行数据处理脚本修改参数说明 同样以 llama2 为例,用户可直接编辑 scripts/llama2/1_preprocess_data.sh 脚本,自定义环境变量的值,并运行该脚本。其中环境变量详细介绍如下: 表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/
  • 模型推荐的参数与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
  • 查看日志 若查看启动作业日志信息,可通过以下命令打印正在启动的日志信息。其中${pod_name}为pod信息中的NAME,例如vcjob-main-0。 kubectl logs -f ${pod_name} 训练过程中,训练日志会在最后的Rank节点打印。 图1 打印训练日志 训练完成后,如果需要单独获取训练日志文件,可以在${SAVE_PATH}/logs路径下获取。日志存放路径为:/home/ma-user/ws/saved_dir_for_ma_output/llama2-70b/logs
  • 查看性能 训练性能主要通过训练日志中的2个指标查看,吞吐量和loss收敛情况。 吞吐量(tokens/s/p):global batch size*seq_length/(总卡数*elapsed time per iteration)*1000,其global batch size(GBS)、seq_len(SEQ_LEN)为训练时设置的参数,具体参数查看表1。 loss收敛情况:日志里存在lm loss参数 ,lm loss参数随着训练迭代周期持续性减小,并逐渐趋于稳定平缓。也可以使用可视化工具TrainingLogParser查看loss收敛情况,如图2所示。 单节点训练:训练过程中的loss直接打印在窗口上。 多节点训练:训练过程中的loss打印在最后一个节点上。 图2 Loss收敛情况(示意图)
共100000条