大模型微调
大模型持续火热,对社会的改造也正在持续不断地发生,通过大模型的微调,将其应用到不同的领域,也正在逐步推进。不管你是不是做大模型微调的,我觉得都需要了解一些大模型微调相关的知识,以下从三个方面进行介绍,分别是微调数据、微调工具和微调方式。大模型微调是一项技术性强但也极具性价比的任务。要把微调做好,不仅仅是“跑通训练脚本”,更需要设计良好的目标、数据、策略和评估机制。
rag系列文章目录
前言
大模型持续火热,对社会的改造也正在持续不断地发生,通过大模型的微调,将其应用到不同的领域,也正在逐步推进。不管你是不是做大模型微调的,我觉得都需要了解一些大模型微调相关的知识,以下从三个方面进行介绍,分别是微调数据、微调工具和微调方式。
一、微调数据
在大语言模型微调中,数据格式至关重要。常见的微调数据格式包括 Alpaca、ShareGPT、OpenAI Chat、Vicuna、ChatML 等。其中 Alpaca 和 ShareGPT 格式是最主流、最常用于指令微调(SFT)和多轮对话训练的标准格式。
Alpaca 是 Stanford 团队在 LLaMA 上进行指令微调时使用的数据格式,它基于 Self-Instruct 方法构建,数据大多为单轮指令 - 响应。
示例如下,其中instruction字段是用户的指令(核心),input字段是用户的指令(核心),output字段是模型应生成的回答。它适用于单轮对话模型和指令跟随微调(SFT),最适合新手上手、自定义任务训练。
{
"instruction": "写一个将摄氏温度转换为华氏温度的函数。",
"input": "摄氏温度 = 30",
"output": "你可以使用如下公式:F = C × 9/5 + 32,因此答案是 86°F"
}
ShareGPT 是社区用户通过 ChatGPT 网页对话后,用插件导出的多轮对话数据,广泛用于多轮 Chat 模型微调,如 Vicuna、Baize 就基于这类数据训练。
示例如下,conversations字段是一个列表,每项代表一轮对话,from字段表示说话者,value表示对话文本。
{
"conversations": [
{"from": "human", "value": "你是谁?"},
{"from": "gpt", "value": "我是由 OpenAI 训练的大型语言模型。"},
{"from": "human", "value": "你能写一首诗吗?"},
{"from": "gpt", "value": "当然可以,以下是一首诗..." }
]
}
它适合多轮对话,训练聊天模型,支持上下文记忆模拟。
二、微调工具
Unsloth 和 LLaMA Factory 是当前社区中非常热门的两款大模型微调工具。
它们都支持 LoRA、QLoRA 等高效微调方法,并面向 LLaMA 系列及其他 HuggingFace 兼容模型,但它们在性能、支持范围、社区活跃度、加速手段、资源消耗等方面有显著差异。
支持模型和数据格式的对比:
| 项目 | Unsloth | LLaMA Factory |
|---|---|---|
| 支持模型 | 专注于 LLaMA、Mistral、Gemma、Phi-2 等主流开源模型;支持 QLoRA 格式 | 支持 HuggingFace 上的绝大多数 Transformer 模型,专为 Meta 的 LLaMA 系列设计 |
| 支持格式 | 使用 HuggingFace 格式的权重;兼容 torch, safetensors, gguf |
支持原生 HuggingFace 格式;支持 Alpaca、ShareGPT、OpenAI API 格式数据 |
| 数据预处理 | 内置 OpenAI, ShareGPT, DPO, SFT 格式解析器 | 支持 JSON、JSONL、TSV 等,结构清晰,支持多轮对话格式转换 |
| Chat 模型微调支持 | ✅(内置对话模板适配) | ✅(支持chat模板如ChatML、LLaMA-2 chat) |
| 语义对齐/指令微调 | ✅(支持 DPO, PPO) | ✅(支持 SFT、DPO、RLHF) |
性能和加速手段对比:
| 项目 | Unsloth | LLaMA Factory |
|---|---|---|
| 训练速度 | 极快,号称“最多快 2-5 倍”,得益于 Triton kernel 优化 | 取决于后端(PyTorch/PEFT),速度中等偏上 |
| 优化手段 | - Triton 实现自定义 CUDA kernel - 低精度训练(QLoRA) - 支持 FlashAttention-2 - 可自动量化 |
- 依赖 HuggingFace PEFT - 支持 FlashAttention 和低精度训练 |
| 内存优化 | ✅ 支持 4bit/8bit 训练;可在单卡上训练 13B 模型 | ✅ 支持 4bit QLoRA;但大模型仍推荐多卡 |
| 推理加速 | ✅内置优化推理引擎,可直接部署 | ❌ 需导出至其他推理框架,如 vLLM |
| 对 Triton 支持 | ✅ 高度依赖并优化 | ❌ 不依赖,兼容性更强 |
训练成本对比:
| 项目 | Unsloth | LLaMA Factory |
|---|---|---|
| 显存需求 | 极低,7B QLoRA 可在 8GB VRAM 上运行(单卡) | 中等,LoRA 微调通常需 16GB+,更高效需多卡 |
| 训练时间 | 快(据称能比常规方法快数倍) | 适中(基于 Transformers + PEFT) |
| 资源弹性 | 高:适合低端消费级 GPU | 中等:推荐 A100、3090 以上显卡 |
| 部署效率 | ✅ 提供自动导出推理模型脚本 | ❌ 需自己处理模型导出(推荐vLLM等) |
综上,如果是小团队、资源有限、希望快速搞定一个定制模型,推荐用 Unsloth;如果希望体系完整、容易复现文献中的方法、有多人协作环境或复杂数据结构,建议使用 LLaMA Factory。
三、微调方式
大模型微调(Large Language Model Fine-tuning)主要有以下几种方式,每种方式都适用于不同的资源环境和业务场景,区别在于训练目标、参数更新范围、资源消耗与训练难度。
| 微调方式 | 参数更新 | 特点 | 适用场景 | 资源消耗 |
|---|---|---|---|---|
| 1️⃣ 全量微调(Full Finetuning) | 所有参数 | 效果最好,但开销大 | 自定义领域,需模型大幅变更 | 🚀🚀🚀🚀🚀 |
| 2️⃣ 参数高效微调(PEFT,如 LoRA/QLoRA) | 极少参数 | 高效轻量,训练快 | 普通任务、单卡训练 | 🚀 |
| 3️⃣ 指令微调(SFT) | 可结合全量/LoRA | 模型学会“听懂”指令 | 聊天模型、API代理 | 🚀🚀 |
| 4️⃣ 偏好对齐(DPO/RLHF) | 部分参数 + 奖励建模 | 提高对齐性,避免“瞎答” | AI 助手、对话系统 | 🚀🚀🚀 |
| 5️⃣ Adapter、Prefix-Tuning、P-Tuning v2 | 插入小模块 | 可热插拔、灵活切换任务 | 多任务系统 | 🚀🚀 |
| 6️⃣ Embedding 微调 | 只调 token embedding | 用于检索或语义匹配 | 向量检索、对话路由 | 🚀 |
| 7️⃣ RAG/Retrieve-Augmented Generation | 不调模型,仅优化检索器 | 无需模型修改 | 快速构建企业问答 | 💤(最轻) |
总结
大模型微调是一项技术性强但也极具性价比的任务。要把微调做好,不仅仅是“跑通训练脚本”,更需要设计良好的目标、数据、策略和评估机制。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐




所有评论(0)