模型微调
更新: 2026/9/2 字数: 0 字 时长: 0 分钟
为什么需要微调?
大语言模型(LLM)虽然具备强大的通用能力,但往往无法完美契合特定领域或个性化需求。微调(Fine-tuning) 是在预训练模型基础上,使用特定任务数据进行再次训练,以提升模型在目标任务上的表现。
微调的核心价值:
- 领域适配:让模型掌握医疗、法律、金融等垂直领域的专业知识和术语。
- 风格定制:调整模型的回答语气、格式、结构,使其更符合您的产品调性。
- 指令遵循:增强模型对复杂指令的理解和执行能力,提高交互体验。
- 行为与任务适配:通过特定领域数据训练模型,使其更熟悉领域术语、任务模式和回答方式。对于频繁变化或需要精确引用最新信息的知识,更推荐结合 RAG(检索增强生成) 或知识库方案,而非单纯依赖微调。
意义
对于资源有限、希望降低训练成本的场景,LoRA/QLoRA 微调通常是较具性价比的微调方案——仅需少量显卡内存,即可在消费级硬件上完成定制。
微调的应用场景
微调技术已在多个领域得到验证,以下是一些典型应用:
| 场景 | 描述 | 微调方法建议 |
|---|---|---|
| 客服机器人 | 使用企业历史工单、FAQ 数据微调,让模型准确回答产品相关问题 | QLoRA(低资源) |
| 医疗辅助 | 基于经过审核的专业数据进行领域/任务适配;高风险场景需结合人工审核与 RAG | LoRA / QLoRA + RAG |
| 教育辅导 | 针对特定教材、习题数据微调,实现个性化教学问答 | LoRA |
| 代码生成 | 使用公司内部代码库微调,生成符合规范的业务代码 | QLoRA |
| 数据分析 | 微调模型以理解企业内部数据表结构,自动生成 SQL 或报表 | LoRA |
| 多语言增强 | 强化小语种能力,或调整翻译风格 | QLoRA |
注意事项
医疗、法律、金融等高风险场景应进行严格的数据审核、模型评测和人工验证,微调不能替代专业人员判断。
常用微调工具:LLaMA-Factory
LLaMA-Factory 是一个开源的大语言模型微调框架,它统一了多种高效微调方法(LoRA、QLoRA、PiSSA 等),并提供 Web UI 和命令行两种操作方式,极大降低了微调门槛。
LLaMA-Factory 的优势:
- 支持众多主流模型:LLaMA、Qwen、Mistral、Gemma、Yi 等。
- 多种微调方法:LoRA、QLoRA、全参微调、PiSSA、DoRA 等。
- 多模态支持:可微调 LLaVA、Qwen-VL 等多模态模型。
- 内置数据集处理:支持 Alpaca、ShareGPT 等多种格式,方便接入自定义数据。
- 高效的训练优化:支持 SFT(监督微调)、RM(奖励建模)、PPO 等多种训练范式,并可结合 Flash Attention、梯度检查点等技术显著降低训练资源消耗。
微调流程概览
微调是一个多阶段的过程,基本流程如下:
原始模型 → 准备数据集 → (可选) 配置训练参数 → 执行微调 → 导出微调模型 → 合并/转换 → 部署验证准备数据集
将您的业务数据整理为模型微调所需格式。常用格式包括:
- Alpaca 格式(指令-输入-输出):json
{ "instruction": "计算以下表达式的值", "input": "3 + 5 * 2", "output": "13" } - ShareGPT 格式(多轮对话):json
{ "conversations": [ {"from": "human", "value": "你好"}, {"from": "gpt", "value": "你好!有什么可以帮您?"} ] }
实际使用 LLaMA-Factory 时,还需要在
dataset_info.json中注册数据集并指定字段映射。具体格式请参考 LLaMA-Factory 官方文档。
配置微调参数
根据硬件和模型规模,选择适当的微调方法(LoRA/QLoRA)并设置超参数(学习率、批次大小、轮数等)。LLaMA-Factory 提供了 Web UI 和 YAML 配置文件两种方式。
执行微调
启动训练任务,监控损失下降情况,并根据验证集表现适时停止。
导出与合并
如果采用 LoRA/QLoRA 等参数高效微调方法,训练输出通常是 LoRA Adapter;如果采用全参数微调,则输出的是完整模型权重或相应 checkpoint。
导出的 LoRA Adapter 可以通过 LLaMA-Factory 提供的工具与基座模型合并,得到完整的模型文件。
转换为 GGUF 格式
合并后的模型为 PyTorch 或 SafeTensors 格式,需按照 模型下载与转换 中的步骤将其转换为 GGUF 格式,以便在 Bot.js Pro 中加载使用。
验证与部署
在本地使用 llama-cli 或 llama-server 对微调后的模型进行推理测试,确认效果达标后即可投入生产。
建议
⏳ 详细微调步骤(数据集准备、参数配置、命令行示例等)正在编写中,敬请期待。 您也可以参考 LLaMA-Factory 官方文档 获取即时指导。
微调后模型处理
微调完成后,您需要将生成的模型文件整合并转换,才能用于 Bot.js Pro 的 $ai 模块。
LoRA 权重合并(如使用 LoRA/QLoRA)
推荐使用 YAML 配置文件的方式进行合并,稳定性更好。
示例 merge_config.yaml:
model_name_or_path: <基座模型路径>
adapter_name_or_path: <LoRA适配器路径>
template: <与模型匹配的模板,如 qwen>
finetuning_type: lora
export_dir: <导出完整模型路径>
export_size: 4
export_device: cpu
export_legacy_format: false执行合并命令:
llamafactory-cli export merge_config.yaml⚠️ 特别注意:如果使用 QLoRA 训练(即训练时基座模型加载了 4-bit 量化),进行 LoRA 合并时,
model_name_or_path应指定为对应的未量化基座模型(如 FP16 版本),而不是训练时使用的 4-bit 模型。
📌
export_size参数用于控制导出模型的分片大小(单位 GB),而非量化位数。
转换为 GGUF
按照 自行转换模型 章节的指引,使用 convert_hf_to_gguf.py 将合并后的模型转为 GGUF 格式。
常见问题
Q:微调和提示工程(Prompt Engineering)有什么区别?
- 提示工程:通过设计输入文本(如 few-shot 示例)引导模型行为,无需训练,灵活但效果有限。
- 微调:通过训练修改模型权重,使模型从根本上适应该任务,效果更稳定,但需要数据和算力。
两者可结合使用:微调 + 精心设计的提示通常能获得最佳效果。
Q:微调需要多少数据?
这取决于任务复杂度和模型规模。对于格式、风格或特定任务类微调,几百到几千条高质量样本有时即可产生明显效果;实际需求取决于任务复杂度、模型规模和数据质量。
Q:消费级 GPU(如 RTX 3060 12GB)能微调吗?
可以尝试。使用 QLoRA 方法,配合 4-bit 量化,结合梯度检查点和 Flash Attention,12GB 显存有潜力微调 7B 参数级别的模型。实际显存需求取决于模型规模、序列长度、批次大小以及训练配置,建议根据具体模型和硬件进行测试。
Q:微调后的模型会不会忘记原有的通用能力?
LoRA/QLoRA 只训练部分新增参数,相比全参数微调通常更容易保留基座模型能力,但实际效果仍取决于训练数据、训练轮数、学习率等因素,需注意避免过拟合。
Q:微调后必须合并 LoRA 才能转 GGUF 吗?
这取决于您的部署方式。llama.cpp 本身已支持通过 convert_lora_to_gguf.py 将 LoRA 适配器转换为 GGUF 格式,并在推理时使用 --lora 参数与基座模型一同加载。
但对于 Bot.js Pro 的安卓端部署场景,建议采用合并方式。
原因如下:
- 安卓端
llama.cpp的集成接口对独立加载外部 LoRA 文件的支持不够完善,加载策略在不同设备上可能存在兼容性差异。 - 合并后的单文件模型部署更简单,无需额外管理适配器文件,也避免了路径和加载顺序带来的潜在问题。
因此,对于 Bot.js Pro 用户,推荐的操作路径是:
LoRA 适配器 → 与未量化基座模型合并 → 完整 HF 模型 → 转换为 GGUF → 部署到安卓端合并后的 GGUF 文件同样支持分片加载,不影响大模型在移动端的部署灵活性。
