大模型开发和微调工具Llama-Factory-->WebUI
WebUI
LLaMA-Factory 支持通过 WebUI 零代码微调大模型。
通过如下指令进入 WebUI
llamafactory-cli webui
# 如果是国内,
# USE_MODELSCOPE_HUB 设为 1,表示模型从 ModelScope 魔搭社区下载。
# 避免从 HuggingFace 下载模型导致网速不畅
USE_MODELSCOPE_HUB=1 llamafactory-cli webui
1.训练
在模型开始训练之前,需要指定参数有:
- 模型名称及路径
- 训练阶段
- 微调方法
- 训练数据集
- 学习率、训练轮数等训练参数
- 微调参数等其他参数
- 输出目录及其配置目录
随后,即可训练
关于断点重连:适配器断点保存于
output_dir
目录下,请指定 适配器路径 以加载断点继续训练。如果您需要使用自定义数据集,请在
data/data_info.json
中添加自定义数据集描述并确保 数据集格式 正确,否则可能会导致训练失败。
2.评估预测与对话
模型训练完毕后,您可以通过在评估与预测界面通过指定 模型 及 适配器 的路径在指定数据集上进行评估。
您也可以通过在对话界面指定 模型、 适配器 及 推理引擎 后输入对话内容与模型进行对话观察效果。
3.导出
如果您对模型效果满意并需要导出模型,您可以在导出界面通过指定 模型、 适配器、 分块大小、 导出量化等级及校准数据集、 导出设备、 导出目录 等参数后点击 导出
按钮导出模型。
Step4:SFT 训练
1.命令行
使用一下命令微调
llamafactory-cli train examples/train_lora/llama3_lora_sft.yaml
examples/train_lora/llama3_lora_sft.yaml
提供了微调时的配置示例。该配置制定了模型参数,微调方法参数、数据集参数以及评估参数等。
### examples/train_lora/llama3_lora_sft.yaml
model_name_or_path: meta-llama/Meta-Llama-3-8B-Instruct
stage: sft
do_train: true
finetuning_type: lora
lora_target: all
dataset: identity,alpaca_en_demo
template: llama3
cutoff_len: 1024
max_samples: 1000
overwrite_cache: true
preprocessing_num_workers: 16
output_dir: saves/llama3-8b/lora/sft
logging_steps: 10
save_steps: 500
plot_loss: true
overwrite_output_dir: true
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
val_size: 0.1
per_device_eval_batch_size: 1
eval_strategy: steps
eval_steps: 500
2.重要训练参数
名称 | 描述 |
---|---|
model_name_or_path | 模型名称或路径 |
stage | 训练阶段,可选: rm(reward modeling), pt(pretrain), sft(Supervised Fine-Tuning), PPO, DPO, KTO, ORPO |
do_train | true用于训练, false用于评估 |
finetuning_type | 微调方式。可选: freeze, lora, full |
lora_target | 采取LoRA方法的目标模块,默认值为 all 。 |
dataset | 使用的数据集,使用”,”分隔多个数据集 |
template | 数据集模板,请保证数据集模板与模型相对应。 |
output_dir | 输出路径 |
logging_steps | 日志输出步数间隔 |
save_steps | 模型断点保存间隔 |
overwrite_output_dir | 是否允许覆盖输出目录 |
per_device_train_batch_size | 每个设备上训练的批次大小 |
gradient_accumulation_steps | 梯度积累步数 |
max_grad_norm | 梯度裁剪阈值 |
learning_rate | 学习率 |
lr_scheduler_type | 学习率曲线,可选 linear , cosine , polynomial , constant 等。 |
num_train_epochs | 训练周期数 |
bf16 | 是否使用 bf16 格式 |
warmup_ratio | 学习率预热比例 |
warmup_steps | 学习率预热步数 |
push_to_hub | 是否推送模型到 Huggingface |