ARCHIVE / INITIALIZING000%
正在载入档案界面SYS.07
Interview Prep

微调与 LoRA

区分 Prompt、RAG、Tool、LoRA 与全量微调,解释低秩更新、数据构造、评测和 Agent 项目落点。

微调与 LoRA

Agent效果不符合要求时,不应直接开始训练。需要先识别问题类型:输出契约不稳定时优化Prompt或Schema;事实频繁变化时使用RAG或Tool;稳定行为模式难以通过提示获得时考虑LoRA;仅在需要深层能力迁移且数据与算力充足时考虑全量微调。

Prompt、RAG、LoRA 与全量微调的选择边界

全量微调的参数更新范围

全量微调更新基础模型的大部分或全部参数,使模型整体适应新任务或领域。它的适配能力较强,但训练显存、数据量、优化稳定性、灾难性遗忘和部署成本也最高;为每个任务保存完整模型副本还会显著增加存储与发布成本。

它适合:

  • 领域和通用语料差异巨大;
  • 需要改变较深的语言或任务能力;
  • 有规模足够、分布可信的数据;
  • 有能力做完整对齐、安全和回归评测。

不适合拿来记每天变化的Runbook、价格、指标和服务拓扑,这些事实应由RAG或Tool提供。

LoRA的低秩参数化

对于原权重矩阵W₀ ∈ R^(d×k),LoRA冻结W₀,只学习低秩更新:

W = W₀ + ΔW
ΔW = B × A

A ∈ R^(r×k)
B ∈ R^(d×r)
r ≪ min(d, k)

训练参数从d×k降为r×k + d×r。低秩假设认为任务适配所需的权重变化位于较低维子空间。通常还会使用缩放α/r和LoRA Dropout,并选择Attention或MLP中的特定线性层作为Target Module。

LoRA训练完成后可以独立保存Adapter,也可以Merge进Base Weight做推理。多个Adapter共享一个Base Model,部署与切换更轻;但并发加载、Adapter版本、合并精度和Serving框架支持仍要真实测试。

QLoRA的量化基础模型

QLoRA把冻结的Base Model以4-bit等低精度形式加载,梯度仍更新LoRA Adapter,从而进一步降低训练显存。常见关键点包括NF4量化、Double Quantization与高精度Compute Dtype。

量化主要降低Base Model的驻留和相关开销,不表示训练不再需要Optimizer State、Activation和Adapter Gradient。序列长度、Batch大小和Gradient Checkpointing仍会显著影响显存占用。

Agent场景中的适用范围

LoRA适合学习稳定的行为模式:

  • 固定领域术语与表达;
  • Tool选择模式与Argument结构;
  • 稳定JSON / DSL输出;
  • 意图分类和Workflow路由;
  • Evidence充足时的结构化RCA写法;
  • 特定设备或业务里的固定操作规范。

不适合:

  • 每天变化的Runbook、事故事实和指标;
  • Tool实时返回值;
  • 租户私有知识;
  • 通过简单Schema即可约束的格式问题;
  • 数据只有几十条且错误不少的“高质量Trace据说”。

LoRA适合学习稳定行为,不适合存储频繁变化的Runbook知识。知识更新通常应通过RAG或Tool完成,而不是重新训练模型。

训练数据构造

AgentOps可以从高质量Trace构造:

Incident Context + Available Tools + Evidence
→ Correct Tool Call / Structured RCA

但不能将线上Trace未经处理直接用于训练:

  1. 删除失败、误操作和未复核样本;
  2. 脱敏Token、Cookie、用户数据与内部地址;
  3. 统一Tool Schema与版本;
  4. 将Argument、Observation和Final边界标清;
  5. 保留“证据不足时拒答”的负样本;
  6. 按Incident划分Train/Dev/Test,避免同一事故改写泄漏;
  7. 对危险Tool只训练提出Approval,不训练绕过Approval。

数据质量和覆盖通常比盲目增加Epoch更重要。重复训练错误Tool Call会使错误行为更稳定。

训练与超参数

LoRA核心超参数包括Rank r、Scaling α、Dropout、Target Modules、Learning Rate、Sequence Length和Batch策略。

  • Rank太小可能容量不足,太大增加显存并可能过拟合;
  • Learning Rate通常高于全量微调,但仍需Warmup和Dev监控;
  • Target Module只选Q/V还是覆盖Q/K/V/O与MLP,需要按任务和预算实验;
  • 长Agent Trace要考虑截断是否把Tool Result或Final切掉;
  • Loss Mask应避免让模型学习无意义的系统模板或Observation文本预测。

LoRA效果验证

至少比较四条Baseline:

Prompt-only
Prompt + Better Schema / Tool
Prompt + RAG / Tool
以上方案 + LoRA

冻结Base Model、Dataset、Tool Response、MaxStep和Budget。评测:

  • Tool Selection Accuracy;
  • Argument Exact Match / Schema Pass Rate;
  • Task Success与Root Cause Hit;
  • Faithfulness与拒答;
  • 无效调用、循环与MaxStep;
  • 通用能力回归和灾难性遗忘;
  • 安全拒绝、越权与Injection;
  • Latency、吞吐、显存和Adapter切换成本。

如果Better Schema已经解决90%的格式错误,LoRA多拿1%却引入一套训练部署链,技术上能训不等于商业上该训。

部署与版本

需要固定并记录Base Model Hash、Tokenizer、Adapter Version、Training Dataset Snapshot、Prompt Version、Tool Schema Version和Quantization Config。Adapter与不兼容的Base组合可能不会立即报错,却会造成持续的质量退化,因此必须在加载时校验兼容关系。

上线走Canary,保留无Adapter或旧Adapter回滚。多租户Adapter必须按Tenant隔离并限制加载来源,不能让用户上传一个Adapter后顺便修改整个模型服务的行为边界。

项目回答模板

我们先区分知识问题、工具问题和行为问题:动态事实用RAG/Tool,结构不稳先修Prompt与Schema;只有稳定的工具选择或RCA格式仍长期不稳,才用LoRA。LoRA冻结Base Model,用低秩矩阵ΔW=B×A训练少量参数,QLoRA再量化Base降低显存。训练数据来自专家复核并脱敏的Trace,按Incident切分;上线前与Prompt-only、RAG-only基线比较工具准确率、任务成功、安全回归、延迟与显存,并对Base、Adapter、Dataset和Tool Schema统一版本化。

高频追问

  1. LoRA的Rank增大带来什么收益和风险?
  2. LoRA Adapter Merge与动态加载各有什么取舍?
  3. QLoRA量化了什么,训练精度如何保持?
  4. 为什么动态知识应该进RAG而不是微调?
  5. Agent Trace做SFT数据为什么容易发生标签污染?
  6. 如何测灾难性遗忘和安全能力回退?