大模型微调学习笔记
🧠 1. 什么是通用大模型?
大语言模型是指在深度学习中具有大量参数和复杂结构的机器学习模型,通常用于处理复杂的任务,如自然语言处理、计算机视觉和语音识别等。这些模型的参数数量通常在数亿到数千亿之间,能够从海量数据中学习到丰富的特征和模式。
通用大模型先在海量通用数据上进行预训练,学习语言、知识和推理模式;微调则是在这个基础上,让模型更适合某个具体任务、领域或表达风格。
🎯 2. 微调为什么这么重要?
微调的价值主要体现在“让通用模型更贴近具体场景”上:
- 适应特定领域问答:通用模型知道很多,但在医疗、法律、企业内部知识等专业场景里,直接使用往往不够稳定。
- 补足基础数据缺口:当预训练语料缺少某个垂直领域的数据时,可以通过高质量样本继续训练,让模型理解领域术语和业务语境。
- 降低训练成本:从零预训练大模型成本极高,而微调更像是在已有能力上做定向强化,可以用更少的数据和算力达到目标效果。
- 保护数据安全与隐私:企业可以在可控环境中使用内部数据进行训练,减少敏感信息外泄的风险。
- 降低部署与使用成本:通过参数高效微调,可以让较小模型在特定任务上获得不错效果,减少推理资源消耗。
📌 模型微调的场景与案例
适合考虑微调的场景通常有这些:
- 特定任务需求:例如客服问答、信息抽取、文档总结、代码补全、智能助理等。
- 小规模高质量数据:当数据量不大但标注质量较高时,微调通常比单纯堆 Prompt 更稳定。
- 语言风格和个性化需求:让模型学习固定语气、输出格式、角色设定或品牌表达方式。
- 复杂业务规则:把流程规范、边界条件和格式要求沉淀到模型行为里,减少重复提示。
- 准确性和泛化能力提升:围绕目标任务补充训练样本,让模型在真实业务场景中少跑偏。
🧩 3. 大模型微调的必要性
🔍 3.1. 微调与 RAG 的区别
RAG 更像是“查资料后回答”,微调更像是“把能力训练进模型里”。
RAG:主要整合的是对知识库内容进行整合、汇总后输出。更好的反馈知识库中的内容

微调:对定制化模型的问答,是模型学习到的内容。

⚖️ 3.2. 微调和 RAG 如何选择?
都是对行业内知识的问答:我该怎么选?
可以先用下面这张表快速判断更适合哪一种技术路线:
| 场景 | RAG | 微调 |
|---|---|---|
| 动态数据 | ✅ | |
| 成本 | ✅ | |
| 可解释性 | ✅ | |
| 场景需要通用能力 | ✅ | |
| 特色能力 | ✅ | |
| 延迟 | ✅ | |
| 微智能设备 | ✅ | |
| 模型幻觉 | ✅ | ✅ |
如果核心问题是“知识会不会变、能不能查得到”,优先考虑 RAG;如果核心问题是“模型本身要不要学会某种能力、风格或领域模式”,再考虑微调。
为什么通用能力选择 RAG?
RAG = 通用大模型能力 + 外部知识库
微调 = 改变模型参数,让模型更偏向某类任务/风格/领域
RAG 具备通用能力、微调延迟低
- 场景一:医学论文整理:微调(特色能力)
- 场景二:智慧库房:需要经常更新库房清单:RAG
- 场景三:智慧销售:经常更新产品数据:RAG
🧭 3.3. 微调与其他技术方向的区别与联系
从学习路径和应用定位上看,可以把几类技术方向放在一起比较:
| 技术阶段 | 面向人群 | 技术积累 | 应用场景 | 特征总结 |
|---|---|---|---|---|
| 提示工程(Prompt Engineering) | 终端用户 | 对 ChatGPT 等应用的提示词有基本的了解和使用 | 文本生成、机器翻译等 | 门槛低,易于上手 |
| AI 智能体(Agents) | 大模型应用开发人员 | 了解大模型基础原理和理论,熟悉特定领域的业务逻辑和流程 | 自动客服、虚拟助手 | 侧重于交互性和用户体验 |
| 大模型微调(Fine-tuning) | 领域模型研发、私有化团队开发人员 | 掌握神经网络和机器学习概念,有数据处理和模型训练经验 | 语义理解、领域知识学习 | 通用性强、性价比高 |
| 预训练技术(Pre-training) | 大模型研究开发人员、数据科学家 | 熟悉深度学习原理和网络架构,有大规模数据处理和模型训练经验 | 多模态学习、语言模型预训练 | 前期投入大、效果显著 |
从技术开发角度上:
预训练是一个小学生。
微调大模型就相当于一个具有写作能力的小学生。
提示工程就是老师给出的文章大纲,希望学生按照这个格式输出。
Agents 就是学生可以使用的工具:百度、书籍等。
提示工程、agents 的工具本质上都是来服务于大模型,如果大模型本身具有期望领域的能力,输出的效果会更好。三个融合在一起才能在指定领域发挥出最好的效果。
就好比专门学文科学生 A、普通学生 B、专门学理科的 C 来写一首散文诗,同样大纲、有限且相同工具写出来的效果一定是 A > B > C,如果想要写出与 A 相同水平的散文诗就要使用更好的提示词以及更丰富的工具才行。
🛠️ 4. 怎么去微调模型?
🧪 4.1. 微调的步骤
整体流程可以先从“模型、数据、参数方法”三条线开始,最后进入训练、评估与部署:
- 选择预训练模型:选择一个在大规模数据集上预训练好的模型,如BERT、GPT等。
- 准备新任务数据集:收集并处理与特定任务相关的数据集,包括训练集、验证集和测试集。
- 设置微调参数及方法:根据任务特性和模型特点,设置合适的微调参数,如学习率、批处理大小、训练轮次等。
- 进行微调训练:在新任务数据集上对预训练模型进行进一步训练,通过调整模型权重和参数来优化模型在新任务上的性能。
- 评估与调优:使用验证集对微调后的模型进行评估,并根据评估结果调整模型结构和参数,直到达到满意的性能。
- 模型部署:将微调后的模型部署到实际的应用场景中,以实现模型的实用价值。
✅ 4.2 微调的必要条件

- 理论基础:大部分开发人员不需要完全理解每个算法的推导过程,但是至少知道每个微调方向的区别和原理,最低也要把它当做成一个盲盒直到扔进去一组数据会产生什么样的输出。
- 工具调用:微调的热度催生了很多框架,操作界面友好大大降低了代码门槛,这部分至少要掌握一种框架,提交好好git了吗如果可以最好基于原生模型进行微调,会更加清楚的了解大模型微调。
🧬 5. 大模型微调方向概述
🎚️ 5.1. 微调模型的范围
市面上的绝大多数开源模型都可以进行微调
选择原则:最好能支持私有服务器部署及线下微调,数据是非常敏感的信息。
线上微调:大部分使用对数据保密要求不那么强烈的情况。
5.2.根据微调方法分类
全量微调(Full Fine-tuning):
全量微调是指在预训练好的大模型基础上,针对特定任务或特定数据集进行进一步的训练,来适应新的任务需求。预训练模型通常在大规模数据上进行了广泛的训练,已经具备了一定的通用知识和特征提取能力。通过全量微调,可以将这些通用知识迁移到特定任务上,从而提高模型在该任务上的性能。
主要调整内容:
- 模型参数 所有层的权重:预训练模型的所有层(包括嵌入层、隐藏层、输出层等)的权重都会在微调过程中进行更新。每一层的所有部分都会根据提供的数据进行优化。 偏置项:除了权重外,每个神经元的偏置项也会被调整。
- 任务特定的输出层调整:通常情况下,预训练模型的输出层不适合特定任务。因此,需要在预训练模型的基础上添加任务特定的输出层。
- 学习率:初始学习率通常设置得较小,以避免破坏预训练模型的权重。
- 损失函数…
部分微调—高效微调(PEFT):
模型中间层方向
冻结微调(Frozen Fine-tuning) 定义:只更新模型的顶层或少数几层,而保持预训练模型的底层参数不变。 应用场景:目标任务与预训练模型之间有一定相似性,或者任务数据集较小。但是微调性能很难达到最佳。
逐层微调(Layer-wise Fine-tuning) 定义:从顶层开始,逐渐向底层推进。这种方法允许更细粒度地控制模型的调整过程,直到所有层都被微调。 应用场景:适用于需要精细调整模型的任务。但是需要多次调整与训练,且花费时间较长。
动态微调(Dynamic Fine-tuning) 定义:在微调过程中动态调整学习率、批量大小等超参数,以优化模型性能。 应用场景:适用于需要高性能和高精度的任务。实现方式复杂且对资源要求较高。
提示词微调:

**前缀微调:**冻结原有训练模型,在transformer的每一层增加一个神经网络来引导大模型每一层针对这个特定任务进行指导性输出与权重倾斜计算。当有点类似于
**提示词微调:**通过设计和优化输入提示来引导模型生成所需输出,而不是对模型进行重新训练。使用固定的一种或者几种提示词,对这种录入的提示词进行优化训练,使得大模型对这类提示词输出效果更优秀,当用户输入了其中一种完全性相同的提示词,会让模型输出的效果更好更稳定。
对比prefix 每一层都进行增加前缀,当前只用了在输入层增加了embedding前缀,减少了耦合性直接将一种或者多种提示词针对项目进行匹配与向量化,方便模型更好理解用户输入与处理方向。相对训练容易些并且泛化及增加新项目训练成本较小。
支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!