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 不调模型,仅优化检索器 无需模型修改 快速构建企业问答 💤(最轻)

总结

大模型微调是一项技术性强但也极具性价比的任务。要把微调做好,不仅仅是“跑通训练脚本”,更需要设计良好的目标、数据、策略和评估机制。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐