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配置文件、配置参数说明,用户可根据实际自行选择其需要的参数。
参数 |
示例值 |
参数说明 |
---|---|---|
dataset |
|
【必修改】注册在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 的优化策略选择,可选择如下:
|
stage |
sft |
表示当前的训练阶段。可选择值:【sft、rm、ppo、dpo】,目前仅适配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//save_steps +1 |
save_total_limit |
0 |
用于控制权重版本保存次数。
|
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,方便计算性能。 |