华为云用户手册

  • 模型NPU卡数、梯度累积值取值表 不同模型推荐的训练参数和计算规格要求如表1所示。规格与节点数中的1*节点 & 4*Ascend表示单机4卡,以此类推。 表1 NPU卡数、加速框架、梯度配置取值表 模型 Template 模型参数量 训练策略类型 序列长度cutoff_len 梯度累积值 优化工具(Deepspeed) 规格与节点数 llama2 llama2 7B lora 4096/8192 gradient_accumulation_steps: 8 ZeRO-1 1*节点 & 1*Ascend full gradient_accumulation_steps: 8 ZeRO-1 1*节点 & 8*Ascend 13B lora 4096/8192 gradient_accumulation_steps: 8 ZeRO-2 1*节点 & 1*Ascend full gradient_accumulation_steps: 8 ZeRO-3 1*节点 & 8*Ascend 70B lora 4096 gradient_accumulation_steps: 8 ZeRO-3 4*节点 & 8*Ascend full 4096/8192 gradient_accumulation_steps: 4 ZeRO-3-Offload 4*节点 & 8*Ascend llama3 llama3 70B lora 4096/8192 gradient_accumulation_steps: 8 ZeRO-3 4*节点 & 8*Ascend full gradient_accumulation_steps: 4 ZeRO-3-Offload 4*节点 & 8*Ascend 8B lora 4096/8192 gradient_accumulation_steps: 8 ZeRO-1 1*节点 & 1*Ascend full 4096 gradient_accumulation_steps: 8 ZeRO-1 1*节点 & 8*Ascend 8192 gradient_accumulation_steps: 8 ZeRO-2 1*节点 & 8*Ascend llama3.1 llama3 8B lora 4096/8192 gradient_accumulation_steps: 8 ZeRO-1 1*节点 & 1*Ascend full 4096 gradient_accumulation_steps: 8 ZeRO-1 1*节点 & 8*Ascend 8192 gradient_accumulation_steps: 8 ZeRO-2 1*节点 & 8*Ascend 70B lora 4096 gradient_accumulation_steps: 8 ZeRO-3 4*节点 & 8*Ascend full 4096/8192 gradient_accumulation_steps: 4 ZeRO-3-Offload 4*节点 & 8*Ascend llama3.2 llama3 1B lora 4096/8192 gradient_accumulation_steps: 32 ZeRO-1 1*节点 & 1*Ascend full 4096/8192 gradient_accumulation_steps: 16 ZeRO-1 1*节点 & 1*Ascend 3B lora 4096/8192 gradient_accumulation_steps: 8 ZeRO-1 1*节点 & 1*Ascend full 4096/8192 gradient_accumulation_steps: 8 ZeRO-1 1*节点 & 4*Ascend Qwen2 qwen 72B lora 4096 gradient_accumulation_steps: 8 ZeRO-3 4*节点 & 8*Ascend 8192 gradient_accumulation_steps: 8 ZeRO-3-Offload 4*节点 & 8*Ascend full 4096/8192 gradient_accumulation_steps: 4 ZeRO-3-Offload 4*节点 & 8*Ascend 7B lora 4096/8192 gradient_accumulation_steps: 8 ZeRO-0 1*节点 & 1*Ascend full 4096 gradient_accumulation_steps: 8 ZeRO-1 1*节点 & 8*Ascend 8192 gradient_accumulation_steps: 8 ZeRO-2 1*节点 & 8*Ascend 0.5B lora 4096/8192 gradient_accumulation_steps: 32 ZeRO-1 1*节点 & 1*Ascend full 8192 gradient_accumulation_steps: 32 ZeRO-1 1*节点 & 1*Ascend Qwen2_vl qwen2_vl 2B lora 4096/8192 gradient_accumulation_steps: 8 ZeRO-0 1*节点 & 1*Ascend full 4096/8192 gradient_accumulation_steps: 8 ZeRO-1 1*节点 & 2*Ascend 7B lora 4096/8192 gradient_accumulation_steps: 8 ZeRO-1 1*节点 & 1*Ascend full 4096/8192 gradient_accumulation_steps: 8 ZeRO-2 1*节点 & 8*Ascend 72B lora 1024 gradient_accumulation_steps: 8 ZeRO-3 2*节点 & 8*Ascend full 1024 gradient_accumulation_steps: 8 ZeRO-3 4*节点 & 8*Ascend Qwen1.5 qwen 7B lora 4096/8192 gradient_accumulation_steps: 8 ZeRO-1 1*节点 & 1*Ascend full 4096 gradient_accumulation_steps: 8 ZeRO-1 1*节点 & 8*Ascend full 8192 gradient_accumulation_steps: 8 ZeRO-2 1*节点 & 8*Ascend 14B lora 4096/8192 gradient_accumulation_steps: 8 ZeRO-2 1*节点 & 1*Ascend full 4096 gradient_accumulation_steps: 8 ZeRO-3 1*节点 & 8*Ascend 8192 gradient_accumulation_steps: 8 ZeRO-3 2*节点 & 8*Ascend 32B lora 4096 gradient_accumulation_steps: 8 ZeRO-3 1*节点 & 8*Ascend lora 8192 gradient_accumulation_steps: 8 ZeRO-3 2*节点 & 8*Ascend full 4096 gradient_accumulation_steps: 8 ZeRO-3 4*节点 & 8*Ascend full 8192 gradient_accumulation_steps: 4 ZeRO-3-Offload 4*节点 & 8*Ascend 72B lora 4096 gradient_accumulation_steps: 8 ZeRO-3 4*节点 & 8*Ascend lora 8192 gradient_accumulation_steps: 8 ZeRO-3-Offload 4*节点 & 8*Ascend full 4096/8192 gradient_accumulation_steps: 4 ZeRO-3-Offload 4*节点 & 8*Ascend Qwen2.5 qwen 0.5B lora/full 4096/8192 gradient_accumulation_steps: 8 ZeRO-1 1*节点 & 1*Ascend 7B lora 4096/8192 gradient_accumulation_steps: 8 ZeRO-1 1*节点 & 1*Ascend full 4096/8192 gradient_accumulation_steps: 8 ZeRO-2 1*节点 & 8*Ascend 14B lora 4096/8192 gradient_accumulation_steps: 8 ZeRO-3 1*节点 & 1*Ascend full 4096 gradient_accumulation_steps: 8 ZeRO-3 1*节点 & 8*Ascend 8192 gradient_accumulation_steps: 8 ZeRO-3 2*节点 & 8*Ascend 32B lora 4096 gradient_accumulation_steps: 8 ZeRO-3 1*节点 & 8*Ascend 8192 gradient_accumulation_steps: 8 ZeRO-3 2*节点 & 8*Ascend full 4096 gradient_accumulation_steps: 8 ZeRO-3 4*节点 & 8*Ascend 8192 gradient_accumulation_steps: 4 ZeRO-3-Offload 4*节点 & 8*Ascend 72B lora 4096 gradient_accumulation_steps: 8 ZeRO-3 4*节点 & 8*Ascend lora 8192 gradient_accumulation_steps: 8 ZeRO-3-Offload 4*节点 & 8*Ascend full 4096/8192 gradient_accumulation_steps: 4 ZeRO-3-Offload 4*节点 & 8*Ascend falcon2 falcon 11B lora 4096/8192 gradient_accumulation_steps: 8 ZeRO-1 1*节点 & 1*Ascend full 4096/8192 gradient_accumulation_steps: 8 ZeRO-2 1*节点 & 8*Ascend GLM4 glm4 9B lora 4096/8192 gradient_accumulation_steps: 8 ZeRO-1 1*节点 & 1*Ascend full 4096/8192 gradient_accumulation_steps: 8 ZeRO-2 1*节点 & 8*Ascend Yi yi 6B lora 4096/8192 gradient_accumulation_steps: 8 ZeRO-1 1*节点 & 1*Ascend full 4096/8192 gradient_accumulation_steps: 8 ZeRO-1 1*节点 & 8*Ascend 34B full 4096 gradient_accumulation_steps: 8 ZeRO-3 4*节点 & 8*Ascend lora gradient_accumulation_steps: 8 ZeRO-3 1*节点 & 4*Ascend full 8192 gradient_accumulation_steps: 8 ZeRO-3 4*节点 & 8*Ascend lora gradient_accumulation_steps: 8 ZeRO-3 2*节点 & 8*Ascend 以上参数为开启NPU FlashAttention融合算子,上述参数值仅供参考,请根据自己实际要求合理配置其他加速框架或ZeRO (Zero Redundancy Optimizer)优化器、NPU节点数及其他配置。 具体优化工具使用说明可参考如何选择最佳性能的zero-stage和-offloads。 父主题: 训练脚本说明
  • dpo_yaml样例模板 ### model model_name_or_path: /home/ma-user/ws/model/Qwen2-72B ### method stage: dpo do_train: true # lora finetuning_type: lora lora_target: all pref_beta: 0.1 pref_loss: sigmoid deepspeed: examples/deepspeed/ds_z3_config.json ### dataset dataset: dpo_en_demo dataset_dir: /home/ma-user/ws/llm_train/AscendFactory/data template: qwen cutoff_len: 4096 packing: true max_samples: 50000 overwrite_cache: true preprocessing_num_workers: 16 ### output output_dir: /home/ma-user/ws/saves/dpo/llama3-8b/lora logging_steps: 2 save_steps: 5000 plot_loss: true overwrite_output_dir: true ### train per_device_train_batch_size: 1 gradient_accumulation_steps: 8 learning_rate: 5.0e-6 num_train_epochs: 3.0 lr_scheduler_type: cosine warmup_ratio: 0.1 bf16: true flash_attn: sdpa ddp_timeout: 180000000 include_tokens_per_second: true include_num_input_tokens_seen: true
  • rm_yaml样例模板 ### model model_name_or_path: /home/ma-user/ws/model/llama3-8b ### method stage: rm do_train: true # 全参 # finetuning_type: full # lora finetuning_type: lora lora_target: all deepspeed: examples/deepspeed/ds_z0_config.json ### dataset dataset: dpo_en_demo template: llama3 cutoff_len: 4096 max_samples: 50000 overwrite_cache: true preprocessing_num_workers: 16 packing: true ### output output_dir: /home/ma-user/ws/saves/rm/llama3-8b/lora logging_steps: 1 save_steps: 500 plot_loss: true overwrite_output_dir: true ### train per_device_train_batch_size: 1 gradient_accumulation_steps: 8 learning_rate: 1.0e-4 num_train_epochs: 3.0 lr_scheduler_type: cosine warmup_ratio: 0.1 bf16: true ddp_timeout: 180000000 include_tokens_per_second: true include_num_input_tokens_seen: true
  • ppo_yaml样例模板 ### model model_name_or_path: /home/ma-user/ws/model/llama3-8b reward_model: /home/ma-user/ws/saves/rm/llama3-8b/lora ### method stage: ppo do_train: true # 全参 # finetuning_type: full # reward_model_type: full # lora finetuning_type: lora lora_target: all deepspeed: examples/deepspeed/ds_z0_config.json ### dataset dataset: identity,alpaca_en_demo template: llama3 cutoff_len: 4096 max_samples: 50000 overwrite_cache: true preprocessing_num_workers: 16 packing: true ### output output_dir: /home/ma-user/ws/saves/ppo/llama3-8b/lora logging_steps: 1 save_steps: 500 plot_loss: true overwrite_output_dir: true ### train per_device_train_batch_size: 1 gradient_accumulation_steps: 8 learning_rate: 1.0e-5 num_train_epochs: 3.0 lr_scheduler_type: cosine warmup_ratio: 0.1 bf16: true ddp_timeout: 180000000 flash_attn: sdpa include_tokens_per_second: true include_num_input_tokens_seen: true ### generate max_new_tokens: 512 top_k: 0 top_p: 0.9
  • ds_z1_config.json样例模板 { "train_batch_size": "auto", "train_micro_batch_size_per_gpu": "auto", "gradient_accumulation_steps": "auto", "gradient_clipping": "auto", "zero_allow_untested_optimizer": true, "fp16": { "enabled": "auto", "loss_scale": 0, "loss_scale_window": 1000, "initial_scale_power": 16, "hysteresis": 2, "min_loss_scale": 1 }, "bf16": { "enabled": "auto" }, "zero_optimization": { "stage": 1, "allgather_partitions": true, "allgather_bucket_size": 5e8, "overlap_comm": true, "reduce_scatter": true, "reduce_bucket_size": 5e8, "contiguous_gradients": true, "round_robin_gradients": true } }
  • tune_yaml样例模板 ### model model_name_or_path: /home/ma-user/ws/model/Qwen2-72B ### method stage: sft do_train: true # 全参 finetuning_type: full # lora # finetuning_type: lora # lora_target: all deepspeed: examples/deepspeed/ds_z3_config.json ### dataset dataset: identity,alpaca_en_demo dataset_dir: /home/ma-user/ws/llm_train/AscendFactory/data template: qwen cutoff_len: 4096 packing: true max_samples: 100000 overwrite_cache: true preprocessing_num_workers: 16 ### output output_dir: /home/ma-user/ws/saves/tune/Qwen2-72B/sft logging_steps: 2 save_steps: 5000 plot_loss: true overwrite_output_dir: true ### train per_device_train_batch_size: 1 gradient_accumulation_steps: 8 learning_rate: 2.0e-5 num_train_epochs: 10.0 lr_scheduler_type: cosine warmup_ratio: 0.1 bf16: true flash_attn: sdpa ddp_timeout: 180000000 include_tokens_per_second: true include_num_input_tokens_seen: true
  • 查看性能 训练性能主要通过训练日志中的2个指标查看,吞吐量和loss收敛情况。 吞吐量(tokens/s/p):可通过修改重要参数表格中output_dir参数值路径下的trainer_log.jsonl计算性能。取中间过程多steps平均值吞吐计算公式为: delta_tokens = end_total_tokens-start_ total_tokens delta_time = end_elapsed_time - start_elapsed_time 吞吐值(tps) = delta_tokens / delta_time / 训练卡数 如图所示: loss收敛情况:日志里存在lm loss参数 ,lm loss参数随着训练迭代周期持续性减小,并逐渐趋于稳定平缓。loss收敛图存放路径对应表1表格中output_dir参数值路径下的training_loss.png中也可以使用可视化工具TrainingLogParser查看loss收敛情况,将trainer_log.jsonl文件长传至可视化工具页面,如图2所示。 单节点训练:训练过程中的loss直接打印在窗口上。 多节点训练:训练过程中的loss打印在第一个节点上。 图2 Loss收敛情况(示意图) ppo训练结束不会打印性能。建议根据保存路径下的trainer_log.jsonl文件的最后一行总的训练steps和时间来判断性能。
  • 步骤二:修改训练yaml文件配置 LlamaFactroy配置文件为Yaml文件,启动训练前需修改Yaml配置文件,Yaml配置文件在代码目录下的{work_dir}/llm_train/AscendFactory/scripts_llamafactory/demo.yaml。修改详细步骤如下所示。 选择训练阶段类型。 指令监督微调,复制tune_yaml样例模板内容覆盖demo.yaml文件内容。 DPO偏好训练,复制dpo_yaml样例模板内容覆盖demo.yaml文件内容。 PPO强化训练,先进行RM奖励训练任务后,复制ppo_yaml样例模板内容覆盖demo.yaml内容。 RM奖励训练,复制rm_yaml样例模板内容覆盖demo.yaml文件内容。 1、DPO偏好训练、Reward奖励模型训练、PPO强化学习目前仅限制支持于llama3系列 2、PPO训练暂不支持ZeRO-3存在通信问题,如llama3-70B使用ZeRO-3暂不支持 训练策略类型 全参full,配置如下: finetuning_type: full lora,如dpo仅支持此策略;配置如下: finetuning_type: lora lora_target: all lora+,目前仅支持qwen1.5-7B指令监督微调;配置如下: finetuning_type: lora lora_target: all loraplus_lr_ratio: 16.0 修改yaml文件(demo.yaml)的参数如表1所示。 表1 修改重要参数 参数 示例值 参数说明 model_name_or_path /home/ma-user/ws/tokenizers/Qwen2-72B 必须修改。加载tokenizer与Hugging Face权重时存放目录绝对或相对路径。请根据实际规划修改。 template qwen 必须修改。用于指定模板。如果设置为"qwen",则使用Qwen模板进行训练,模板选择可参照表1中的template列 output_dir /home/ma-user/ws/Qwen2-72B/sft-4096 必须修改。指定输出目录。训练过程中生成的模型参数和日志文件将保存在这个目录下。用户根据自己实际要求适配。 per_device_train_batch_size 1 指定每个设备的训练批次大小 gradient_accumulation_steps 8 可修改。指定梯度累积的步数,这可以增加批次大小而不增加内存消耗。可根据自己要求适配。取值可参考表1中梯度累积值列。 num_train_epochs 5 表示训练轮次,根据实际需要修改。一个Epoch是将所有训练样本训练一次的过程。可根据自己要求适配 cutoff_len 4096 文本处理时的最大长度,此处为4096,用户可根据自己要求适配 dataset 指令监督微调/ppo:alpaca_en_demo rm/dpo:dpo_en_demo 多模态数据集(图像):mllm_demo,identity 【可选】注册在dataset_info.json文件数据集名称。如选用定义数据请参考准备数据(可选)配置dataset_info.json文件,并将数据集存放于dataset_info.json同目录下。 dataset_dir /home/ma-user/ws/llm_train/AscendFactory/third-party/LLaMA-Factory/data 【可选】dataset_info.json配置文件所属的绝对路径;如使用自定义数据集,yaml配置文件需添加此参数。 是否选择加速深度学习训练框架Deepspeed,可参考表1选择不同的框架。 是,选用ZeRO (Zero Redundancy Optimizer)优化器。 ZeRO-0,配置以下参数 deepspeed: examples/deepspeed/ds_z0_config.json ZeRO-1,配置以下参数,并复制ds_z1_config.json样例模板至工作目录/home/ma-user/AscendFactory/LLaMA-Factory/examples/deepspeed deepspeed: examples/deepspeed/ds_z1_config.json ZeRO-2,配置以下参数 deepspeed: examples/deepspeed/ds_z2_config.json ZeRO-2-Offload,配置以下参数 deepspeed: examples/deepspeed/ds_z2_offload_config.json ZeRO-3,配置以下参数 deepspeed: examples/deepspeed/ds_z3_config.json ZeRO-3-Offload,配置以下参数 deepspeed: examples/deepspeed/ds_z3_offload_config.json 否,默认选用Accelerate加速深度学习训练框架,注释掉deepspeed参数。 是否开启NPU FlashAttention融合算子,具体约束详见NPU_Flash_Attn融合算子约束 是,配置以下参数。 flash_attn: sdpa 否,配置以下参数关闭。 flash_attn: disabled 是否使用固定句长。 是,配置以下参数 packing: true 否,默认使用动态句长,注释掉packing参数。 选用数据精度格式bf16或fp16二者选一,两者区别可查看BF16和FP16说明。 bf16,配置以下参数。 bf16: true fp16,相比bf16还需配置loss scale参数,配置如下。 设置fp16为True。 fp16: true 修改deepspeed的"loss_scale"参数,配置如下。 修改ZeRO优化器配置文件,如ZeRO2命令如下。 cd /home/ma-user/AscendFactory/third-party/LLaMA-Factory/examples/deepspeed vim ds_z2_config.json 使用fp16容易出现数值溢出,因此配置loss scale建议配置4096或4096以上: "loss_scale": 4096, 是否使用自定义数据集。 是,参考准备数据(可选),以指令监督微调数据集为例,配置以下参数:参考修改重要参数dataset_dir和dataset参数说明;如alpaca_gpt4_data.json数据集前缀则为alpaca_gpt4_data。 dataset: alpaca_gpt4_data dataset_dir: /home/ma-user/ws/llm_train/AscendFactory/data 否,使用代码包自带数据集,注释掉dataset_dir参数,配置参数如下。 指令监督微调/PPO数据集 dataset: identity,alpaca_en_demo 多模态数据集,如qwen2_vl系列模型 dataset: mllm_demo,identity RM/DPO,目前仅支持llama3系列模型 dataset: dpo_en_demo 是否使用falcon-11b、qwen2_vl系列、glm4-9b模型。 是,更新配置或命令。 falcon-11b,参考falcon-11B模型替换文件。 glm4-9b,参考glm4-9b模型修改文件内容。 qwen2_vl系列,数据集为多模态数据集,如果前面步骤已配置请忽略。具体配置如下: 数据集dataset配置: dataset: mllm_demo,identity 否,忽略此步骤,执行下一步。 如需其他配置参数,可参考表1按照实际需求修改。
  • 步骤一:准备工作 完成准备工作内容,生成ascendfactory-cli工具。 创建test-benchmark目录,该目录存放训练生成的权重文件及训练日志。 # 任意目录创建 mkdir test-benchmark 修改config目录下yaml文件中model_name_or_path、dataset_dir和dataset或eval_dataset参数或其它内容,根据实际情况选择yaml文件;参数详解可参考表1。 config目录结构,请根据实际要求选择、修改文件: |──AscendFactory/examples/config/ # config配置文件 |──performance_cfgs.yaml # 微调性能配置yaml文件 |──llama_factory_performance_cfgs_VL.yaml # qwen2vl微调yaml配置文件 |──accuracy_cfgs.yaml # 训练精度配置yaml文件 |──llama_factory_cfgs_posttrain.yaml # RM、PPO、DPO训练阶段样例yaml文件 |──llama_factory_performance_baseline.yaml # 性能基线配置 |──llama_factory_accuracy_baseline.yaml # 精度基线配置 修改样例如下,根据自己实际要求修改相应yaml文件: # 默认参数;根据自己实际要求修改 dataset_dir: /xxxx/benchmark/data/dataset dataset: gsm8k_train_alpaca model_name_or_path: /data/wulan1/model/qwen2.5-7b ## accuracy_cfgs.yaml eval_dataset: gsm8k_test 样例yaml配置文件结构分为 base块:基础配置块。 ModelName块:该模型所需配置的参数,如qwen2.5-7b块。 exp_name:实验块,训练策略-序列长度所需参数配置。 样例yaml文件仅展示常用实验配置,如需其他配置需根据样例自行添加,样例截图如下:
  • 上传自定义数据到指定目录 将下载的原始数据存放在{work_dir}/llm_train/AscendFactory/data目录下。具体步骤如下: 解压data.tgz压缩包 tar -zxvf /home/ma-user/ws/llm_train/AscendFactory/data.tgz 进入到/home/ma-user/ws/llm_train/AscendFactory/data目录下。 cd /home/ma-user/ws/llm_train/AscendFactory/data 将自定义原始数据(指令监督微调样例数据集:alpaca_gpt4_data.json.json)按照下面的数据存放目录要求放置。 指令微调样例数据集alpaca_gpt4_data.json的下载链接:https://huggingface.co/datasets/QingyiSi/Alpaca-CoT/blob/main/alpacaGPT4/alpaca_gpt4_data.json 数据存放参考目录结构如下: ${workdir}(例如/home/ma-user/ws/llm_train ) |── AscendFactory/data |── alpaca_en_demo.json # 代码原有数据集 |── identity.json # 代码原有数据集 ... |── alpaca_gpt4_data.json # 自定义数据集 更新代码目录下data/dataset_info.json文件。如使用以下示例数据集则命令如下。关于数据集文件格式及配置,更多样例格式信息请参考README_zh.md 的内容。 vim dataset_info.json 新加配置参数如下: "alpaca_gpt4_data": { "file_name": "alpaca_gpt4_data.json" }, 样例截图:
  • 步骤一:检查环境 SSH登录机器后,检查NPU设备检查。运行如下命令,返回NPU设备信息。 npu-smi info # 在每个实例节点上运行此命令可以看到NPU卡状态 npu-smi info -l | grep Total # 在每个实例节点上运行此命令可以看到总卡数 如出现错误,可能是机器上的NPU设备没有正常安装,或者NPU镜像被其他容器挂载。请先正常安装NPU设备和驱动,或释放被挂载的NPU。 检查docker是否安装。 docker -v #检查docker是否安装 如尚未安装,运行以下命令安装docker。 yum install -y docker-engine.aarch64 docker-engine-selinux.noarch docker-runc.aarch64 配置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
  • 步骤三:启动容器镜像 启动容器镜像前请先按照参数说明修改${}中的参数。可以根据实际需要增加修改参数。启动容器命令如下。 export work_dir="自定义挂载的工作目录" #容器内挂载的目录,例如/home/ma-user/ws export container_work_dir="自定义挂载到容器内的工作目录" export container_name="自定义容器名称" export image_name="镜像名称" docker run -itd \ --device=/dev/davinci0 \ --device=/dev/davinci1 \ --device=/dev/davinci2 \ --device=/dev/davinci3 \ --device=/dev/davinci4 \ --device=/dev/davinci5 \ --device=/dev/davinci6 \ --device=/dev/davinci7 \ --device=/dev/davinci_manager \ --device=/dev/devmm_svm \ --device=/dev/hisi_hdc \ -v /usr/local/sbin/npu-smi:/usr/local/sbin/npu-smi \ -v /usr/local/dcmi:/usr/local/dcmi \ -v /usr/local/Ascend/driver:/usr/local/Ascend/driver \ --cpus 192 \ --memory 1000g \ --shm-size 200g \ --net=host \ -v ${work_dir}:${container_work_dir} \ --name ${container_name} \ $image_name \ /bin/bash 参数说明: --name ${container_name} 容器名称,进入容器时会用到,此处可以自己定义一个容器名称,例如llamafactory。 -v ${work_dir}:${container_work_dir} 代表需要在容器中挂载宿主机的目录。宿主机和容器使用不同的文件系统。work_dir为宿主机中工作目录,目录下存放着训练所需代码、数据等文件。container_work_dir为要挂载到的容器中的目录。为方便两个地址可以相同。 容器不能挂载/home/ma-user目录,此目录为ma-user用户家目录。 driver及npu-smi需同时挂载至容器。 不要将多个容器绑到同一个NPU上,会导致后续的容器无法正常使用NPU功能。 ${image_name} 为docker镜像的ID,在宿主机上可通过docker images查询得到。 --shm-size:表示共享内存,用于多进程间通信。由于需要转换较大内存的模型文件,因此大小要求200g及以上。 修改目录权限,上传代码和数据到宿主机时使用的是root用户,如用ma-user用户训练,此处需要执行如下命令统一文件权限。 #统一文件权限 chmod -R 777 ${work_dir} # ${work_dir}:/home/ma-user/ws 宿主机代码和数据目录 #例如: chmod -R 777 /home/ma-user/ws 通过容器名称进入容器中。启动容器时默认用户为ma-user用户。 docker exec -it ${container_name} bash 使用ma-user用户安装依赖包。 #进入scripts目录 cd /home/ma-user/ws/llm_train/AscendFactory #执行安装命令,安装依赖包及LLaMAFactory代码包 sh install.sh llamafactory
  • 镜像地址 本教程中用到的训练和推理的基础镜像地址和配套版本关系如下表所示,请提前了解。 表1 基础容器镜像地址 镜像用途 镜像地址 基础镜像 swr.cn-southwest-2.myhuaweicloud.com/atelier/pytorch_2_3_ascend:pytorch_2.3.1-cann_8.0.rc3-py_3.10-hce_2.0.2409-aarch64-snt9b-20241213131522-aafe527 表2 模型镜像版本 模型 版本 CANN cann_8.0.RC3 驱动 23.0.6 PyTorch 2.3.1
  • 上传代码和权重文件到工作环境 使用root用户以SSH的方式登录Server。 将AscendCloud代码包AscendCloud-xxx-xxx.zip上传到${workdir}目录下并解压缩,如:/home/ma-user/ws目录下,以下都以/home/ma-user/ws为例,请根据实际修改。 unzip AscendCloud-*.zip unzip AscendCloud-LLM-*.zip 上传tokenizers文件到工作目录中的/home/ma-user/ws/model/{Model_Name}目录,用户根据自己实际规划路径修改;如Qwen2-72B。 具体步骤如下: 进入到${workdir}目录下,如:/home/ma-user/ws,创建tokenizers文件目录将权重和词表文件放置此处,以Qwen2-72B为例。 cd /home/ma-user/ws mkdir -p model/Qwen2-72B
  • 获取模型软件包和权重文件 本方案支持的模型对应的软件和依赖包获取地址如表1所示,模型列表、对应的开源权重获取地址如表1所示。 表1 模型对应的软件包和依赖包获取地址 代码包名称 代码说明 下载地址 AscendCloud-6.3.912-xxx.zip 说明: 软件包名称中的xxx表示时间戳。 包含了本教程中使用到的模型训练代码、推理部署代码和推理评测代码。代码包具体说明请参见模型软件包结构说明。 AscendFactory是用于模型并行计算的框架,其中包含了许多模型的输入处理方法。 获取路径:Support-E,在此路径中查找下载ModelArts 6.3.912 版本。 说明: 如果上述软件获取路径打开后未显示相应的软件信息,说明您没有下载权限,请联系您所在企业的华为方技术支持下载获取。
  • 模型软件包结构说明 本教程需要使用到的AscendCloud-6.3.912中的AscendCloud-LLM-xxx.zip软件包和算子包AscendCloud-OPP,AscendCloud-LLM关键文件介绍如下。 |——AscendCloud-LLM |──llm_train # 模型训练代码包 |──AscendFactory |──examples/ # config配置文件目录 |──data.tgz # 样例数据压缩包 |──third-party/ # patch包 |──src/acs_train_solution/ # 训练运行包 |──intall.sh # 需要的依赖包 |──scripts_llamafactory/ # llamafactory兼容旧版本启动方式目录 |──scripts_modellink/ # modelLink兼容旧版本启动方式目录 |──Dockerfile
  • 工作目录介绍 详细的工作目录参考如下,根据实际要求设置。 ${workdir}(例如/home/ma-user/ws) |──llm_train # 模型训练代码包 |──AscendFactory |──examples/ # config配置文件目录 |──config/ # 配置文件 |──deepspeed/ # deepspeed配置json文件 |──performance_cfgs.yaml # 微调性能配置json文件 |──llama_factory_performance_cfgs_VL.yaml # qwen2vl微调json文件 |──accuracy_cfgs.yaml # 训练精度配置json文件 |──....... |──data.tgz # 样例数据压缩包 |──intall.sh # 需要的依赖包 |──scripts_llamafactory/ # 兼容旧版本启动方式目录 |──tools/ # 针对昇腾云平台适配的功能补丁包 |──demo.yaml # 样例yaml配置文件 |──demo.sh # 训练启动shell脚本 |──merge_lora_cli.sh # lora权重合并脚本 |──third-party/ # patch包 |──src/acs_train_solution/ # 训练运行包 |──ascendcloud_patch/ # patch补丁包 |──benchmark/ #工具包,存放数据集及基线数据 |──trainer.py # 训练启动脚本 |──performance.py # 训练性能比较启动脚本 |──accuracy.py # 训练精度启动脚本 |──model/Qwen2-7B/ # 权重词表文件目录,如Qwen2-7B |──saves/qwen2-7b/sft_lora/ # 训练完成生成目录Qwen2-7B,自动生成
  • 训练支持的模型列表 本方案支持以下模型的训练,如表1所示。 表1 支持的模型列表及权重文件地址 支持模型 支持模型参数量 权重文件获取地址 Llama2 llama2-7b https://huggingface.co/meta-llama/Llama-2-7b-chat-hf llama2-13b https://huggingface.co/meta-llama/Llama-2-13b-chat-hf llama2-70b https://huggingface.co/meta-llama/Llama-2-70b-chat-hf Llama3 llama3-8b https://huggingface.co/meta-llama/Meta-Llama-3-8B-Instruct llama3-70b https://huggingface.co/meta-llama/Meta-Llama-3-70B-Instruct Llama3.1 llama3.1-8b https://huggingface.co/meta-llama/Meta-Llama-3.1-8B-Instruct/tree/main llama3.1-70b https://huggingface.co/meta-llama/Meta-Llama-3.1-70B-Instruct/tree/main Qwen1.5 qwen1.5-7b https://huggingface.co/Qwen/Qwen1.5-7B-Chat qwen1.5-14b https://huggingface.co/Qwen/Qwen1.5-14B-Chat qwen1.5-32b https://huggingface.co/Qwen/Qwen1.5-32B-Chat qwen1.5-72b https://huggingface.co/Qwen/Qwen1.5-72B-Chat Yi yi-6b https://huggingface.co/01-ai/Yi-6B-Chat yi-34b https://huggingface.co/01-ai/Yi-34B-Chat Qwen2 qwen2-0.5b https://huggingface.co/Qwen/Qwen2-0.5B-Instruct qwen2-1.5b https://huggingface.co/Qwen/Qwen2-1.5B-Instruct qwen2-7b https://huggingface.co/Qwen/Qwen2-7B-Instruct qwen2-72b https://huggingface.co/Qwen/Qwen2-72B-Instruct Qwen2_VL(支持多模态数据集) qwen2_vl-2b https://huggingface.co/Qwen/Qwen2-VL-2B-Instruct/tree/main qwen2_vl-7b https://huggingface.co/Qwen/Qwen2-VL-7B-Instruct/tree/main qwen2_vl-72b https://huggingface.co/Qwen/Qwen2-VL-72B-Instruct Falcon2 falcon-11B https://huggingface.co/tiiuae/falcon-11B GLM-4 glm4-9b https://huggingface.co/THUDM/glm-4-9b-chat 说明: glm4-9b模型必须使用版本4b556ad4d70c38924cb8c120adbf21a0012de6ce Qwen2.5 qwen2.5-0.5b https://huggingface.co/Qwen/Qwen2.5-0.5B-Instruct qwen2.5-7b https://huggingface.co/Qwen/Qwen2.5-7B-Instruct qwen2.5-14b https://huggingface.co/Qwen/Qwen2.5-14B-Instruct qwen2.5-32b https://huggingface.co/Qwen/Qwen2.5-32B-Instruct qwen2.5-72b https://huggingface.co/Qwen/Qwen2.5-72B-Instruct llama3.2 llama3.2-1b https://huggingface.co/meta-llama/Llama-3.2-1B-Instruct llama3.2-3b https://huggingface.co/meta-llama/Llama-3.2-3B-Instruct
  • 方案概览 本文档利用训练框架LlamaFactory+华为自研Ascend Snt9B硬件,为用户提供了常见主流开源大模型在ModelArts Lite Server上的不同训练阶段方案,包括指令监督微调、DPO偏好训练、RM奖励模型训练、PPO强化训练方案。 DPO(Direct Preference Optimization):直接偏好优化方法,通过直接优化语言模型来实现对大模型输出的精确把控,不用进行强化学习,也可以准确判断和学习到使用者的偏好,最后,DPO算法还可以与其他优化算法相结合,进一步提高深度学习模型的性能。 RM奖励模型(Reward Model):是强化学习过程中一个关键的组成部分。它的主要任务是根据给定的输入和反馈来预测奖励值,从而指导学习算法的方向,帮助强化学习算法更有效地优化策略 PPO强化学习(Proximal Policy Optimization):是一种在强化学习中广泛使用的策略优化算法。它属于策略梯度方法的一种,旨在通过限制新策略和旧策略之间的差异来稳定训练过程。PPO通过引入一个称为“近端策略优化”的技巧来避免过大的策略更新,从而减少了训练过程中的不稳定性和样本复杂性。 指令监督式微调(Self-training Fine-tuning):是一种利用有标签数据进行模型训练的方法。 它基于一个预先训练好的模型,通过调整模型的参数,使其能够更好地拟合特定任务的数据分布。 与从头开始训练模型相比,监督式微调能够充分利用预训练模型的知识和特征表示,从而加速训练过程并提高模型的性能。 训练阶段下有不同的训练策略,分为全参数训练、部分参数训练、LoRA、QLoRA,本文档主要支持全参数(Full)和LoRA、LoRA+。 LoRA(Low-Rank Adaptation): 这种策略主要针对如何在保持模型大部分参数固定的同时,通过引入少量可训练参数来调整模型以适应特定任务。 LoRA+(Efficient Low Rank Adaptation of Large Models):延续了LoRA的精髓进一步提升了在复杂任务上对大模型进行微调的效率和性能,核心在于其独特的学习率比率(loraplus_lr_ratio)机制,适用于那些需要精确控制模型微调过程的场景,当前该策略仅支持qwen1.5-7B指令监督式微调。 全参训练(Full):这种策略主要对整个模型进行微调。这意味着在任务过程中,除了输出层外,模型的所有参数都将被调整以适应新的任务。 本方案目前仅适用于部分企业客户,完成本方案的部署,需要先联系您所在企业的华为方技术支持。
  • 步骤二 修改训练超参配置 以Llama2-70b和Llama2-13b的SFT微调为例,执行脚本为0_pl_sft_70b.sh 和 0_pl_sft_13b.sh 。 修改模型训练脚本中的配置,参数详解可查看训练参数说明,其中【GBS、MBS、TP、PP】参数值可参考模型推荐参数、NPU卡数设置。 对于Yi系列模型、ChatGLMv3-6B和Qwen系列模型,还需要手动修改训练参数和tokenizer文件,具体请参见训练tokenizer文件说明。 同时开启故障快恢和断点续训时需满足以下条件: 如果用户指定${USER_CONVERTED_CKPT_PATH} 因故障快恢读取权重的优先级最高则训练过程的权重保存路径${OUTPUT_SAVE_DIR}/saved_checkpoints 必须为空,否则此参数无效断点续训失效。 如果就是使用最新的训练权重进行断点续训(暂停+启动场景),那么可以同时指定MA_TRAIN_AUTO_RESUME =1和 ${USER_CONVERTED_CKPT_PATH}训练过程的权重保存路径,加载路径一致。 故障快恢依赖训练过程的权重保存路径。所以如果开启 MA_TRAIN_AUTO_RESUME=1, 则用户指定的权重加载路径${USER_CONVERTED_CKPT_PATH}不能是训练过程的权重保存路径。
  • 网卡名称错误 当训练开始时提示网卡名称错误。或者通信超时。可以使用ifconfig命令检查网卡名称配置是否正确。 比如,ifconfig看到当前机器IP对应的网卡名称为enp67s0f5,则可以设置环境变量指定该值。 图1 网卡名称错误 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/AscendFactory/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文件
  • 网卡名称错误 当训练开始时提示网卡名称错误。或者通信超时。可以使用ifconfig命令检查网卡名称配置是否正确。 比如,ifconfig看到当前机器IP对应的网卡名称为enp67s0f5,则可以设置环境变量指定该值。 图1 网卡名称错误 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/AscendFactory/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文件
  • 模型推荐的参数与NPU卡数设置 不同模型推荐的训练参数和计算规格要求如表2所示。规格与节点数中的1*节点 & 4*Ascend表示单机4卡,以此类推。 表2 不同模型推荐的参数与NPU卡数设置 序号 支持模型 支持模型参数量 训练策略类型 文本序列长度(SEQ_LEN) 并行参数设置 micro batch size (MBS) 规格与节点数 1 llama2 llama2-7b full 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 full 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 full 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 full 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 full 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 full 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 full 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 full 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 full 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 full 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 full 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 full 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 full 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 full 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 full 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 full 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 full 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 full 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 full 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 full 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 full 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 full 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 full 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 full 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 full 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 full 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 full 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 full 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 full 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 full 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 full 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 full 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 full 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 full 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 full 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 full 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 full 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 full 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 full 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 full 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 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 full 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 full 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 full 4096 TP(tensor model parallel size)=2 PP(pipeline model parallel size)=8 1 2*节点 & 8*Ascend full 8192 TP(tensor model parallel size)=2 PP(pipeline model parallel size)=8 1 2*节点 & 8*Ascend 24 llama3.1 llama3.1-8b full 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 full 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 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 full 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 full 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 full 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 full 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 full 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 full 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 full 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 full 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 full 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 full 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 full 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 full 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 full 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 full 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 full 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适配ModelLink PyTorch NPU训练指导(6.3.912)
  • Step2 创建训练任务 创建训练作业,并自定义名称、描述等信息。选择自定义算法,启动方式自定义,以及上传的镜像。训练脚本中会自动执行训练前的权重转换操作和数据处理操作。 图1 选择镜像 如果镜像使用使用基础镜像中的基础镜像时,训练作业启动命令中输入: cd /home/ma-user/work/llm_train/AscendFactory; sh ./scripts_modellink/install.sh; sh ./scripts_modellink/llama2/0_pl_sft_13b.sh 如果镜像使用E CS 中构建新镜像构建的新镜像时,训练作业启动命令中输入: cd /home/ma-user/work/llm_train/AscendFactory; sh ./scripts_modellink/llama2/0_pl_sft_13b.sh 创建训练作业时,可开启自动重启功能。当环境问题导致训练作业异常时,系统将自动修复异常或隔离节点,并重启训练作业,提高训练成功率。为了避免丢失训练进度、浪费算力。此功能已适配断点续训练。 图2 开启故障重启 断点续训练是通过checkpoint机制实现。checkpoint机制是在模型训练的过程中,不断地保存训练结果(包括但不限于EPOCH、模型权重、优化器状态、调度器状态)。即便模型训练中断,也可以基于checkpoint接续训练。 当训练作业发生故障中断本次作业时,代码可自动从训练中断的位置接续训练,加载中断生成的checkpoint,中间不需要改动任何参数。可以通过训练脚本中的SAVE_INTERVAL参数来指定间隔多少step保存checkpoint。
  • Step1 修改训练超参配置 以llama2-13b SFT全参微调为例,执行脚本 0_pl_sft_13b.sh 。 修改模型训练脚本中的配置,参数详解可查看训练参数说明,其中【GBS、MBS、TP、PP】参数值可参考模型推荐参数、NPU卡数设置。 对于Yi系列模型、ChatGLMv3-6B和Qwen系列模型,还需要手动修改训练参数和tokenizer文件,具体请参见训练tokenizer文件说明。
共100000条