云服务器内容精选

  • 方案概览 本文档利用训练框架Pytorch_npu+华为自研Ascend Snt9b硬件,为用户提供了开箱即用的预训练和全量微调方案。 本文档以Llama2-70B为例,同时适用于Llama2-7B、Llama2-13B。模型运行环境是ModelArts Lite的DevServer。 本方案目前配套的是AscendCloud-3rdLLM系列版本,仅适用于部分企业客户,完成本方案的部署,需要先联系您所在企业的华为方技术支持。
  • 操作流程 图1 操作流程图 表1 操作任务流程说明 阶段 任务 说明 准备工作 准备环境 本教程案例是基于ModelArts Lite DevServer运行的,需要购买并开通DevServer资源。 准备代码 准备AscendSpeed训练代码、分词器Tokenizer和推理代码。 准备数据 准备训练数据,可以用Alpaca数据集,也可以使用自己准备的数据集。 准备镜像 准备训练模型适用的容器镜像。 预训练 预训练 介绍如何进行预训练,包括训练数据处理、超参配置、训练任务、断点续训及性能查看。 微调训练 SFT全参微调 介绍如何进行SFT全参微调。 LoRA微调训练 介绍如何进行LoRA微调训练。 推理前的权重转换 - 模型训练完成后,可以将训练产生的权重文件用于推理。推理前参考本章节,将训练后生成的多个权重文件合并,并转换成Huggingface格式的权重文件。 如果无推理任务或者使用开源Huggingface权重文件进行推理,可以忽略此章节。和本文档配套的推理文档请参考《开源大模型基于DevServer的推理通用指导》。
  • Step4 启动训练脚本 请根据表1修改超参值后,再启动训练脚本。Llama2-70B建议为8机64卡训练。 多机启动 以Llama2-70B为例,多台机器执行训练启动命令如下。进入代码目录/home/ma-user/ws/xxx-Ascend/llm_train/AscendSpeed下执行启动脚本。 #第一台节点 MASTER_ADDR=xx.xx.xx.xx NNODES=8 NODE_RANK=0 MODEL_TYPE=70B RUN_TYPE=lora DATASET_PATH=/home/ma-user/ws/processed_for_ma_input/Llama2-70B/data/finetune/alpaca_ft TOKENIZER_PATH=/home/ma-user/ws/tokenizers/Llama2-70B MODEL_PATH=/home/ma-user/ws/processed_for_ma_input/Llama2-70B/converted_weights TRAIN_ITERS=200 MBS=2 GBS=1024 TP=8 PP=8 WORK_DIR=/home/ma-user/ws sh scripts/llama2/llama2.sh # 第二台节点 MASTER_ADDR=xx.xx.xx.xx NNODES=8 NODE_RANK=1 MODEL_TYPE=70B RUN_TYPE=lora DATASET_PATH=/home/ma-user/ws/processed_for_ma_input/Llama2-70B/data/finetune/alpaca_ft TOKENIZER_PATH=/home/ma-user/ws/tokenizers/Llama2-70B MODEL_PATH=/home/ma-user/ws/processed_for_ma_input/Llama2-70B/converted_weights TRAIN_ITERS=200 MBS=2 GBS=1024 TP=8 PP=8 WORK_DIR=/home/ma-user/ws sh scripts/llama2/llama2.sh ... ... # 第八台节点 MASTER_ADDR=xx.xx.xx.xx NNODES=8 NODE_RANK=7 MODEL_TYPE=70B RUN_TYPE=lora DATASET_PATH=/home/ma-user/ws/processed_for_ma_input/Llama2-70B/data/finetune/alpaca_ft TOKENIZER_PATH=/home/ma-user/ws/tokenizers/Llama2-70B MODEL_PATH=/home/ma-user/ws/processed_for_ma_input/Llama2-70B/converted_weights TRAIN_ITERS=200 MBS=2 GBS=1024 TP=8 PP=8 WORK_DIR=/home/ma-user/ws sh scripts/llama2/llama2.sh 以上命令多台机器执行时,只有${NODE_RANK}的节点ID值不同,其他参数都保持一致。 其中MASTER_ADDR、 NODE_RANK、 NODE_RANK、MODEL_TYPE 、RUN_TYPE、DATASET_PATH、TOKENIZER_PATH、MODEL_PATH为必填项。 TRAIN_ITERS、MBS、GBS、TP、PP、WORK_DIR为非必填,有默认值。 单机启动 对于Llama2-7B和Llama2-13B,操作过程与Llama2-70B相同,只需修改对应参数即可,可以选用单机启动,以Llama2-13B为例。 进入代码目录/home/ma-user/ws/xxx-Ascend/llm_train/AscendSpeed下执行启动脚本。先修改以下命令中的参数,再复制执行 #非必填参数,有默认值,如需修改请根据实际要求填入以下参数。 MBS=4 \ GBS=64 \ TP=8 \ PP=1 \ TRAIN_ITERS=200 \ WORK_DIR=/home/ma-user/ws \ #必填参数 MODEL_TYPE=13B \ RUN_TYPE=lora \ DATASET_PATH=/home/ma-user/ws/processed_for_ma_input/Llama2-13B/data/finetune/alpaca_ft \ TOKENIZER_PATH=/home/ma-user/ws/tokenizers/Llama2-13B \ MODEL_PATH=/home/ma-user/ws/processed_for_ma_input/Llama2-13B/converted_weights \ sh scripts/llama2/llama2.sh 训练完成后,请参考查看日志和性能章节查看LoRA微调训练的日志和性能。
  • Step2 LoRA微调权重转换 LoRA微调训练前,需要先把训练权重文件转换为Megatron格式。 LoRA微调训练和SFT全参微调使用的是同一个HuggingFace权重文件,转换为Megatron格式后的结果也是通用的。 如果在SFT微调任务中已经完成了HuggingFace权重转换操作,此处无需重复操作,可以直接使用SFT微调中的权重转换结果。 如果前面没有执行HuggingFace权重转换任务,可以参考SFT全参微调权重转换章节完成。
  • Step3 LoRA微调超参配置 LoRA微调训练脚本llama2.sh,存放在xxx-Ascend/llm_train/AscendSpeed/scripts/llama2/目录下。训练前,可以根据实际需要修改超参配置。 微调任务配置,操作同预训练配置类似,不同点为RUN_TYPE类型不同,以及输入输出路径的配置的不同。 表1 LoRA微调超参配置 参数 值 参数说明 DATASET_PATH /home/ma-user/ws/processed_for_ma_input/Llama2-70B/data/finetune/alpaca_ft 必填。训练时指定的输入数据路径。一般为数据地址/处理后的数据前缀名,不加文件类型后缀。 请根据实际规划修改。 TOKENIZER_PATH /home/ma-user/ws/tokenizers/Llama2-70B 必填。加载tokenizer时,tokenizer存放地址。请根据实际规划修改。 MODEL_PATH /home/ma-user/ws/processed_for_ma_input/Llama2-70B/converted_weights 必填。加载的权重文件路径。Step2 LoRA微调权重转换章节中将HuggingFace格式转化为Megatron格式的权重文件。 MODEL_TYPE 70B 必填。模型加载类型,根据实际填写7B、13B或70B。 TRAIN_ITERS 200 非必填。训练迭代周期。根据实际需要修改。 MBS 2 非必填。表示流水线并行中一个micro batch所处理的样本量。在流水线并行中,为了减少气泡时间,会将一个step的数据切分成多个micro batch。 该值与TP和PP以及模型大小相关,可根据实际情况进行调整。默认值为2。取值建议如下: Llama2-7B:4 Llama2-13B:4 Llama2-70B:2 GBS 1024 非必填。表示训练中所有机器一个step所处理的样本量。影响每一次训练迭代的时长。取值默认值: Llama2-7B:64 Llama2-13B:64 Llama2-70B:1024 TP 8 非必填。表示张量并行。默认值为8,取值建议: Llama2-7B:8 Llama2-13B:8 Llama2-70B:8 PP 8 非必填。表示流水线并行。取值建议: Llama2-7B:1,一般此值与运行节点数相等 Llama2-13B:1,一般此值与运行节点数相等 Llama2-70B:大于等于4,建议值为8,一般选用几台机器训练则值为几。 RUN_TYPE lora 必填。表示训练类型,lora表示LoRA微调训练。 MASTER_ADDR xx.xx.xx.xx 多机必填,单机忽略;指定主节点IP地址,多台机器中需要指定一个节点IP为主节点IP。 一般指定第一个节点IP为主节点IP。 NNODES 8 多机必填,单机忽略;节点总数,单机写1,双机写2,8机写8。 NODE_RANK 0 多机必填,单机忽略;节点序号,当前节点ID,一般从0开始,单机默认是0。以8机训练为例,节点ID依次为(0 1 2 3 4 5 6 7);一般ID为0的节点设置为主节点IP。 WORK_DIR /home/ma-user/ws 非必填。容器的工作目录。训练的权重文件保存在此路径下。默认值为:/home/ma-user/ws。