大模型微调与RAG技术问答
大模型微调与RAG技术问答
本文针对大模型微调、对齐及检索增强生成中的核心问题,进行系统性的技术解答,覆盖从参数选择到工程落地的全流程实践。
一、LoRA 微调 7B 模型的核心配置与差异
1.1 LoRA 秩(Rank)的选择策略
LoRA 的秩是控制低秩矩阵拟合能力的核心参数,针对 7B 规模的模型,推荐的选择逻辑如下:
默认基准值:优先选择
r=8,这是兼顾效果与显存占用的最优平衡点,能够覆盖绝大多数通用微调场景。效果导向调整:如果微调后任务效果不佳、特征拟合不足,可将秩提升至 12 或 16,增强模型的拟合能力;如果出现过拟合(验证集 loss 上升),则可降至 4 或 6,同时配合正则化降低过拟合风险。
显存约束调整:如果显存资源紧张,固定秩≤8 即可,此时 LoRA 的新增参数量仅为百万级,不会带来明显的显存压力。
1.2 训练时的冻结参数
标准 LoRA 微调的核心机制是冻结预训练模型的所有权重,仅训练新增的两个低秩分解矩阵(A 和 B)的参数:
原模型的所有预训练权重全程保持固定,不会被更新,避免了灾难性遗忘。
通常会选择 Transformer 层中的关键模块插入 LoRA 矩阵,默认目标模块为注意力层的
q_proj(query 投影)和v_proj(value 投影);针对复杂任务,也可扩展至 MLP 层的up_proj、down_proj等模块。
1.3 LoRA 与全参数微调的差异
| 维度 | LoRA 微调 | 全参数微调 |
|---|---|---|
| 显存占用 | 仅需~5-10GB 显存,仅需存储少量 LoRA 参数的梯度与优化器状态 | 7B 模型需要约 84GB 显存(AdamW 优化器下,每个参数需要存储权重、梯度、一阶矩、二阶矩,合计 12 字节 / 参数,7B*12=84GB) |
| 收敛效果 | 收敛速度快,训练稳定,不易过拟合,最终效果与全参数微调相当,部分场景下泛化能力更优 | 收敛周期长,容易过拟合,存在灾难性遗忘风险,可能破坏预训练的通用能力 |
二、SFT 与预训练阶段的核心区别
监督微调(SFT)与预训练是大模型训练的两个核心阶段,二者在数据、损失与目标上存在本质差异:
2.1 数据格式差异
| 维度 | 预训练 | SFT 监督微调 |
|---|---|---|
| 数据类型 | 海量无标注的通用文本,数据量可达万亿 token 级 | 小规模高质量的结构化指令 - 响应对,数据量通常为百万级以内 |
| 数据结构 | 无特殊结构,将所有文本连续拼接,填充至模型最大上下文长度 | 带有角色标记的结构化格式,如 ChatML 格式,区分 System、User、Assistant 角色,明确划分输入指令与输出回答 |
| 格式要求 | 仅需保证文本的连续性,无额外格式要求 | 必须严格遵循底座模型的 Prompt 模板,保证训练与推理的格式一致性 |
2.2 损失函数差异
二者均使用交叉熵损失,但损失的计算范围完全不同:
预训练:对序列中所有位置的 token 计算交叉熵损失,模型需要预测每一个位置的下一个 token,学习通用的语言建模规律。
SFT:仅对 Assistant 的回答部分计算损失,用户指令部分的 token 会被 mask,不参与损失计算。这是因为 SFT 的目标是让模型学会根据指令生成回答,而非复述用户的输入。
2.3 优化目标差异
预训练:目标是学习通用的语言分布与世界知识,让模型具备基础的语言理解与生成能力,为后续任务打下基础。
SFT:目标是对齐人类的指令意图,激发模型预训练的知识,让模型学会按照人类的要求生成符合预期的回答,改变模型的行为模式。
三、RLHF 中 PPO 与 DPO 的核心区别与选择
3.1 核心区别
PPO(近端策略优化)与 DPO(直接偏好优化)是当前大模型对齐的两大主流算法,核心差异如下:
| 维度 | PPO | DPO |
|---|---|---|
| 训练流程 | 多阶段流程:先训练 SFT 模型,再训练奖励模型,最后用 PPO 微调策略模型 | 单阶段流程:无需训练奖励模型,直接用偏好数据优化策略模型 |
| 模型依赖 | 需要同时维护策略模型、价值模型、奖励模型、参考模型共 4 个模型 | 仅需要策略模型与 SFT 参考模型,共 2 个模型 |
| 训练模式 | On-policy:每轮训练需要重新生成样本,样本效率低 | Off-policy:直接使用静态的偏好数据训练,样本效率高 |
| 实现复杂度 | 复杂,需要调优 KL 散度惩罚、clip 范围等大量超参 | 简单,仅需调整 β 超参,基于标准的交叉熵损失改造 |
3.2 数据量与稳定性差异
数据量需求:PPO 每轮训练需要约 50K 样本,收敛需要 8-15 轮,总数据量需求大;DPO 每轮仅需约 10K 样本,3-6 轮即可收敛,数据量需求仅为 PPO 的 1/5。
训练稳定性:PPO 训练敏感,超参调优难度大,容易出现奖励黑客、模式崩溃、KL 散度爆炸等问题,训练过程容易震荡;DPO 训练稳定,超参少,不易出现训练崩溃,收敛过程平滑。
3.3 选择建议
在数据量有限、追求训练稳定性的场景下,我会优先选择 DPO,原因如下:
DPO 的样本效率更高,在中小规模的偏好数据下就能达到很好的对齐效果,降低标注成本。
DPO 训练更稳定,实现简单,不需要复杂的超参调优,降低工程落地的难度。
DPO 的算力需求更低,显存占用仅为 PPO 的 1/2,在有限的硬件资源下就能完成对齐。
目前的实践证明,DPO 在中小模型上的对齐效果已经接近 PPO,完全能够满足绝大多数场景的需求。
四、70B 模型在 4 张 80G A100 上的训练方案
针对 70B 参数的大模型,在 4 张 80G A100 的硬件条件下,可通过以下方案实现高效微调:
4.1 并行策略
采用混合并行策略,最大化利用硬件资源:
张量并行(TP=4):将模型单层内的参数拆分到 4 张卡上,每个卡负责部分参数的计算,通过 NVLink 高速通信完成层内的同步,将单卡的权重显存占用降低至原来的 1/4。
FSDP 完全分片数据并行:结合 Fully Sharded Data Parallel,将参数、梯度、优化器状态都分片到 4 张卡上,进一步分摊显存压力,同时支持数据并行的训练加速。
若使用 QLoRA 微调,由于基础模型量化后单卡即可加载,可直接使用数据并行,4 卡同时处理不同的样本,加速训练过程,通信开销极低。
4.2 显存优化策略
4bit 量化(QLoRA):将基础预训练模型量化为 4bit 精度存储,70B 的模型权重仅需要 35GB 显存,单张 80G 的 A100 即可完整加载,4 卡的情况下显存压力极小。
梯度检查点:启用梯度检查点技术,牺牲少量计算速度,将激活值的显存占用降低 70% 左右,解决长序列训练的激活显存瓶颈。
梯度累积:通过梯度累积模拟更大的 batch size,不需要实际的大 batch,避免了大 batch 带来的显存压力,同时保证训练的收敛效果。
激活重计算:对 Transformer 层的激活进行重计算,进一步降低激活的显存占用。
4.3 精度选择
基础模型:使用 4bit 量化存储,在保证模型精度的同时最大程度降低显存占用。
训练参数:LoRA 的训练参数使用 bf16 精度,bf16 的动态范围更大,能够避免梯度溢出,同时比 fp32 节省一半的显存,平衡训练精度与显存占用。
混合精度训练:启用混合精度训练,自动切换精度,进一步优化显存与速度。
五、微调数据集的质量保障与处理策略
5.1 数据清洗策略
格式标准化:统一文本编码为 UTF-8,过滤乱码、HTML 标签、特殊符号、纯符号的无效文本,统一角色格式,保证数据结构的一致性。
长度过滤:过滤过短(token 数 < 5)或过长(超过模型上下文长度)的样本,避免模型学习到异常的长度模式,保证训练的稳定性。
质量过滤:
用底座模型计算样本的困惑度,过滤困惑度过高的低质量样本,这些样本不符合正常的语言规律。
用有毒内容分类器过滤有害、违规的样本,保证数据的安全性。
正确性校验:用强模型(如 GPT-4、Qwen-72B)校验回答的正确性,过滤回答错误、事实错误的样本,保证数据的正确性。
5.2 去重策略
精确去重:对整个指令 - 回答样本计算 MD5/SHA256 哈希,去除完全重复的样本,避免重复数据过度放大特定模式的权重,导致过拟合。
模糊 / 语义去重:
用 SimHash 算法识别近重复的文本,去除编辑距离过小的样本。
用语义嵌入模型(如 BGE、BERT)计算样本的向量,通过余弦相似度识别语义高度相似的样本,去除相似度 > 0.95 的近重复样本,避免模型学习到模板化的回复。
5.3 采样策略
分层采样:按领域、任务类型进行分层采样,保证各个领域、任务的样本比例均衡,避免某个领域的数据占比过高,导致模型过拟合到特定领域,保证数据的多样性。
长度平衡采样:对不同长度的样本进行平衡采样,避免短样本过多导致模型只擅长短文本,或长样本过多导致训练不稳定。
难度混合采样:混合不同难度的样本,保证模型的泛化能力,不会只擅长简单任务。
六、微调后的模型评估方法
微调后需要从多个维度评估模型效果,以下是 4 个核心维度及自动化评估方案:
6.1 基础语言建模能力
指标:困惑度(Perplexity),衡量模型对文本的建模能力,困惑度越低,模型的语言建模能力越好。
自动化方案:在独立的测试集上,直接通过代码计算模型的困惑度,完全自动化,无需人工干预。
6.2 任务性能指标
指标:针对具体任务选择对应的指标:
生成任务:BLEU、ROUGE、METEOR,衡量模型输出与标准回答的文本相似度。
分类任务:准确率、F1 分数、AUC,衡量分类的准确性。
自动化方案:使用 OpenCompass、lm-evaluation-harness 等开源评估工具,自动加载标准基准数据集,批量推理并计算指标,全程自动化完成。
6.3 指令跟随与对齐能力
指标:指令遵循度、回答有用性、相关性等维度的打分。
半自动化方案:
使用 MT-Bench、AlpacaEval 等标准对齐基准,自动完成评估。
用强模型(如 GPT-4、Qwen-72B)作为裁判,批量输入用户指令、模型回答,让裁判模型按照预设的维度自动打分,批量处理所有测试样本,仅需少量人工抽检即可,效率比人工评估高 10 倍以上。
6.4 事实正确性与安全性
指标:事实准确率、有害内容拒绝率。
自动化方案:
用 TruthfulQA 基准检测模型的事实幻觉,自动计算事实准确率。
用 SafetyBench 基准检测模型的安全性,自动计算有害请求的拒绝率。
这些基准都有现成的标注数据,可直接自动化跑测,无需人工标注。
此外,可将上述评估流程集成到 CI/CD 流水线中,每次微调完成后自动触发评估,生成可视化的评估报告,实现全自动化的模型验收。
七、RAG 中基于文档生成的算法保障与温度原理
在文档召回后的总结场景中,除了提示词约束,还可以通过以下算法手段保证回答基于文档,减少幻觉。其中提示词约束方案是基础且易落地的第一层保障,具体可落地方案如下:
7.1 提示词约束方案
核心思路是通过明确、严谨的提示词,强制模型锚定召回文档,限制其自主编造内容,同时规范输出格式,便于后续校验。具体方案分为4类,包含可直接复制使用的模板:
边界指令约束:明确告知模型生成范围,禁止超出文档内容。模板示例:“请基于下方提供的召回文档,对内容进行总结。严格禁止使用文档中未提及的任何信息、数据、案例或观点,禁止编造任何未在文档中出现的内容,若文档中无相关信息,直接回复‘暂无相关信息’,不进行任何延伸。”
溯源约束:要求模型每一条核心结论都对应文档来源,便于人工/自动化校验。模板示例:“总结时需遵循‘结论+文档依据’的格式,每一条总结观点后,用括号标注其来自文档的哪一部分(如“文档第3段”“文档中关于XX的描述”),确保所有结论均可在文档中找到明确依据。”
防混淆提示:避免模型混淆“文档内容”与“自身知识”。模板示例:“请完全遗忘你自身的预训练知识,仅以提供的召回文档为唯一信息来源进行总结,不加入任何你认为‘正确’但文档中未提及的内容,不进行任何主观补充或推测。”
格式约束:规范输出结构,减少模糊表述,降低幻觉概率。模板示例:“总结需分点清晰,语言简洁,仅提炼文档核心信息,不添加修饰性、扩展性语句;禁止使用‘可能’‘大概’‘推测’等模糊表述,所有表述必须是文档中明确提及的确定信息。”
7.2 算法层面的幻觉抑制手段
约束解码:在解码阶段,对模型的 logits 进行约束,将召回文档中不存在的 token(或 n-gram)的 logits 设置为负无穷,强制模型只能从文档的词汇中选择,避免生成文档外的内容;也可通过语义约束,保证生成内容的语义与文档一致。
采样策略优化:使用对比搜索(Contrastive Search),在生成过程中同时考虑模型预测与上下文的一致性,避免生成与上下文无关的内容;同时结合 top-p/top-k 采样,限制候选 token 的范围,减少低概率 token 的采样。
后处理校验:生成回答后,用事实一致性检测模型,检查回答中的每个事实是否都能在召回文档中找到:
用嵌入模型计算回答与文档的语义相似度,过滤语义不一致的内容。
用二分类器判断生成的语句是否与文档匹配,如果存在无法验证的内容,直接返回 “暂无相关信息”。
RAG 专属微调:用 RAG 场景的样本微调模型,让模型学会只基于上下文生成,从训练层面减少幻觉。
7.3 温度控制的算法原理
温度是通过调整模型的概率分布来减少幻觉的核心参数,其算法原理如下:
在模型生成 token 时,会先计算每个词的 logits(原始分数),然后通过 Softmax 函数将其转换为概率分布,温度参数 T 会在 Softmax 之前对 logits 进行缩放:
其中 $x_i$ 是第 i 个词的 logit, $x_{max}$ 是 logits 的最大值(用于防止数值溢出)。
当T<1时,logits 之间的差异会被放大:原本大的 logit 会变得更大,小的 logit 会变得更小,Softmax 之后的概率分布会变得更陡峭。
此时模型会更倾向于选择概率最高的 token,也就是那些基于上下文、来自召回文档的高概率 token,而不会选择那些低概率的、模型自己编造的 token。
这会大幅降低生成的随机性,让输出更确定、更保守,从而有效减少幻觉。当 T=0 时,模型会退化为贪心搜索,仅选择概率最高的 token,完全没有随机性,是抑制幻觉的最强配置。