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

Llama-Factory

权重文件组合方式

权重文件支持以下组合方式,用户根据自己实际要求选择:

表1 Llama-Factory支持权重组合方式

训练stage

不加载权重

增量训练:加载权重,不加载优化器

断点续训:加载权重+优化器

sft

model_name_or_path=xxx

train_from_scratch=true

model_name_or_path=xxx

【lora】adapter_name_or_path=xxx

model_name_or_path=xxx

【lora】adapter_name_or_path=xxx

resume_from_checkpoint=xxx

或者:overwrite_output_dir=false

yaml文件配置

本小节主要详细描述demo_yaml配置文件、配置参数说明,用户可根据实际自行选择其需要的参数。

表2 模型训练脚本参数

参数

示例值

参数说明

dataset

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

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

dataset_dir

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

必修改】【OBS方式“输入”框填写,SFS Turbo方式“超参”框填写】

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

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

model_name_or_path

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

必修改】【OBS方式“输入”框填写,SFS Turbo方式“超参”框填写】

加载tokenizer与Hugging Face权重时,对应的存放绝对或相对路径。

adapter_name_or_path

/home/ma-user/xxx/sft_lora/

【OBS方式“输入”框填写,SFS Turbo方式“超参”框填写】

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

output_dir

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

必修改】【OBS方式“输出”框填写,SFS Turbo方式“超参”框填写】

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

train_from_scratch

false

用于指示模型是否从头开始训练,如果true模型将从一个全新的初始状态开始训练则不加载权重。【true or false】,默认false

do_train

true

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

cutoff_len

4096

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

packing

true

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

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

stage

sft

表示当前的训练阶段。可选择值:【sft、rm、ppo、dpo】,目前仅适配sft。

  • sft代表监督微调;

finetuning_type

full

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

如果设置为full,则对整个模型进行微调。这意味着在微调过程中,除了输出层外,模型的所有参数都将被调整以适应新的任务。

lora_target

all

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

template

qwen

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

max_samples

50000

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

num_train_epochs

max_steps

5

5000

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

表示训练step迭代次数。

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

overwrite_cache

true

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

preprocessing_num_workers

16

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

per_device_train_batch_size

1

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

gradient_accumulation_steps

8

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

logging_steps

2

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

save_steps

5000

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

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

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

+1

save_total_limit

0

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

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

plot_loss

true

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

overwrite_output_dir

true

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

resume_from_checkpoint

{output_dir}/checkpoint-xx

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

bf16/fp16

true

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

注意:

使用【ModelArts Standard环境】训练时,设置为fp16格式,则需设置bf16为false,添加超参fp16为true

learning_rate

2.0e-5

指定学习率

disable_gradient_checkpointing

true

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

include_tokens_per_second

include_num_input_tokens_seen

true

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

相关文档