环境搭建:构建训练环境
为了保证训练不因版本冲突而崩溃,建议使用 Conda 进行物理隔离。
1. 克隆项目
git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
2. 安装核心依赖 (针对 CUDA 12.1 环境)
pip install -e .[metrics,bitsandbytes,qwen]
3. 验证是否安装成功
llamafactory-cli version
准备数据集
LLaMA-Factory 有一套自己的数据集管理逻辑。你需要将准备好的 security_expert_data.jsonl 放入 data/ 目录,并在 data/dataset_info.json 中注册它。
注册示例:
{
"my_security_data": {
"file_name": "security_expert_data.jsonl",
"columns": {
"prompt": "instruction",
"query": "input",
"response": "output"
}
}
}
执行训练
1. WebUI 模式
在终端执行 llamafactory-cli webui。你会看到一个直观的界面。你需要设置:
- 模型名称:选择 DeepSeek-V3 或 Qwen2.5-7B。
- 微调方法:选择 LoRA。
- 数据集:勾选你刚刚注册的 my_security_data。
- 学习率:建议 5e-5。
- 计算精度:显存够选 bf16,不够选 fp16 或 int4。
2. 命令行模式 (CLI)
一旦参数调优确定,建议使用脚本运行,更稳定且方便记录。
llamafactory-cli train \
--stage sft \
--do_train \
--model_name_or_path /path/to/your/model \
--dataset my_security_data \
--template qwen \
--finetuning_type lora \
--output_dir ./saves/security_agent_v1 \
--per_device_train_batch_size 4 \
--gradient_accumulation_steps 4 \
--lr_scheduler_type cosine \
--logging_steps 10 \
--save_steps 100 \
--learning_rate 5e-5 \
--num_train_epochs 3.0 \
--plot_loss \
--fp16
关键指标:如何看懂 Loss 曲线
在训练过程中,你会看到一个不断下降的 Loss(损失值)曲线。
- 理想曲线:平稳下降,最后在某个数值(如 0.5 - 1.2 之间)开始横向震荡。
- 警报曲线:Loss 突然降到 0(过拟合,模型只会背书)或者 Loss 突然飙升(梯度爆炸,模型疯了)。
对策:如果 Loss 不降,调大 learning_rate;如果 Loss 波动太大,调小 learning_rate 并增大 batch_size。
常见问题处理:显存溢出的解决方案
如果你运行报错 OutOfMemoryError:
- 开启量化:使用
--quantization_bit 4。 - 降低长度:将
--cutoff_len从 1024 降到 512。 - 梯度检查点:确保开启了
--gradient_checkpointing。

