更新时间:2025-08-12 GMT+08:00
分享

Llama-Factory

本章节主要描述训练所需的yaml配置文件、配置参数说明,用户可根据实际自行选择其需要的参数。

yaml文件配置

根据以下步骤修改yaml文件。

表1 模型训练脚本参数

参数

示例值

参数说明

backend_config.training.dataset

  • 指令监督微调:alpaca_en_demo
  • 多模态数据集(图像):mllm_demo,identity

必修改】注册在dataset_info.json文件数据集名称。如选用自定义数据请参考README_zh.md配置dataset_info.json文件,并将数据集存放于dataset_info.json同目录下。

backend_config.training.dataset_dir

/home/ma-user/AscendFactory/third-party/LLaMA-Factory/data

必修改】作为超参数放在启动命令ascendfactory-cli train XXX中传入

Llama-Factory代码包自带数据集:地址为:${INSTALL_DIR}/third-party/LLaMA-Factory/data,其中${INSTALL_DIR}参数与install.sh中设置有关。

自定义数据:地址为代码包AscendFactory/data目录下

backend_config.training.model_name_or_path

/home/ma-user/xxx/model/Qwen2-72B

必修改】作为超参数放在启动命令ascendfactory-cli train XXX中传入

加载tokenizer与Hugging Face权重时,对应的存放地址。请根据实际规划修改。

backend_config.training.adapter_name_or_path

/home/ma-user/xxx/sft_lora/

基于lora训练完成后生成的没有合并的lora权重产物。基于lora微调后模型进行增量训练时,需要传入此权重文件。

af_output_dir

/home/ma-user/xxx/saves/qwen2-7b/sft_lora/

必修改】作为超参数放在启动命令ascendfactory-cli train XXX中传入

指定输出目录。训练过程中生成的模型参数和日志文件将保存在这个目录下

backend_config.training.train_from_scratch

false

用于指示模型是否从头开始训练,默认false。

  • true:模型将从一个全新的初始状态开始训练,并且不加载权重
  • false:模型将从加载权重的位置开始增量训练。

backend_config.training.do_train

true

指示脚本执行训练步骤,用来控制是否进行模型训练的。如果设置为true,则会进行模型训练;如果设置为false,则不会进行模型训练。

backend_config.training.cutoff_len

4096

文本处理时的最大长度,此处为4096,用户可根据自己要求适配。

backend_config.training.packing

true

可选项。当选用静态数据长度时,可将不足于文本处理时的最大长度数据弥补到文本处理时的最大长度,当选用动态数据长度去掉此参数。

backend_config.training.deepspeed

-

可选】 ZeRO 的优化策略选择,可选择如下:

  • ds_config_zero0.json
  • ds_config_zero1.json
  • ds_config_zero2.json
  • ds_config_zero3.json
  • ds_config_zero2_offload.json
  • ds_config_zero3_offload.json

backend_config.training.stage

sft

表示当前的训练阶段。目前仅适配sft。

sft代表监督微调。

backend_config.training.finetuning_type

full

用于指定微调策略类型,可选择值full、lora。

如果设置为full,则对整个模型进行微调。

backend_config.training.lora_target

all

采取lora策略方法的目标模块,默认为all

backend_config.training.template

qwen

用于指定模板。如果设置为"qwen",则使用QWEN模板进行训练。

backend_config.training.max_samples

50000

用于指定训练过程中使用的最大样本数量。如果设置了这个参数,训练过程将只使用指定数量的样本,而忽略其他样本。这可以用于控制训练过程的规模和计算需求。

backend_config.training.num_train_epochs

backend_config.training.max_steps

5

5000

表示训练轮次,根据实际需要修改。一个Epoch是将所有训练样本训练一次的过程。

表示训练step迭代次数。

二选一】参数,当同时设置则仅max_steps起作用。

backend_config.training.overwrite_cache

true

用于指定是否覆盖缓存。如果设置为"overwrite_cache",则在训练过程中覆盖缓存。这通常在数据集发生变化,或者需要重新生成缓存时使用。

backend_config.training.preprocessing_num_workers

16

用于指定预处理数据的工作线程数。随着线程数的增加,预处理的速度也会提高,但也会增加内存的使用。

backend_config.training.per_device_train_batch_size

1

指定每个设备的训练批次大小。

backend_config.training.gradient_accumulation_steps

8

指定梯度累积的步数,这可以增加批次大小而不增加内存消耗。

backend_config.training.logging_steps

2

用于指定模型训练过程中,多少步输出一次日志。日志包括了训练进度、学习率、损失值等信息。建议设置

backend_config.training.save_steps

5000

指定模型训练过程中,每多少步保存一次模型。保存的模型可以用于后续的训练。

  • 当参数值>=max_steps时,生成模型仅保存经过TRAIN_ITERS次训练后的最后一个版本。
  • 当参数值<max_steps时,生成模型会每经过save_steps次,保存一次模型版本。

模型版本保存次数=max_steps//save_steps

+1

backend_config.training.save_total_limit

0

用于控制权重版本保存次数。

  • 当参数不设置或<=0时,不会触发效果。
  • 参数值需<=max_steps//save_steps+1
  • 当参数值>1时,保存模型版本次数与save_total_limit的值一致。

backend_config.training.plot_loss

true

用于指定是否绘制损失曲线。如果设置为"true",则在训练结束后,将损失曲线保存为图片

backend_config.training.overwrite_output_dir

true

是否覆盖输出目录,默认true。如果设置为"true",则在每次训练开始时清空输出目录。“false”加载中断时最新保存训练权重继续训练,开启【断点续训】。如需指定可设置resume_from_checkpoint参数。

backend_config.training.resume_from_checkpoint

{output_dir}/checkpoint-xx

断点续训】加载训练中断时某个checkpoint-xx权重目录,目的方便用户指定权重基于此权重继续训练。此参数优先于overwrite_output_dir参数。

backend_config.training.bf16/fp16

true

可选】选择精度格式,默认为bf16格式

backend_config.training.learning_rate

2.0e-5

指定学习率

backend_config.training.disable_gradient_checkpointing

true

关闭重计算,用于禁用梯度检查点,默认开启梯度检查点;在深度学习模型训练中用于保存模型的状态,以便在需要时恢复。这种技术可以帮助减少内存使用,特别是在训练大型模型时,但同时影响性能。True表示关闭重计算功能。

backend_config.training.include_tokens_per_second

backend_config.training.include_num_input_tokens_seen

true

用于在训练过程中包含每秒处理的tokens和已经看到的输入tokens,方便计算性能。

backend_config.lora_merge.export_dir

${af_output_dir}/lora_merged

LoRA微调训练后,LoRA权重合并进原始权重后的权重输出路径

backend_config.training.recompute_layers_ratio

float取值[0,1]

layers使用重计算的比例,当使用重计算显存有很多结余时,可通过调整该参数充分利用剩余显存提高性能。

当disable_gradient_checkpointing: true时该参数设置无效

相关文档