Llama-Factory
本章节主要描述训练所需的yaml配置文件、配置参数说明,用户可根据实际自行选择其需要的参数。
yaml文件配置
根据以下步骤修改yaml文件。
参数 |
示例值 |
参数说明 |
---|---|---|
backend_config.training.dataset |
|
【必修改】注册在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。
|
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 的优化策略选择,可选择如下:
|
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//save_steps +1 |
backend_config.training.save_total_limit |
0 |
用于控制权重版本保存次数。
|
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时该参数设置无效 |