大模型微调
大模型的全称是大语言模型,他是语言模型,无论这个模型如何发展,底层的原理都是【成语接龙】,根据你前面的对话,猜测接下来的的内容。只不过大语言模型在参数规模,训练数据上面的规模要大于传统的语言模型,这是第一个要明确的概念,大语言有点像上课时候接话茬的学生。那么,为什么要微调呢。就要想让他接话茬的时候接的更准一些。举个例子来讲,我喜欢听相声,相声里面有个贯口叫报菜名,当我讲出“蒸羊羔”的时候,下面应该
什么是大模型微调
大模型的全称是大语言模型,他是语言模型,无论这个模型如何发展,底层的原理都是【成语接龙】,根据你前面的对话,猜测接下来的的内容。只不过大语言模型在参数规模,训练数据上面的规模要大于传统的语言模型,这是第一个要明确的概念,大语言有点像上课时候接话茬的学生。
那么,为什么要微调呢。就要想让他接话茬的时候接的更准一些。
举个例子来讲,我喜欢听相声,相声里面有个贯口叫报菜名,当我讲出“蒸羊羔”的时候,下面应该是“蒸熊掌,烧花鸭,烧子鹅”;
如果是厨师的话,就应该是“这道菜的做法是,先准备什么料”
如果是一个法律顾问的话,他会解答这个菜的原材料是不是违法乱纪。
所以,通过上面这几个例子,可以总结一下,之所以大模型要微调,是想让大模型这个通用模型,在某些专业领域上表现更优,接话茬接的更准。
是不是所有的场景都需要微调呢
并不是的,提示词工程具备一些优点,如果你所谓的领域或者要解决的问题不是什么有门槛的领域,那么提示词工程可以解决你的问题。
提示词工程是你和大模型交互的通道,上手容易,使用成本低,没有任何技术门槛。
但是由于现在大模型具有上下文窗口长度的限制,因此,当你的对话超过一定长度之后,内容会被截断。因此在回答的一致性上表现不好,表现上就是容易遗忘信息、幻觉难以纠正;
而微调恰好可以解决这样的问题,微调可以支持几乎无限的数据量,学习新信息、纠正错误认知、高频使用下长期成本更低;但是缺点是门槛较高,对数据要求高,无论是数量和质量上都有较高的要求。
微调有哪些类型
按照更新的参数规模来区分:
-
全量微调 (Full Fine-tuning):更新模型的所有参数。效果最强,但极度耗费显存和算力。
-
参数高效微调 (PEFT - Parameter-Efficient Fine-tuning):只更新极少数参数。
-
LoRA / QLoRA:目前最主流的技术。通过在模型侧边增加“低秩适配器”,让 16GB 的家用显卡也能跑 7B 模型的微调。
-
Adapter:在原模型层之间插入小型神经元网络层。
-
Prefix / Prompt Tuning:不改动模型参数,只在输入层添加一段可学习的“软提示词”。
-
按照领域来区分:
这是从你想让模型“变成什么样”来分类:
-
领域微调 (Domain-specific Fine-tuning):给模型灌入大量行业数据(如法律条文、医学文献、你们公司的 CRM 业务逻辑)。目标是让模型掌握“行业知识”和“黑话”。
-
任务微调 (Task-specific Fine-tuning):专门针对某一个任务进行强化。例如:
-
情感分析微调:只判断评论是好评还是差评。
-
SQL 生成微调:专门提升将自然语言转为 SQL 的准确率。
-
按“学习范式”分类
这是从“模型怎么学习”来分类:
-
有监督微调 (SFT - Supervised Fine-tuning):最基础的,给模型看标准答案(Q&A 对)。指令微调其实就是 SFT 的一种。
-
对齐微调 (Alignment / RLHF):让模型更符合人类价值观。
-
RLHF (强化学习):人类给模型的多个回答打分,模型根据分数高低调整行为(通常用于让模型变礼貌、不产生歧义)。
-
DPO (直接偏好优化):最近非常流行的替代 RLHF 的技术,直接告诉模型 A 回答比 B 回答好,训练起来更简单稳定。
-
如何选择:
-
针对“非技术人员取数”:建议先做 SFT (有监督微调),给它 500-1000 条你们公司真实的业务逻辑与 SQL 对应样本。
-
针对“话术纠偏(损失客诉)”:建议尝试 DPO (直接偏好优化)。给模型两组话术,标记哪组是“顾问过度承诺(扣分)”,哪组是“规范回复(加分)”,这样模型能学会识别“红线”。
微调在数据准备上的内容
1、什么样的数据是好的数据
高质量: 由于模型是基于概率去做的,因此高质量的数据能让他接话茬接的更准
多样性: 覆盖你所在业务的各个场景,否则你的模型最终输出的时候是个偏科生,无法针对你的场景进行全面的回答;
真实数据胜过生成数据:在有些场景下,由于样本较少,可以使用 AI 根据过往的真实数据,生成大量的数据,弥补量的不足。但是基本上是过于套路化的;
质量胜过数量:和上面的差不多,在微调阶段,即使只有几百条极高质量的数据,效果也往往优于数万条杂乱的数据。因为预训练已经完成了海量知识的积累,微调只需要精准的引导
2、数据处理的核心步骤
-
收集 (Collect):获取指令-响应对(如:问答对、任务描述等)。
-
拼接 (Concatenate):将内容填入提示词模板(Prompt Template)。
-
分词 (Tokenizing):将文本转化为模型能理解的数字。
-
划分 (Splitting):将数据分为训练集和测试集(通常采用 90/10 比例)
3、技术难点:粉刺
Token 是什么:不是简单的按词切分,而是基于字符频率。例如单词后缀 ing 经常被识别为一个独立的 Token(编号 278),因为它在英语中极度常用
匹配原则:必须使用模型自带的 AutoTokenizer。如果模型 A 使用了模型 B 的分词器,就像用错误的密码本解密,模型会完全无法理解输入内容
4、旁门左道之术
填充 (Padding):对于较短的句子,在末尾补充特定字符(通常是 0),使其与最长句子对齐
截断 (Truncation):对于超出模型上限的长文本,需要切除多余部分。
-
技巧:可以根据任务决定从左侧还是右侧截断(例如在指令微调中,保留开头的指令往往比保留结尾更重要)
更多推荐


所有评论(0)