LlamaFactory 大模型微调实战
本次任务目标是通过微调 LLM 抽取 Query 中的实体。项目开源地址:https://github.com/hiyouga/LlamaFactory
微调策略概览
LlamaFactory 支持多种微调模式,理解这些分类有助于我们根据资源与需求选择最佳方案。

参数更新方式
全量微调 (Full-tuning) 所有参数都会更新。优点是表达能力最强,适合预算充足且需要深度定制模型行为的场景;缺点是显存消耗巨大,且容易引发灾难性遗忘。
冻结微调 (Freeze-tuning) 大部分参数冻结,仅训练少量模块(如最后几层或 Adapter)。成本低、稳定性好,适合资源紧张或仅需轻微对齐的任务。
LoRA (Low-Rank Adaptation) 目前最常用的 PEFT 方法。冻结原权重,在注意力或 MLP 层旁添加低秩矩阵 A, B 进行增量训练。性价比极高,显存占用大幅下降,且效果通常接近全量微调。默认首选方案。
QLoRA LoRA + 4bit 量化。基座权重量化到 4bit,仅训练 LoRA 参数。显存最省,单卡即可运行较大模型(如 13B/34B),是目前有限 GPU 资源下的主流选择。
训练目标与数据形式
SFT (Supervised Fine-Tuning) 标准指令 - 答案数据。目标是最大化参考答案的似然。这是让模型学会'按指令说话'的最稳第一步,但无法直接优化偏好或安全性。
Reward Modeling (RM) 训练一个奖励模型来预测人类偏好。它本身不是最终模型,而是为后续 RLHF 提供信号。难点在于 Reward Hacking(钻空子)风险。
PPO Training 经典 RLHF 阶段。用 PPO 最大化奖励,同时用 KL 约束防止偏离原模型太远。成本最高,工程难度最大,但对偏好提升明显。
DPO / KTO / ORPO / SimPO 偏好优化类算法。以 DPO 为例,不训练 RM 也不跑 PPO,直接用对比式目标让模型偏向优质回答。实现简单、训练稳定,很多团队已用它替代 PPO。ORPO 和 SimPO 则是更轻量的变体,将 SFT 与偏好项合并,训练更省事。
环境配置
推荐使用 Docker 部署,镜像 hiyouga/llamafactory:latest 已预装代码。由于权重文件位于本地,需挂载本地目录以便加载。
/workspace/code/LlamaFactory
数据处理
具体配置请参考官方文档 readme_zh.md。自定义数据集时,务必在 dataset_info 中注册对应的数据格式,确保解析无误。
训练参数调优
LoRA 核心参数
rank (r) 决定 LoRA 低秩矩阵的容量。公式为 ΔW=BA,其中 r 越大,可学习参数越多,拟合能力越强,但也更占显存且易过拟合。
- 轻任务/小数据:
r=4/8 - 结构化输出/规则较多:
r=16(常用) - 复杂迁移/大数据:
r=32/64
alpha
缩放系数,控制 LoRA 更新幅度。经验上常设为 alpha = 2*r,例如 r=16 时 alpha=32。若发现输出格式混乱,可适当减小 alpha 或学习率。


