Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

第5章 模型适配与能力扩展

怎样为具体场景定制、压缩或扩展能力?

大模型落地时,团队很少从随机初始化开始训练一个新模型,更常见的问题是:已有基础模型如何适配业务,如何在质量下降可控的前提下降低显存和延迟,如何把文本模型扩展到图像、文档、视频或界面。微调、压缩和多模态看似是三组技术,实际上共享一个工程问题:在有限数据、算力和风险预算下,改变模型的有效能力分布。

本章把“适配”与“部署”区分开。LoRA、QLoRA、量化、蒸馏和视觉语言对齐属于算法层;adapter 动态加载、GPU 调度、模型服务和灰度回滚属于后续 Infra 层。算法层必须给 Infra 提供清晰的权重、精度、输入输出和质量契约,但不把一个 adapter 能否上线误解成单纯的训练成功。

本章的执行顺序是先选型、再训练、再压缩、再扩展模态。具体说,先判断问题应由 Prompt、RAG、工具、工作流还是微调解决;再决定监督信号是示范、偏好还是环境反馈;接着评估 PEFT、QLoRA、量化、蒸馏对质量和成本的影响;最后把多模态能力作为通向第6章物理闭环和空间感知的桥,而不是与文本适配并列的孤立主题。

5.1 适配决策:什么时候应该微调

Prompt、RAG、工具与微调的分工

同一个业务需求可能有多种解决方案。Prompt 改变当前请求的指令;RAG 提供当前证据;工具读取或修改外部状态;工作流控制步骤和权限;微调改变模型的长期行为先验。可以用四句话区分:

Prompt:这一次希望模型怎么做
RAG:这一次应该参考哪些知识
Tool:这一次允许访问哪些外部能力
Fine-tuning:以后更稳定地表现出哪种任务模式
首要问题优先手段成功证据进入下一步的条件
指令表达不清、输出格式轻微不稳Prompt / 模板格式通过率、人工修正率下降同一错误在稳定输入上反复出现
缺少当前事实或领域知识RAG引用命中、证据忠实度、时效性证据足够但表达或协议仍不稳
需要读取或改变外部状态工具 / Workflow工具参数合法、权限和幂等通过工具选择和参数模式稳定可学习
长期行为模式不稳定SFT / 偏好优化冻结评估集和线上影子流量提升有可授权数据、可回滚发布和质量门禁
成本、延迟或端侧部署受限量化 / 蒸馏单位成功任务成本下降且质量不回退服务路径与目标硬件已验证

如果问题是实时库存、当前 owner、最新日志、审批状态或价格,微调不是事实源;如果问题是固定 JSON、工单分类、摘要风格、术语习惯和工具参数格式,微调更有价值。Qwen 技术报告体现了基础模型可以同时覆盖中文、代码和多种任务,但领域应用仍要通过数据和评估决定是否需要进一步适配 [27]。

适合微调的任务特征

一个任务通常在以下条件同时满足时才值得微调:输入分布相对稳定,输出协议明确,错误可以定义或排序,数据中有人工修正记录,调用频率足够高,并且可以用 shadow mode 或建议模式安全发布。典型任务包括告警分类、字段抽取、结构化摘要、固定格式报告、领域术语改写、路由和标准化澄清。

不适合优先微调的任务包括实时事实、权限判断、强证据链结论、高风险不可逆操作和边界尚未定义的开放式“专家”任务。微调可以让模型更自然地提出工具调用,但不能授予数据库权限;可以学习引用格式,但不能保证引用内容真实;可以让模型倾向澄清,但不能替代业务规则。

以基线为起点

任何微调项目都应先建立不微调基线:固定模型、提示、RAG、工具和评估集,记录任务成功率、格式通过率、事实准确率、人工修正率、延迟和成本。否则训练后分数上涨,无法判断收益来自新数据、提示变化、评估泄露还是随机波动。

基线还要包含失败样本分类:知识缺失、任务理解错误、格式不稳、风格不一致、工具参数错误、权限越界和无法判断。只有主要失败来自可学习的行为模式时,才进入微调;如果主要失败来自证据和系统状态,应先修 RAG、工具或工作流。

5.2 微调目标与数据工程

SFT、偏好优化与环境反馈

监督微调用输入到标准输出的样本学习行为,适合格式、分类、摘要和示范式回答;偏好优化用同一输入下的 chosen/rejected 学习排序,适合多个答案都可行但质量有差异的任务;强化式优化用状态、动作和奖励处理多步环境反馈。三者的选择取决于监督信号,而不是模型规模。

SFT 的目标可以写为:

$$ \mathcal{L}{SFT}=-\sum{t\in\mathcal{A}}\log p_\theta(y_t\mid x,y_{<t}), $$

其中只对 assistant 输出位置 (mathcal{A}) 计算损失。角色边界、工具结果、系统消息和用户输入的 mask 一旦错误,模型可能学习复读用户、泄露隐藏指令或把工具返回内容当成新指令。偏好优化的目标不是复制某个答案,而是让更优答案相对概率提高;环境反馈则要求奖励与真实任务完成有可靠关联。

数据集的分层和切分

一个可维护的数据集至少应记录任务类型、语言、难度、输入来源、目标输出、验证规则、风险级别和版本。建议把数据分为通用能力锚点、领域任务、格式协议、安全边界、困难负例和线上回流六类。训练集、开发集和冻结测试集要按用户、事件、时间和文档来源隔离,不能把同一 incident 的不同版本随机切到两边。

数据质量的四道门是:语义正确、任务完成、格式合法和安全合规。代码样本要运行测试,SQL 样本要在只读沙箱验证,数学样本要检查答案,事实样本要保留来源和时间。人工修正日志很有价值,但不能把工程师的临时猜测直接当作标准答案;被后续证伪的中间结论必须删除或标记为负例。

数据数量与数据质量

LIMA 的研究说明,少量一致、高质量示范也能产生显著对齐收益 [11]。这不是“数据越少越好”,而是强调样本必须覆盖目标任务、边界和失败模式。Self-Instruct 等方法可以扩展指令覆盖,但生成数据仍需要人工抽样、规则验证和去重,不能把合成数量当作有效监督数量。

数据混乱的典型表现是:同一个标签有多个定义;同一种错误在不同样本中被不同处理;正确答案的长度和风格差异过大;工具字段名与线上 schema 不一致;安全拒答没有替代方案。模型会忠实地学习这些矛盾,训练 loss 下降并不能消除标注冲突。数据审查应像代码 review 一样保留规则、版本和修改原因。

5.3 参数高效微调:PEFT 的设计空间

Adapter、Prefix 与 Prompt Tuning

Adapter 在冻结主模型层之间插入小型可训练模块,训练参数少,多个任务可以保存为不同 adapter [1]。Prefix tuning 在每层注意力中学习连续前缀,改变模型对输入的条件化方式 [2];Prompt tuning 只学习输入侧的连续提示,随着模型规模增大表现出更好的参数效率 [3]。

这些方法的共同优点是基础权重不变、任务版本隔离、存储成本较小,适合多任务和多租户场景。限制是新增参数的表达能力受位置和结构约束,任务分布与基础模型差距很大时可能学不动;多个 adapter 组合时还会出现冲突、加载顺序和延迟问题。

LoRA:低秩更新

LoRA 不直接更新权重矩阵 (W),而是学习低秩增量:

$$ W’=W+\frac{\alpha}{r}BA, $$

其中 (A\in\mathbb{R}^{r\times k})、(B\in\mathbb{R}^{d\times r}),(r) 远小于原矩阵维度。训练时冻结 (W),只更新 (A,B),推理时可以合并到权重,也可以作为独立 adapter 动态加载。LoRA 论文说明,许多下游适配的有效更新可以用低秩子空间表达 [4]。

LoRA 的关键超参数不是只有 rank。target modules 决定更新哪些投影层,alpha 改变增量尺度,dropout 影响正则化,学习率和数据量决定是否过拟合。只在 q_proj 上加 LoRA 可能节省参数但表达不足;覆盖所有线性层可能提高效果,却增加 adapter 大小、训练成本和部署合并风险。应通过小规模消融比较 rank、层范围、数据比例和通用能力保持。

AdaLoRA、IA3、BitFit 与 DoRA

AdaLoRA 根据重要性把 rank 动态分配给不同层,在固定参数预算下优先保留更有用的更新 [7]。IA3 通过学习激活缩放向量实现更轻量的适配 [6];BitFit 只更新 bias 参数,展示了极少参数也可能改变下游行为 [5]。DoRA 将权重方向和幅度分解,再使用低秩适配方向,试图缩小 LoRA 与全参微调之间的差距 [8]。

这些方法不是线性升级关系。参数越少,存储和多租户加载越容易,但能表达的任务变化越有限;参数越多,效果可能提高,却更容易过拟合和遗忘。方法选择应围绕目标任务的有效参数预算、adapter 数量、是否需要合并、是否需要热切换和是否存在严格延迟约束。

多任务与多租户适配

多个 adapter 可以为不同客户、语言或业务保存独立版本。共享基础模型降低了存储,但运行时要处理 adapter 加载、缓存、批处理混合和权限隔离。不同 adapter 的参数不能因为属于同一模型就互相可信;adapter 文件本身也要做来源校验、签名和资源限制。

合并多个 LoRA 可能出现方向冲突:一个 adapter 要求回答更简洁,另一个要求更详细;一个领域改变术语含义,另一个领域使用不同标签。应优先使用任务路由和显式组合规则,避免把多个未评估的增量直接相加。合并后的模型必须重新做全量回归,不能沿用任一单 adapter 的分数。

5.4 QLoRA 与低精度微调

量化基础

量化把高精度数值映射为低比特表示。对称量化可以写成:

$$ q=\operatorname{round}(x/s),\qquad \hat{x}=s q, $$

其中 scale (s) 控制浮点值到整数网格的映射。实际系统还要决定 per-tensor、per-channel 或 per-group 的粒度,是否处理 outlier,scale 如何存储,以及矩阵乘法使用何种 kernel。

权重、激活和 KV cache 的量化难度不同。权重离线量化后可重复使用,激活受输入分布影响,KV cache 还随上下文动态增长。低比特并不自动等于更快:硬件是否有对应 kernel、解码是否受内存带宽限制、反量化开销是否抵消收益,都需要实测。

QLoRA 的训练路径

QLoRA 在 4-bit 量化基础模型上训练 LoRA adapter,并通过 NF4、double quantization 和 paged optimizer 降低显存 [9]。它让较大模型在有限 GPU 上完成适配,但训练精度、量化方案、梯度计算和部署合并之间存在耦合。

QLoRA 项目至少要区分三份模型:量化基础模型、训练中的 adapter、上线时的合并或动态组合模型。合并后再量化可能产生二次误差;动态加载避免合并,却需要 serving 系统支持 adapter;训练时的 chat template 与线上 template 不一致,也可能被误判为量化退化。最终质量必须在真实推理路径上评估。

量化感知的评估

量化误差通常对不同层、不同 token 和不同任务影响不均。困惑度变化很小,不代表代码执行、长上下文、数学和中文混合输入不受影响。应至少报告权重精度、激活精度、校准数据、模型大小、吞吐、显存、p95 延迟和任务分层质量。

还要测试极端输入:超长 prompt、罕见中文字符、数字密集文本、代码长行、JSON 深嵌套和高温采样。量化校准集如果只包含普通英文,量化后的模型在目标业务上可能出现不可预测退化。

5.5 训练后量化:GPTQ、AWQ、SmoothQuant 与稀疏量化

GPTQ:基于误差补偿的权重量化

GPTQ 使用少量校准数据,逐层选择量化权重,并利用近似二阶信息补偿已经产生的误差 [11]。它适合离线压缩大模型权重,尤其关注在固定 bit 数下保持输出误差。优点是无需重新训练,缺点是量化结果依赖校准数据、group size、排序策略和推理 kernel。

AWQ:保护重要权重通道

AWQ 观察到,少量与激活相关的重要权重通道对质量影响更大,通过激活感知缩放保护这些通道,再进行低比特量化 [12]。这体现了一个重要原则:权重量化不能只看权重本身,还要看模型在真实输入上的激活分布。不同业务数据会导致“重要通道”不同,因此公开校准集的最佳 bit 配置未必适合线上。

SmoothQuant 与 W8A8

SmoothQuant 把激活中的离群值通过等价变换迁移到权重侧,使权重和激活都更容易做 INT8 量化 [13]。它适合对追求端到端整数矩阵乘法的系统进行优化。难点是平滑系数、校准分布和算子支持;如果某个层或某类输入仍有离群值,整体 W8A8 质量可能显著下降。

ZeroQuant、LLM.int8 与稀疏格式

LLM.int8 通过混合精度处理异常值,说明极少数 outlier 不能简单与普通通道同样量化 [10]。ZeroQuant 探索训练后低比特量化和硬件友好实现 [14];SpQR 进一步结合稀疏性和量化,以较低存储成本保留敏感权重 [15]。这些方案的共同挑战是算法格式必须与硬件 kernel、编译器和 serving engine 匹配。

量化误差从哪里来

量化误差不是一个固定常数。它受数值范围、分组大小、离群值、校准数据和算子累积影响。把权重从 FP16 压到 INT4 后,每个 group 共享 scale,group 越大元数据越少,但组内不同权重被迫共用刻度;group 越小误差可能下降,却增加 scale 存储和 kernel 复杂度。对激活量化,还要考虑 batch 中不同请求的输入分布。

Transformer 不同层对量化敏感度不同。embedding、输出头、注意力投影、归一化和 FFN 的误差传播并不相同;长上下文和低概率 token 可能放大量化误差。工程上可以进行逐层敏感度实验:只量化一层或一组,比较困惑度、代码执行、数学、中文和结构化输出,决定哪些层保留更高精度。全模型统一 INT4 的配置通常只是起点,不是结论。

权重量化与 KV Cache 量化

权重量化通常是离线固定的,适合减少模型存储和读取带宽;KV cache 量化则发生在每个请求中,直接影响长上下文并发。KV 中的异常值、位置分布和不同层敏感性会让简单 INT8 或 INT4 产生任务退化。若将 KV 放到更低精度,必须比较首 token、长输出、检索位置、代码上下文和多轮对话。

权重压缩和 cache 压缩还会相互影响容量预算:权重变小后,服务可能容纳更多请求,但更高并发会使 KV 成为主瓶颈;KV 变小后可以提高并发,却可能增加反量化和带宽开销。最终指标应是目标流量下的单位成功成本和尾延迟,而不是单独的模型文件大小。

量化校准数据

校准集不需要覆盖全部训练语料,但必须代表真实输入的长度、语言、代码、数字、结构化格式和多模态提示。只用短英文句子校准的模型,可能在中文日志、长 SQL、JSON 或图片描述上出现严重误差。校准集也不能包含敏感业务数据而缺乏访问控制。

校准流程应可复现:保存样本清单、tokenizer、预处理、随机种子、校准算法、group size、保留高精度层和导出格式。导出后的模型要经过反序列化和真实 kernel 推理,不要只在 Python 参考实现中评估。不同硬件、驱动和 kernel 可能使用不同舍入和累加精度,部署前必须做端到端回放。

压缩与路由

不是所有请求都需要同一精度。低风险短问答可以走 INT4 小模型,复杂代码、长上下文和高风险工具调用可以走更高精度或更强模型。路由需要基于任务难度、证据要求、用户等级和当前容量,并且允许失败后升级。压缩因此不只是把一个模型压小,还包括一组模型、精度和验证策略的组合。

5.6 知识蒸馏与小模型路线

Teacher—Student 目标

知识蒸馏让 student 学习 teacher 的软分布,而不仅是硬标签。经典形式为:

$$ \mathcal{L}=\alpha\mathcal{L}{hard}+(1-\alpha)T^2D{KL}(p_T^T\Vert p_S^T), $$

其中 (T) 是温度,teacher 的软概率包含类别相似性和暗知识 [16]。对语言模型,蒸馏可以使用 teacher 的 token 分布、生成轨迹、偏好排序、中间表示或工具动作。

DistilBERT、MobileBERT 与生成模型

DistilBERT 通过蒸馏和结构简化降低 encoder 模型成本 [17];MobileBERT 进一步围绕移动设备的延迟和内存设计结构 [18]。生成式大模型蒸馏则更复杂:student 需要学习长序列概率、停止行为、工具格式和安全边界,teacher 生成的错误和偏好也会被复制。

蒸馏数据应混合真实数据、teacher 高质量输出和独立验证样本。只用 teacher 生成数据会产生模型自我复制;只用硬标签又浪费 teacher 的软信息。代码蒸馏要运行测试,数学蒸馏要验证答案,工具蒸馏要检查环境状态,不能只比较 token-level loss。

蒸馏的目标选择

如果目标是低延迟分类,logit 蒸馏可能足够;如果目标是聊天和代码,轨迹蒸馏更重要;如果目标是 reasoning,必须考虑过程、结果和预算;如果目标是多模态,student 还要学习跨模态对齐。蒸馏不是简单把大模型“缩小”,而是选择哪些能力值得保留、哪些推理成本可以削减。

5.7 多模态模型:从视觉编码到统一生成

图文对齐的起点

CLIP 用图像—文本对比学习把视觉和语言映射到共享空间,展示了大规模弱标注数据可以学习通用视觉语义 [19]。对比损失鼓励正确图文配对相似、错误配对分离,适合检索和零样本分类,但不能直接完成长文本生成和复杂对话。

ViLT 直接在 Transformer 中处理图像 patch 与文本 token,减少了重型视觉区域特征的依赖 [20]。这类模型解决的是视觉和语言的联合表示,仍需要额外训练才能稳定完成视觉问答、文档理解、空间关系和指令执行。

Flamingo、BLIP-2 与连接器

Flamingo 通过冻结视觉编码器和语言模型,引入跨模态层支持少样本视觉语言任务 [21]。BLIP-2 使用 Q-Former 从视觉特征中抽取与语言模型相关的信息,再连接冻结的大语言模型 [22]。它们共同体现了“冻结大模块、训练小连接器”的工程思想:减少训练成本和灾难性遗忘,同时让视觉信息以语言模型能利用的形式进入上下文。

连接器的瓶颈在于信息压缩。视觉 token 太少会丢失细节,太多会占用上下文和推理成本;冻结语言模型可能无法理解某些视觉概念;视觉编码器和语言模型的坐标、位置与时间尺度不一致。连接器训练必须配合图文对齐、指令数据和任务评估。

LLaVA、Qwen-VL 与视觉指令微调

LLaVA 把视觉特征投影到语言模型输入空间,再使用视觉指令数据训练对话能力 [23]。Qwen-VL 进一步覆盖中文、多语言、细粒度定位和文档理解,展示了中文多模态模型在数据配比和评估上的特殊要求 [24]。这类模型的能力不只来自视觉编码器,还来自图像分辨率、OCR、位置表示、指令质量和语言模型本身。

InternVL 等工作探索更高分辨率和更大视觉基础模型,说明视觉 token 数和细节能力存在明显权衡 [25]。高分辨率可以提升小文字和局部目标识别,却增加显存、上下文和延迟;多图和视频还要处理帧采样、时间顺序和跨帧一致性。

多模态数据与失败模式

多模态训练数据至少包括图文描述、视觉问答、OCR、表格和文档、定位、图表、视频事件和安全边界。图像描述正确,不代表模型能可靠读取数字;能识别物体,不代表能理解空间关系;能回答图片问题,不代表引用了真实视觉证据。评估要把视觉感知、语言推理、定位精度、OCR、跨模态幻觉和安全分别统计。

常见失败包括图像不存在时幻觉描述、文字太小导致数字错误、把相似物体混淆、忽略图像局部、视觉内容与文本提示冲突,以及被图片中的恶意指令注入。多模态系统需要输入预处理、内容安全、证据定位和输出校验,不能把图片当作天然可信上下文。

视觉编码器与语言模型的接口

视觉语言模型至少包含视觉编码器、跨模态连接器和语言模型三部分。视觉编码器把像素变成 patch 或区域表示;连接器把这些表示映射到语言模型可接受的向量空间;语言模型再以自回归方式生成文本或动作。三部分可以全部训练,也可以冻结其中两部分只训练连接器。冻结方案成本低、稳定性好,但视觉和语言之间的差距可能限制上限;全量联合训练表达力强,却需要更多图文数据、显存和严格防止语言能力退化。

视觉 token 数是一个核心预算。降低分辨率或合并 patch 可以减少上下文长度,提高吞吐,但会丢失小字体、表格线和局部目标;提高分辨率能改善 OCR 和定位,却增加 prefill、KV cache 和训练成本。多图输入还要保留图像边界、顺序和来源,否则模型可能把不同页面的字段混在一起。视频则增加时间采样和跨帧一致性问题,不能简单把每一帧独立描述后拼接。

对齐阶段的多模态数据

多模态训练通常包含几个阶段:图文对比学习建立粗粒度语义对齐,图文生成或匹配学习视觉到语言的映射,视觉指令微调塑造对话和任务行为,领域数据再增强文档、图表、代码截图或界面操作。每阶段的目标不同,数据不能混用后期待模型自动学会所有能力。

视觉指令样本应明确答案依赖的是图像、文本还是外部知识。若问题要求读取图片中的数字,标准答案应包含定位和识别依据;若问题要求总结文档,样本要覆盖页码、表格和跨页关系;若问题要求点击界面,动作坐标、元素状态和失败处理必须可验证。只用“描述这张图”的数据,不能训练可靠的业务视觉 Agent。

多模态幻觉与证据约束

语言模型的先验可能覆盖视觉信号:当图片模糊或不存在时,模型仍会凭语言概率编造描述;当图像中有少见物体时,模型会用常见类别替代;当用户问题带有错误前提时,模型可能顺着文本而非图像回答。解决这类问题需要让模型显式指出证据区域、置信不足和需要更高分辨率的原因。

可以在输出中保留 bounding box、页码、时间戳、OCR span 或截图区域,再由程序检查引用是否存在。对于关键数字、金额、合同条款和监控指标,应使用专用 OCR、表格解析或领域工具复核,不把通用视觉语言模型当成唯一事实源。图像中的文字也可能包含提示注入,视觉内容必须和用户指令一样经过信任边界处理。

多模态微调与文本能力保持

视觉指令微调可能让模型更会描述图片,却损伤纯文本代码和数学能力;高分辨率数据可能提高视觉细节,却增加回答冗长和成本。训练时应保留文本回放集合,并按视觉任务、纯文本、中文、代码和安全分层评估。LLaVA 的视觉指令路线、BLIP-2 的连接器设计和 Qwen-VL 的中文多模态实践,分别说明数据、连接器和语言模型底座都会影响最终能力 [22][23][24]。

多模态模型还要做输入缺失测试:只有文本、只有图片、图片损坏、图片尺寸异常、OCR 为空、多图顺序改变、视频帧丢失。模型应能识别输入不足并请求补充,而不是用语言先验填满空白。把这种“正确失败”纳入 SFT 和偏好数据,通常比单纯增加正常图文问答更能提高生产可靠性。

微调超参数与有效容量

PEFT 参数量很小,不代表训练问题简单。学习率通常可以高于全参微调,但过高会让 adapter 迅速记住模板;rank 决定低秩子空间容量,dropout 提供正则化,target modules 决定可改变的表示位置。不同层对任务的敏感性不同,统一给每层同一个 rank 未必是最优方案。

训练时要观察的不只是总 loss,还要看每类任务、每种语言和每种输出字段的 loss。若训练 loss 下降而冻结测试集不升,常见原因是样本重复、答案泄露、模板过拟合或任务定义不清。若目标任务提升而通用能力下降,说明 adapter 更新过强、数据分布过窄或训练阶段过长。保留通用回放样本和早期 checkpoint,有助于确定退化从何时开始。

LoRA 的有效容量还受到基础模型限制。一个基础模型没有视觉编码、工具协议或领域概念时,仅增加 rank 不会凭空创造这些能力;一个模型已经具备任务能力时,低 rank 可能只需要调整决策边界。AdaLoRA 通过按重要性分配 rank 的思路说明,参数预算应投向真正敏感的层 [7],但重要性估计仍需目标数据和独立评估校准。

Adapter 合并、组合与隔离

LoRA 可以在运行时作为增量加载,也可以合并到基础权重。合并便于使用普通推理 kernel,减少动态分支;独立加载便于多租户切换、灰度和回滚。两条路径可能产生数值差异,尤其当基础模型先被量化、adapter 再合并或权重精度不一致时。

多 adapter 组合需要明确优先级和冲突规则。风格 adapter、领域 adapter、语言 adapter 和安全 adapter 可能修改同一层的相反方向;简单相加不保证语义叠加。可以通过路由选择单一 adapter,也可以在验证数据上学习组合系数,但组合模型必须作为新的版本单独评估。禁止把未经审核的第三方 adapter 直接挂到生产基础模型上,因为它可能改变拒答、工具或数据泄露行为。

数据泄露与微调记忆

微调数据量小、重复率高,模型可能更容易记住敏感字符串。日志、工单、代码和聊天记录常包含 token、账号、内部 URL、客户标识和个人信息。脱敏不能只用正则,还要处理编码变形、截图文字、代码注释、上下文拼接和间接标识。训练前应做 PII 检测、密钥扫描、权限审计和人工抽样;训练后应做 canary 抽取、提示诱导和长字符串复现测试。

如果业务要求模型输出真实内部字段,应该通过受控工具和权限访问,而不是把字段直接写进权重。微调记忆难以逐条删除,也难以证明某个输出没有来自训练数据。将动态和敏感事实留在外部系统,既方便更新,也方便审计和撤销。

5.8 适配、压缩和多模态的联合评估

质量—成本—风险三维矩阵

任何算法方案都应同时报告质量、成本和风险。质量包括任务成功、格式、事实、代码执行和多模态感知;成本包括训练 GPU、模型大小、显存、吞吐、TTFT、TPOT 和单位成功成本;风险包括隐私、过拟合、越权、量化退化、模态幻觉和回滚难度。

方案主要收益主要代价必测项目
Full FT表达能力强成本、遗忘、回滚全量能力回归
LoRA/QLoRA训练和存储低adapter 冲突、合并差异动态/合并两条路径
INT4/GPTQ/AWQ显存和带宽下降量化误差、kernel 依赖长上下文和目标数据
蒸馏推理成本下降能力损失、错误复制teacher-student 对照
VLM 连接器增加视觉能力token、数据和幻觉OCR、定位、文档、对齐

训练路径与真实服务路径

训练时评估的模型可能是 BF16 主权重加 adapter,线上却是合并后 INT4 权重;训练时使用单轮 chat template,线上却是多轮工具模板;训练时图像分辨率固定,线上却是不同尺寸和压缩格式。所有这些差异都可能被误认为数据或模型问题。

因此必须建立真实服务路径的离线回放:使用线上 tokenizer、模板、量化、adapter 加载、采样和 schema 校验,记录同一批输入的输出差异。只有训练路径和服务路径都通过,才能进入 shadow mode。Llama 2 的开放模型实践说明,基础模型、聊天适配、安全评估和发布条件需要联合考虑 [26]。

适配结果的差异归因

当微调模型的结果变化时,不能只比较最终答案。应先把变量拆开:基础模型是否相同,tokenizer 和 chat template 是否相同,数据是否包含重复,adapter 是否合并,量化是否发生在合并前或合并后,采样参数和停止条件是否相同。若这些变量同时变化,任何“提升”或“退化”都没有清晰归因。

可以采用逐层对照:基础模型与 Prompt baseline;基础模型加 LoRA;LoRA 合并模型;合并后量化模型;量化模型接入真实 serving kernel。每一步都使用同一个冻结评估集,并记录任务质量、模型大小、显存、吞吐、首 token 延迟、每 token 延迟和错误类型。对于多模态,还要固定图片解码、缩放、裁剪、patch 数和 OCR 版本。

低精度训练的数值稳定性

量化微调不仅是存储问题,也可能影响梯度和优化器状态。基础权重低精度加载,adapter 通常以较高精度训练,前向中的反量化、矩阵乘法和梯度路径需要明确。混合精度下要监控 loss spike、梯度溢出、异常激活和不同数据桶的训练曲线。若训练损失正常但导出模型异常,优先检查导出、合并和 kernel,而不是盲目增加训练轮数。

训练后还应做权重完整性和版本一致性检查:基础模型 hash、adapter hash、量化配置、校准集版本、导出工具版本和推理库版本必须可追溯。一个看似相同的 INT4 文件,可能因为 group size、zero point、布局和累加精度不同而无法互换。模型注册表应把这些字段作为兼容性条件。

多模态资源预算

视觉模型的成本不能只按语言 token 估计。需要同时计算图像编码 FLOPs、视觉 token 数、语言上下文、图片数量、视频帧数、分辨率和缓存命中。多图文档问答可能在视觉编码阶段耗时,长图表解释又可能在语言 decode 阶段耗时;不同请求应使用不同的分辨率、帧采样和模型路由。

如果图片较大,可以先做缩略图和区域候选,再按问题裁剪高分辨率区域;如果文档页数多,可以先用 OCR、版面分析和检索缩小范围;如果视频较长,可以根据时间窗口和事件检测采样。这样的分层处理通常比无条件把全部像素和帧送入大模型更稳定,也更容易解释失败原因。

多语言与领域泛化

中文业务常包含中文、英文缩写、代码、数字、日志和表格。微调样本若只使用整洁中文,模型可能在真实混合输入上退化;量化校准若只使用英文,低比特误差可能在中文和代码上放大;多模态数据若只包含自然图像,文档截图和监控面板能力不足。测试集必须按语言、格式、领域和输入模态分层。

模型泛化不等于训练集相似度。应保留时间外数据、不同团队数据、不同模板数据和对抗样本,检查模型是否学到任务规则而不是记住表面字符串。周志华关于训练误差、泛化误差和模型选择的讨论,为这种分层评估提供了基础视角 [30];中文深度学习教材则可用于复习优化、正则化和表示学习基础 [28][29]。

5.9 工程决策与验收清单

适配路线

一个稳妥的执行顺序是:先建立 Prompt/RAG/Tool 基线,再做小规模 SFT;若任务行为稳定但偏好不同,加入偏好优化;若显存或成本成为瓶颈,比较 QLoRA、训练后量化和蒸馏;若需要视觉或文档理解,再选择视觉编码器、连接器和视觉指令数据。每一步都必须保留上一版本作为对照。

不要把“训练成功”定义成 loss 下降。验收至少包括任务质量、通用能力、格式协议、长上下文、中文与代码、量化前后、adapter 合并前后、多模态失败和安全边界。高风险工具还要检查权限、幂等、人工审批和回滚。

发布契约

模型发布包应包含基础模型版本、adapter 或合并权重、量化配置、tokenizer、chat template、特殊 token、输入模态规格、最大上下文、采样默认值、评估报告和已知缺陷。多租户 adapter 还要包含来源签名、权限、兼容的基础模型和资源限制。

发布契约还应记录训练目标和不适用范围。例如,一个分类 adapter 只保证某套标签和输入格式,不应被路由到开放式问答;一个文档视觉模型只保证规定页型和分辨率,不应被默认用于医学影像;一个 INT4 模型只在指定 kernel 和上下文范围内通过评估,不应因为文件可以加载就宣称所有硬件都兼容。把边界写进模型卡和注册表,可以减少误用。

多模态发布还要说明图片、视频、OCR 和外部链接的处理方式,是否保留原图、是否缓存视觉特征、是否允许用户上传敏感材料,以及模型是否会把图片文字当作指令。安全边界必须在输入、视觉编码、语言生成和工具调用每一层明确,不能只依赖最终输出过滤。

灰度与回滚

灰度发布要同时比较新旧模型的任务成功率、格式错误、量化退化、视觉幻觉、工具调用和尾延迟。对 adapter,影子流量可以并行生成但不执行副作用动作;对量化模型,要在真实 kernel 上回放长上下文和高并发;对多模态模型,要保留输入图片的版本和预处理结果,确保回归可以重现。

回滚不仅是恢复旧权重,还要恢复旧 tokenizer、模板、量化配置、视觉预处理、schema、验证器和路由规则。若只回滚模型文件而保留新模板,可能产生比发布前更隐蔽的协议错误。每个版本都应有明确的兼容矩阵和自动停止条件,严重安全事件、关键任务下降、格式破坏或成本超预算时立即暂停。

失败样本回流

线上失败样本应先分类再回流。量化误差、adapter 过拟合、动态事实缺失、视觉 OCR 错误、工具权限错误和用户意图不清,需要不同修复方案。把所有失败都加入 SFT 会让模型记住表面答案,无法解决根因;把所有人工修改都当作偏好,也会把风格差异误判成质量差异。

每轮回流应保留原始输入、模型版本、配置、外部证据、验证结果和人工结论,并进行去重、脱敏和冻结测试集隔离。这样微调、量化和多模态适配才会形成可审计的迭代闭环,而不是一次训练后凭样例判断成功。

最终要把算法参数、数据版本和服务配置作为一个整体验收,不能只验收训练曲线。对后端团队来说,这相当于把模型适配当作一次有契约的服务变更:输入可重放,输出可验证,资源有预算,失败可回滚,敏感数据有边界,版本差异有记录。这样的流程比单独追逐某个微调方法更能决定模型是否真正可用。

因此,适配结果的最终交付物不是一个“能加载的权重”,而是一份包含模型、数据、模板、schema、量化 kernel、视觉预处理、验证器、评估报告和回滚版本的发布契约。只有这份契约清楚,微调、压缩和多模态能力才容易复用、监控、定位和持续改进。

本章小结

微调改变稳定的行为模式,RAG 和工具提供动态事实与外部能力;PEFT 通过少量参数实现任务隔离,LoRA/QLoRA 在训练成本和表达能力之间折中;量化和蒸馏降低推理成本,但必须结合真实数据、硬件 kernel 和服务路径评估;多模态模型通过视觉编码器、连接器和指令数据把图像、文档和视频接入语言模型,但视觉感知、语言推理和证据可靠性不能混为一谈。

面向企业落地,最重要的不是选择一个“最先进”的方法,而是让适配目标、数据监督、压缩格式、输入模态、评估指标和发布回滚形成一份完整契约。只有这样,算法优化才会转化为可维护、可观测、可控制的模型能力。

参考资料

[1] Houlsby, N., et al. Parameter-Efficient Transfer Learning for NLP. ICML, 2019. https://arxiv.org/abs/1902.00757 访问日期:2026-09-22

[2] Li, X. L., & Liang, P. Prefix-Tuning: Optimizing Continuous Prompts for Generation. ACL, 2021. https://arxiv.org/abs/2101.00190 访问日期:2026-09-22

[3] Lester, B., Al-Rfou, R., & Constant, N. The Power of Scale for Parameter-Efficient Prompt Tuning. EMNLP, 2021. https://arxiv.org/abs/2104.08691 访问日期:2026-09-22

[4] Hu, E. J., et al. LoRA: Low-Rank Adaptation of Large Language Models. ICLR, 2022. https://arxiv.org/abs/2106.09685 访问日期:2026-09-22

[5] Zaken, E. B., Ravfogel, S., & Goldberg, Y. BitFit: Simple Parameter-efficient Fine-tuning for Transformer-based Masked Language-models. ACL, 2022. https://arxiv.org/abs/2106.10199 访问日期:2026-09-22

[6] Liu, H., et al. Few-Shot Parameter-Efficient Fine-Tuning is Better and Cheaper than In-Context Learning. NeurIPS, 2022. https://arxiv.org/abs/2205.05638 访问日期:2026-09-22

[7] Zhang, Q., et al. AdaLoRA: Adaptive Budget Allocation for Parameter-Efficient Fine-Tuning. ICLR, 2023. https://arxiv.org/abs/2303.10512 访问日期:2026-09-22

[8] Liu, S.-Y., et al. DoRA: Weight-Decomposed Low-Rank Adaptation. ICML, 2024. https://arxiv.org/abs/2402.09353 访问日期:2026-09-22

[9] Dettmers, T., et al. QLoRA: Efficient Finetuning of Quantized LLMs. NeurIPS, 2023. https://arxiv.org/abs/2305.14314 访问日期:2026-09-22

[10] Dettmers, T., et al. LLM.int8(): 8-bit Matrix Multiplication for Transformers at Scale. NeurIPS, 2022. https://arxiv.org/abs/2208.07339 访问日期:2026-09-22

[11] Frantar, E., et al. GPTQ: Accurate Post-Training Quantization for Generative Pre-trained Transformers. arXiv, 2022. https://arxiv.org/abs/2210.17323 访问日期:2026-09-22

[12] Lin, J., et al. AWQ: Activation-aware Weight Quantization for LLM Compression and Acceleration. MLSys, 2024. https://arxiv.org/abs/2306.00978 访问日期:2026-09-22

[13] Xiao, G., et al. SmoothQuant: Accurate and Efficient Post-Training Quantization for Large Language Models. ICML, 2023. https://arxiv.org/abs/2211.10438 访问日期:2026-09-22

[14] Yao, Z., et al. ZeroQuant: Efficient and Affordable Post-Training Quantization for Large-Scale Transformers. NeurIPS, 2022. https://arxiv.org/abs/2206.01861 访问日期:2026-09-22

[15] Dettmers, T., et al. SpQR: A Sparse-Quantized Representation for Near-Lossless LLM Weight Compression. ICLR, 2024. https://arxiv.org/abs/2306.03078 访问日期:2026-09-22

[16] Hinton, G., Vinyals, O., & Dean, J. Distilling the Knowledge in a Neural Network. NeurIPS Deep Learning Workshop, 2015. https://arxiv.org/abs/1503.02531 访问日期:2026-09-22

[17] Sanh, V., Debut, L., Chaumond, J., & Wolf, T. DistilBERT, a Distilled Version of BERT. arXiv, 2019. https://arxiv.org/abs/1910.01108 访问日期:2026-09-22

[18] Sun, Z., et al. MobileBERT: a Compact Task-Agnostic BERT for Resource-Limited Devices. ACL, 2020. https://arxiv.org/abs/2004.02984 访问日期:2026-09-22

[19] Radford, A., et al. Learning Transferable Visual Models From Natural Language Supervision. ICML, 2021. https://arxiv.org/abs/2103.00020 访问日期:2026-09-22

[20] Kim, W., Son, B., & Kim, I. ViLT: Vision-and-Language Transformer Without Convolution or Region Supervision. ICML, 2021. https://arxiv.org/abs/2102.03334 访问日期:2026-09-22

[21] Alayrac, J.-B., et al. Flamingo: a Visual Language Model for Few-Shot Learning. NeurIPS, 2022. https://arxiv.org/abs/2204.14198 访问日期:2026-09-22

[22] Li, J., et al. BLIP-2: Bootstrapping Language-Image Pre-training with Frozen Image Encoders and Large Language Models. ICML, 2023. https://arxiv.org/abs/2301.12597 访问日期:2026-09-22

[23] Liu, H., Li, C., Wu, Q., & Lee, Y. J. Visual Instruction Tuning. NeurIPS, 2023. https://arxiv.org/abs/2304.08485 访问日期:2026-09-22

[24] Bai, J., et al. Qwen-VL: A Versatile Vision-Language Model for Understanding, Localization, Text Reading, and Beyond. arXiv, 2023. https://arxiv.org/abs/2308.12966 访问日期:2026-09-22

[25] Chen, Z., et al. InternVL: Scaling up Vision Foundation Models and Aligning for Generic Visual-Linguistic Tasks. arXiv, 2023. https://arxiv.org/abs/2312.14238 访问日期:2026-09-22

[26] Touvron, H., et al. Llama 2: Open Foundation and Fine-Tuned Chat Models. arXiv, 2023. https://arxiv.org/abs/2307.09288 访问日期:2026-09-22

[27] Bai, J., et al. Qwen Technical Report. arXiv, 2023. https://arxiv.org/abs/2309.16692 访问日期:2026-09-22

[28] Zhang, A., Lipton, Z. C., Li, M., & Smola, A. V. Dive into Deep Learning, 2nd ed., 2023. https://zh.d2l.ai/ 访问日期:2026-09-22

[29] 邱锡鹏:《神经网络与深度学习》,机械工业出版社,2020。https://nndl.github.io/ 访问日期:2026-09-22

[30] 周志华:《机器学习》,清华大学出版社,2016。https://cs.nju.edu.cn/zhouzh/zhouzh.files/publication/MLbook2016.htm 访问日期:2026-09-22

版本与范围

微调、检索、量化和蒸馏解决的问题不同:前两者主要改变行为或知识供给,后两者主要改变成本与部署形态。量化精度、硬件支持和多模态模型接口更新很快;截至 2026-09-21,任何质量或显存结论都应绑定模型、校准集、dtype、硬件和推理引擎。本章不把“多模态”简化成给文本模型增加图片输入,也不把压缩率等同于业务可用性。

工程决策案例

场景: 企业要让内部运维助手理解最新 runbook,并在单张 GPU 上服务。先用 RAG 接入频繁变动、需要引用来源的 runbook;只有当固定格式、术语或工具调用习惯在高质量样本中反复失败时,才训练 LoRA。随后对同一基准分别比较 BF16、量化和 QLoRA 制品的任务成功率、JSON 合法率、TTFT、显存峰值和回归失败样本。

决策规则是:知识过期先更新检索;行为不稳定再考虑 LoRA;显存或成本不达标才评估量化;每次压缩都以任务回归集为门禁。若低比特版本让工具参数错误率上升,即使通用困惑度变化很小,也不能直接替换生产制品。

参考资料与延伸阅读