第6章 模型适配与能力扩展
模型适配既改变可训练参数,也改变最终计算函数。需要把训练目标、参数化、数值表示与输入接口分开分析,再组合成可验证的制品。本章以中文工单与文档助手为教学场景:文本阶段提取字段,压缩阶段保住关键数字,视觉阶段读取扫描页面。案例未实际运行,数值示例只用于推导。
大模型落地时,团队通常从一个可复用的预训练 checkpoint 出发:让它适配业务,在质量下降可控的前提下降低显存和延迟,或把文本能力扩展到图像、文档、视频和界面。微调、压缩和多模态看似是三组技术,实际上共享一个工程问题:在有限数据、算力和风险预算下,改变已有模型的有效能力分布。
本章从两条边界开始。第 3 章《后训练:行为的塑形》负责解释 SFT、偏好优化和强化式优化的目标与监督信号;新增第 5 章《从零训练一个 LLM:一条可复现的工程路径》负责从随机初始化到基础模型 checkpoint 的训练闭环。本章假定基础模型已经存在,重点讨论选择哪些参数参与更新、怎样压缩模型,以及怎样增加新的输入模态。训练目标与参数更新范围是两个独立决策:选择 SFT 不等于必须全参数更新,选择 LoRA 也不改变 SFT 的 token 级学习目标。
本章也把“模型改造”与“服务部署”区分开。LoRA、QLoRA、量化、蒸馏和视觉语言对齐属于算法层;adapter 动态加载、GPU 调度、模型服务和灰度回滚属于后续 Infra 层。算法层要向 Infra 交付清晰的权重、精度、输入输出和质量契约。全章依次完成问题诊断、参数高效适配、压缩、多模态扩展和联合验收;多模态部分同时为下一章的空间感知与物理闭环建立输入基础。
6.1 从任务失败定义适配目标与监督
flowchart TD A["失败样本与冻结基线"] --> B["事实行为与成本诊断"] B["事实行为与成本诊断"] --> C["监督目标与独立评估"] C["监督目标与独立评估"] --> D["目标收益及保留能力"]
Prompt、RAG、工具与微调的分工
同一个业务需求可能有多种解决手段。可以把它们压缩成一句话:Prompt 改变这一次怎么做,检索提供这一次参考什么,工具提供这一次能访问什么,微调改变以后默认怎么做。 这些手段不是必须依次穷尽的阶梯。低成本基线有助于判断收益,但当标签、部署条件与重复任务成本清楚时,微调可以较早进入比较。
| 首要问题 | 优先手段 | 成功证据 | 进入下一步的条件 |
|---|---|---|---|
| 指令表达不清、输出格式轻微不稳 | Prompt / 模板 | 格式通过率、人工修正率下降 | 同一错误在稳定输入上反复出现 |
| 缺少当前事实或领域知识 | RAG | 引用命中、证据忠实度、时效性 | 证据足够但表达或协议仍不稳 |
| 需要读取或改变外部状态 | 工具 / 流程 | 参数合法、权限与幂等通过 | 调用模式和参数格式稳定可学习 |
| 长期行为模式不稳定 | SFT / 偏好优化 | 冻结评估集和线上影子流量提升 | 有可授权数据、可回滚发布和质量门禁 |
| 成本、延迟或端侧部署受限 | 量化 / 蒸馏 | 单位成功任务成本下降且质量不回退 | 服务路径与目标硬件已验证 |
如果问题是实时库存、最新日志、当前价格这类随时变化的事实,微调不是事实源;如果问题是固定 JSON、工单分类、摘要风格、术语习惯,微调更有价值。Qwen 技术报告体现了基础模型可以同时覆盖中文、代码和多种任务,但领域应用仍要通过数据和评估决定是否需要进一步适配 [1]。
以下条件有助于评估微调价值,并非缺一不可的准入定理:输入分布相对稳定,输出协议明确,错误可以定义或排序,数据中有人工修正记录,调用频率足够高,并且可以用 shadow mode 或建议模式安全发布。典型任务包括告警分类、字段抽取、结构化摘要、固定格式报告、领域术语改写、路由和标准化澄清。
不适合优先微调的任务包括实时事实、强证据链结论、高风险不可逆操作,以及边界尚未定义的开放式“专家”任务。微调可以让模型更自然地输出结构化调用,但不能授予访问权限;可以学习引用格式,但不能保证引用内容真实;可以让模型倾向澄清,但不能替代业务规则。
任何微调项目都应先建立不微调基线:固定模型、提示、RAG、工具和评估集,记录任务成功率、格式通过率、事实准确率、人工修正率、延迟和成本。否则训练后分数上涨,无法判断收益来自新数据、提示变化、评估泄露还是随机波动。
基线还要包含失败样本分类:知识缺失、任务理解错误、格式不稳、风格不一致、参数错误、越界和无法判断。主要失败来自可学习模式时,微调有明确实验目标;主要失败来自缺失证据和系统状态时,应先核对检索、工具或流程。参数更新也可能学习领域信息,但更新时效性和可撤销性通常不如外部事实源。
监督微调用输入到标准输出的样本学习行为,适合格式、分类、摘要和示范式回答;偏好优化用同一输入下的 chosen/rejected 学习排序,适合多个答案都可行但质量有差异的任务;强化式优化用状态、动作和奖励处理多步环境反馈。三者的目标、公式和成立条件由第 3 章主讲,本章只回答在目标确定后如何选择参数更新范围。全参数 SFT、LoRA SFT 和 QLoRA SFT 可以使用同一种 assistant-token 损失,差别在于参与梯度更新的参数集合以及训练时基础权重的表示方式。
无论选择哪种更新范围,角色边界、工具结果、系统消息和用户输入的 mask 都必须与第 3 章定义的目标一致。mask 错误可能让监督偏离目标,例如额外学习用户文本;是否产生复述或指令混淆,还取决于数据与可见性设计;softmax 与交叉熵的基础定义可参考中文教材 [2]。偏好优化与环境反馈同样可以结合 PEFT,但不能因为只训练少量参数,就省略参考策略、奖励有效性或独立评估等后训练约束。
数据集的分层和切分
一个可维护的数据集至少应记录任务类型、语言、难度、输入来源、目标输出、验证规则、风险级别和版本。建议把数据分为通用能力锚点、领域任务、格式协议、安全边界、困难负例和线上回流六类。训练集、开发集和冻结测试集要按用户、事件、时间和文档来源隔离,不能把同一 incident 的不同版本随机切到两边。
数据质量的四道门是:语义正确、任务完成、格式合法和安全合规。代码样本要运行测试,SQL 样本要在只读沙箱验证,数学样本要检查答案,事实样本要保留来源和时间。人工修正日志很有价值,但不能把工程师的临时猜测直接当作标准答案;被后续证伪的中间结论必须删除或标记为负例。
LIMA 在其模型和评估设置中展示了少量精选示范的对齐潜力 [3]。这不是“数据越少越好”,而是强调样本必须覆盖目标任务、边界和失败模式。合成指令可以扩展覆盖,但生成数据仍需要人工抽样、规则验证和去重,不能把合成数量当作有效监督数量。
数据混乱的典型表现是:同一个标签有多个定义;同一种错误在不同样本中被不同处理;正确答案的长度和风格差异过大;工具字段名与线上 schema 不一致;安全拒答没有替代方案。模型会忠实地学习这些矛盾,训练 loss 下降并不能消除标注冲突。数据审查应像代码 review 一样保留规则、版本和修改原因。
PEFT 参数量很小,不代表训练问题简单。学习率通常可以高于全参微调,但过高会让 adapter 迅速记住模板;rank 决定低秩子空间容量,dropout 提供正则化,target modules 决定可改变的表示位置。不同层对任务的敏感性不同,统一给每层同一个 rank 未必是最优方案。
训练时要观察的不只是总 loss,还要看每类任务、每种语言和每种输出字段的 loss。若训练 loss 下降而冻结测试集不升,常见原因是样本重复、答案泄露、模板过拟合或任务定义不清。若目标任务提升而通用能力下降,说明 adapter 更新过强、数据分布过窄或训练阶段过长。保留通用回放样本和早期 checkpoint,有助于确定退化从何时开始。
LoRA 的有效容量还受到基础模型限制。没有图像输入接口的模型不能仅靠加rank获得像素感知;领域术语和工具模式可能通过数据适配学到,不能先验判定“没有概念就不能学”。底座能力、数据覆盖和可更新层共同限制结果。AdaLoRA 通过按重要性分配 rank 的思路说明,参数预算应投向真正敏感的层 [4],但重要性估计仍需目标数据和独立评估校准。
微调数据量小、重复率高,模型可能更容易记住敏感字符串。日志、工单、代码和聊天记录常包含 token、账号、内部 URL、客户标识和个人信息。脱敏不能只用正则,还要处理编码变形、截图文字、代码注释、上下文拼接和间接标识。训练前应做 PII 检测、密钥扫描、权限审计和人工抽样;训练后应做 canary 抽取、提示诱导和长字符串复现测试。
如果业务要求模型输出真实内部字段,应该通过受控接口读取,而不是把字段直接写进权重。微调记忆难以逐条删除,也难以证明某个输出没有来自训练数据。将动态和敏感事实留在外部系统,既方便更新,也方便审计和撤销。
中文数据与过拟合的诊断顺序
中文领域要同时审查简繁、异体字、标点、术语缩写、金额单位、日期和中英代码混排。术语切成多个token并不必然损害语义,先测真实长度、截断率和任务切片;扩词表会改动嵌入和输出头及发布兼容性,不是中文适配的默认动作。翻译腔、模板化合成和同文档多版本可能制造虚假的覆盖,应按来源实体去重,并保留时间外样本。
发生训练loss下降、验证收益停滞时,先检查验证独立性、标签定义、assistant mask、长度归一化和评估解码,再查近重复、答案泄露、类别不平衡与模板捷径。之后才调早停、训练轮数、学习率、weight decay、dropout和rank,或混合通用回放。减少训练量不能修复错误标签;反复参与调参的验证集也不能再冒充最终测试集。上文是本书结合第2、3章训练契约给出的排障流程。
小模型全参SFT与大模型LoRA不能只按“可训练参数量”排名:前者改变的空间更自由,但底座能力和推理容量较小;后者保留较强底座,却受增量与线上大权重成本约束。全参允许更新更多方向,不保证更好泛化;LoRA可能节省优化器状态,却未必满足部署显存与延迟。用相同授权任务、数据切分、模板、有效训练token预算和调参预算做受控比较;若tokenizer不同,还应给出相同原始样本和实际token量,不伪称两个预算完全相同。
候选评审同时列目标质量、中文/代码与通用能力、训练资源、制品大小、目标负载尾延迟及单位成功成本。先用质量和延迟硬门槛淘汰,再在可行候选中选成本;大模型LoRA稍好但超时,不能只凭平均分上线。任务变难后可重新评估路由,不把一次选型写成模型规模的普遍规律。
把监督目标写成一个条件分布,可以进一步避免把“微调”当作万能修复。设输入为工单正文和检索证据,输出包含故障类型、金额和处理建议。若故障类型的标签体系本来就冲突,增加可训练参数只会让模型更充分地拟合矛盾;若金额在输入中根本不存在,要求每个样本必须给出数字,就会把猜测变成训练目标;若处理建议取决于实时库存,旧样本只能描述过去的状态。三种失败在评测上都可能表现为答案错误,却需要分别修标签、补证据和重设工具接口。适配算法只优化给定目标,没有办法自动替团队决定业务事实。
这里有两种不同的“冻结”。冻结基础模型参数,是不更新那部分权重;冻结评估协议,是在选择候选时不任意改变测试条件。前者可以降低优化器状态,后者约束结论可信度。即便只训练一个很小的 adapter,也可能反复在同一测试集上挑选 rank 和学习率,从而消耗测试独立性。反过来,全参数更新并不必然破坏评估,只要数据切分、调参预算和最终测试严格分离。模型改了多少参数与评估是否泄漏没有直接的充分必要关系。
同样需要明确的是 token 权重与样本权重。设一个字段抽取答案只有十个目标 token,另一篇解释性答案有一千个。把所有目标的负对数似然相加后除以目标总数,会让长答案贡献更多总体权重;先对每个答案求均值,再平均样本,则让两个任务等权。两者都可能合理,却对应不同业务偏好。若重要的数字字段总是很短,全 token 平均可能被长解释主导;解决办法可以是调整样本配比、定义任务权重或拆分输出,而不是盲目把 rank 增大。权重应在开发集之前定义并记录,不应看到测试薄弱项后临时改口径。
训练 mask 也应被当成监督选择,而不是安全机制。屏蔽用户输入的损失,表示不直接要求模型预测这些位置,并不意味着模型无法读取、记住或在输出中复述输入。被屏蔽的内容仍可通过注意力影响后续受监督位置;若目标答案本身包含秘密,正确的 assistant-only mask 也不会消除泄漏风险。相反,某些继续预训练或混合目标有意对整段文本监督,也不能仅凭这一点断言它必然造成指令泄漏。需要先确认训练事件、可见性和目标内容,再判断 mask 是否符合任务契约。
因此,数据审查至少要分开三个问题:输入是否允许被模型使用,目标是否正确且允许被学习,评估是否能检出目标外的副作用。对于工单案例,可以允许模型读取经过授权的错误日志,但把账号替换为占位符,训练它调用查询接口而不是背诵真实账号。这个设计并不是量化或 LoRA 的特有功能,而是所有参数更新方式都共享的监督边界。若后续压缩导致模型忽略占位符或破坏接口字段,仍应回到同一验收协议检查。
一个值得保留的对照实验,是让两条路径面对同一批任务:第一条用较长提示给出格式示范,第二条用参数适配学习格式并缩短提示。两条路径不仅比较答案得分,也比较训练固定成本、每日调用成本和规则更新频率。如果标签每天都变,频繁重新训练可能抵消推理节省;如果标签长期稳定、请求很多,适配的固定成本可能逐渐摊薄。IA3 所在研究比较过参数高效微调与上下文学习,但其特定模型和数据结果不能直接给出本场景的盈亏平衡点。[5] 本书的推导是把固定成本与每次调用的差额分开记账,并用实际负载估算交点。
还要避免把训练收益全部归因于方法名称。假设第二轮实验同时增加了高质量样本、修正模板并换成 QLoRA,分数提升不能证明四位底座比浮点底座更好。应先锁定数据和模板,再比较更新范围与精度;若资源限制使完整矩阵无法运行,就如实标明未控制的变量。可解释的负结果也有价值:在相同预算下较低 rank 已经达到质量门槛,可以减少部署状态;如果不同 rank 都失败,优先检查任务与数据,而不是把更高 rank 当作必然救济。
6.2 参数高效适配的梯度与状态
flowchart LR X["输入"] --> W["冻结 W 的线性分支"] X --> A["可训练 A"] A --> B["可训练 B 与缩放"] W --> Y["相加得到输出"] B --> Y Y -.反向.-> G["更新 A 和 B 并传递输入梯度"] Y --> M["固定适配器可合并成有效权重"]
Adapter、Prefix 与 Prompt Tuning
Adapter 在冻结主模型层之间插入小型可训练模块,训练参数少,多个任务可以保存为不同 adapter [6]。Prefix tuning 在每层注意力中学习连续前缀,改变模型对输入的条件化方式 [7];Prompt tuning 只学习输入侧的连续提示,随着模型规模增大表现出更好的参数效率 [8]。
这些方法的共同优点是基础权重不变、任务版本隔离、存储成本较小,适合多任务和多租户场景。限制是新增参数的表达能力受位置和结构约束,任务分布与基础模型差距很大时可能学不动;多个 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 论文说明,许多下游适配的有效更新可以用低秩子空间表达 [9]。
LoRA 的关键超参数不是只有 rank。target modules 决定更新哪些投影层,alpha 改变增量尺度,dropout 影响正则化,学习率和数据量决定是否过拟合。只在 q_proj 上加 LoRA 可能节省参数但表达不足;覆盖所有线性层可能提高效果,却增加 adapter 大小、训练成本和部署合并风险。应通过小规模消融比较 rank、层范围、数据比例和通用能力保持。
BitFit只更新bias参数 [10];IA3学习激活缩放向量 [5];AdaLoRA根据重要性动态分配rank [4],三者分别约束更新位置、形式与预算。DoRA 将权重方向和幅度分解,再使用低秩适配方向,试图缩小 LoRA 与全参微调之间的差距 [11]。
这些方法不是线性升级关系。参数越少,存储和多租户加载越容易,但能表达的任务变化越有限;参数越多,效果可能提高,却更容易过拟合和遗忘。方法选择应围绕目标任务的有效参数预算、adapter 数量、是否需要合并、是否需要热切换和是否存在严格延迟约束。
多个 adapter 可以为不同客户、语言或业务保存独立版本。共享基础模型降低了存储,但运行时要处理 adapter 加载、缓存、批处理混合和权限隔离。不同 adapter 的参数不能因为属于同一模型就互相可信;adapter 文件本身也要做来源校验、签名和资源限制。
合并多个 LoRA 可能出现方向冲突:一个 adapter 要求回答更简洁,另一个要求更详细;一个领域改变术语含义,另一个领域使用不同标签。应优先使用任务路由和显式组合规则,避免把多个未评估的增量直接相加。合并后的模型必须重新做全量回归,不能沿用任一单 adapter 的分数。
LoRA 可以在运行时作为增量加载,也可以合并到基础权重。合并便于使用普通推理 kernel,减少动态分支;独立加载便于多租户切换、灰度和回滚。两条路径可能产生数值差异,尤其当基础模型先被量化、adapter 再合并或权重精度不一致时。
多 adapter 组合需要明确优先级和冲突规则。风格 adapter、领域 adapter、语言 adapter 和安全 adapter 可能修改同一层的相反方向;简单相加不保证语义叠加。可以通过路由选择单一 adapter,也可以在验证数据上学习组合系数,但组合模型必须作为新的版本单独评估。禁止把未经审核的第三方 adapter 直接挂到生产基础模型上,因为它可能改变拒答、工具或数据泄露行为。
QLoRA 的训练路径
QLoRA 在 4-bit 量化基础模型上训练 LoRA adapter,并通过 NF4、double quantization 和 paged optimizer 降低显存 [12]。它让较大模型在有限 GPU 上完成适配,但训练精度、量化方案、梯度计算和部署合并之间存在耦合。
QLoRA 项目至少要区分三份模型:量化基础模型、训练中的 adapter、上线时的合并或动态组合模型。合并后再量化可能产生二次误差;动态加载避免合并,却需要 serving 系统支持 adapter;训练时的 chat template 与线上 template 不一致,也可能被误判为量化退化。最终质量必须在真实推理路径上评估。
Prompt tuning学习输入侧向量,Prefix tuning在层级注意力中引入连续前缀,LoRA改变选定矩阵的有效权重。前两者需要后端支持相应输入或前缀接口,不能把向量文件当普通文字提示;前缀还可能占用注意力长度和缓存资源。LoRA可在兼容的浮点权重上合并,从而消除独立adapter分支,但动态多租户路径仍需要加载增量。不同方法的缓存键、导出方式和并批限制要分别核对,不能凭“参数很少”断言推理免费。
QLoRA的NF4是针对近似正态权重设计的非均匀编码,不是INT4等距整数;double quantization压缩量化常数,paged optimizer缓解部分显存峰值。[12] 冻结低比特底座,反向仍经过相关计算来更新高精度adapter,不等于所有梯度、激活和优化器都以四位存储。它也不等于在训练中更新全部量化权重的QAT。若先合并再量化与训练路径不同,要把导出版本作为新候选回归。
为了理解低秩约束究竟改变了什么,令缩放常数为 \(c=\alpha/r\),有效权重为 \(W_{\mathrm{eff}}=W+cBA\)。设损失对有效权重的梯度是 \(G\in\mathbb{R}^{d\times k}\),由链式法则得到
\[ \frac{\partial\mathcal L}{\partial B}=cGA^\top, \qquad \frac{\partial\mathcal L}{\partial A}=cB^\top G. \]
这是本书在 LoRA 参数化上的直接推导,不是论文新增实验。[9] 若 A 随机初始化、B 为零,初始有效模型与底座相同;第一次反向时,A 的任务梯度为零,B 的梯度通常非零。B 更新后,A 才开始从这条路径得到任务梯度。若两者同时为零,两个梯度也同时为零,这条分支无法靠普通任务反向自行启动。这里说的是任务损失梯度,未包含权重衰减、额外正则项或实现中的其他更新。
可以用一个不涉及语言语料的二维例子检查符号。取一个输出通道,输入 \(x=(2,1)^\top\),rank 为一,\(A=(1,-1)\)、\(B=0\)、\(c=1\)。此时低秩分支输出是零,而中间量 \(Ax=1\)。假设损失对该输出的导数为三,则 B 的梯度为三,A 的梯度为零。用学习率十分之一进行一次不带其他项的梯度下降,B 变成负零点三,低秩分支在同一输入上产生负零点三的修正。第二次反向时,A 的梯度就可能非零。这个例子解释了初始化的工作方式,并不代表训练中梯度总是沿固定方向变化。
低秩也不是把原权重压成低秩。底座 W 可以满秩,限制的是增量 BA 的秩不超过 r;有效权重仍可能满秩。对于一个固定矩阵,足够大的 r 能表达任意增量,但这不意味着优化轨迹与直接全参数训练相同。分解存在尺度自由度:把 A 乘一个非零常数,同时把 B 除以同一常数,乘积不变,两个因子的梯度与优化器状态却会改变。初始化、缩放与优化器共同决定如何探索这个参数空间,仅比较“表达能力足够”无法预测训练稳定性。
参数节省可以独立计算。一个 \(4096\times4096\) 的矩阵有 16,777,216 个参数;rank 为 16 时,A 和 B 合计 \(16(4096+4096)=131,072\) 个参数,等于原矩阵的百分之零点七八一二五。若仅作教学假设,每个可训练参数关联十六字节的参数、梯度与优化器状态,则这部分从约二百五十六 MiB 降为二 MiB。不过底座仍需存储,前向仍需计算,激活和通信缓冲也没有按这个比例消失。将可训练状态缩小一百二十八倍,不能据此宣布总显存或训练时间缩小同样倍数。
冻结分支仍可能参与反向传播。对 \(y=(W+cBA)x\),输入梯度是 \((W+cBA)^\top\partial\mathcal L/\partial y\)。即使不计算 W 的参数梯度,上游可训练层仍需要这项输入梯度。因此,在冻结底座内部插入多个适配器时,不能把所有冻结线性层都放进完全切断自动微分的上下文。是否能够免去某部分计算,取决于其输入之前有没有需要梯度的参数,以及框架是否采用了数学等价的重计算方案。冻结参数与截断计算图是两个不同操作。
推理合并也要沿计算图判断。关闭训练期 dropout、固定适配器和缩放后,线性分支可以合并为同形状的有效权重;若同一批请求使用不同适配器,就不存在一份同时适用于所有请求的共同合并权重。对浮点数,独立分支相加与预先矩阵相加还可能产生末位差异,所以应区分数学等价与逐位一致。量化时更要谨慎:通常 \(Q(W+cBA)\ne Q(W)+cBA\)。训练在反量化底座上进行,导出却使用原始浮点底座合并,也会改变实际函数;每条路径都需要自己的制品身份与回归结果。
AdaLoRA 将预算分配进一步显式化。它以类似奇异值分解的三因子参数化表示增量,配合正交正则,并依据重要性保留或屏蔽对应分量;它没有在每一步对每个大矩阵重新执行完整 SVD。重要性同时考虑参数与梯度相关的敏感度及其波动,预算从较宽起点逐步缩减,最后固定分配继续训练。[4] 这种设计允许不同层获得不同容量,却增加估计噪声、日程与实现状态。某一层得到较多预算,只能解释为该训练过程认为它更有用,不能直接当成该层在所有任务上的永久重要性排名。
DoRA 则把幅值和方向拆开。以单个非零权重向量表示,令 \(v=w_0+\Delta v\),有效向量为 \(w’=m v/|v|\)。若对分母完整求导,记 \(u=v/|v|\) 和上游梯度 g,则
\[ \nabla_v\mathcal L=\frac{m}{|v|}(I-uu^\top)g, \qquad \frac{\partial\mathcal L}{\partial m}=u^\top g. \]
投影项去掉沿当前方向的分量,使方向与幅值的更新分工更清楚。原论文以矩阵的列向量范数定义分解;换成另一种权重存储约定时,必须连同广播轴一起转换。更重要的是,论文为降低训练内存,在后续实验中停止范数分母的梯度,此时方向导数变为 \(m g/\operatorname{stopgrad}(|v|)\),不再包含前面的投影项。[11] 完整导数能解释原始参数化,不能被不加说明地当作省内存版本的实际反向过程。
QLoRA 的精度路径同样应按对象拆开。低比特码与量化常数负责存储冻结底座,矩阵运算时把相关值解码到计算精度;高精度适配器及其优化器状态构成可训练部分。双重量化压缩的是量化常数,而不是让模型的每个算子再降一次精度;分页优化器用于管理内存压力,也不能保证任何 batch 都不会超出显存。[12] 显存估算需要分别列出基础码、常数、适配器状态、激活与临时反量化缓冲,不能只用基础参数乘四位作为整个训练进程的容量。
适配器的独立文件还依赖底座、词表、模块命名、缩放规则与目标矩阵形状。形状能够加载,只是最低检查;若词表 ID 或层语义已经变化,权重文件仍可能在错误函数上运行。版本记录应绑定这些依赖,恢复时检查它们共同一致。路由可以隔离不同业务的增量,却不能免除基础模型共享带来的容量和安全边界;回滚适配器也不应留下新模板、旧量化底座的混合配置。
6.3 量化表示、误差与执行成本
flowchart TD A["原张量与共享轴"] --> B["缩放及量化码"] B["缩放及量化码"] --> C["打包与执行算子"] C["打包与执行算子"] --> D["误差及任务验收"]
数值编码不是执行能力
量化需同时说明目标张量、编码、共享scale范围和执行算子。均匀整数仿射量化的基本映射与范围选择可见量化白皮书。[13] 以下固定本书教学约定:\(q=\operatorname{clip}(\operatorname{round}(x/s)+z,q_{min},q_{max})\),反量化为 \(\hat{x}=s(q-z)\);\(s>0\)是步长,\(z\)为整数零点。round的平局规则也必须固定。饱和误差来自截断,范围内的舍入误差来自有限网格,二者要分开观察。
对称有符号教学实现取 \(Q=2^{b-1}-1\),编码范围 \([-Q,Q]\),绝对阈值 \(a>0\)时设 \(s=a/Q,z=0\);因此四位示例使用-7到7,明确闲置一个码位,不能与使用-8到7的后端直接比较。全零块约定 \(s=1,q=0\)避免除零;非零常数块可用非零绝对值定scale。空块、NaN和Inf应在统计前拒绝并定位,不能悄悄当零。非对称范围要先包含实数零,再按两端与码位求scale和zero point;若两端相等需走常数分支。
权重可离线统计;激活依赖请求,可以离线校准为静态范围,也可按token或批次动态统计;KV随位置和上下文增长,其误差影响后续注意力。W4A16通常表示低位宽权重配较高精度激活,不能推断KV也变成四位。累加精度、归一化、softmax和未覆盖算子要单列,模型文件小并不表示全图都执行低精度乘法。
明确共享轴才谈粒度
设线性权重 \(W\in\mathbb{R}^{M\times K}\),行是输出通道。以下布局与账本为本书教学推导,不代表任一导出格式:
| 粒度 | 共享范围 | scale数量 | 主要代价 |
|---|---|---|---|
| per-tensor | 整个矩阵 | 1 | 不同通道被同一极值支配 |
| per-output-channel | 每行沿K共享 | M | 比tensor多元数据 |
| row-group | 每行沿K每G个值共享 | \(M\lceil K/G\rceil\) | 小组多scale、尾组需定义 |
| 二维块 | 每块\(G_m\times G_k\)共享 | \(\lceil M/G_m\rceil\lceil K/G_k\rceil\) | 布局与kernel约束不同 |
row-group在每行内细分时比per-channel细;跨行分组可能反而更粗,所以group并非固定“最细”。沿哪个轴、是否转置、广播规则、尾组padding和对齐都属于配置。激活的channel轴也不能机械照搬权重的输出轴。小组通常减轻局部分布差异,却增加scale、zero-point、索引和反量化开销,不保证更快。
若裸编码位数为b、每组scale占\(s_b\)位且zero point占\(z_b\)位,则未计padding的有效位宽约为 \(b+(s_b+z_b)/G\)。教学例:对称四位、每组128项、半精度16位scale,无零点时约4.125位/权重;这是容量算术,不是文件实测。尾组只有实际元素参与范围估计,padding不得引入伪极值;写盘按真实pack对齐计算,不能直接用这个平均数冒充制品大小。
一个极大值可能把整组scale拉大,让多数小值舍入到零。裁掉离群点能改善主体分辨率,却可能损伤少见关键语义;应比较保留异常通道、减小组、混合精度和裁剪,不只比较平均重建误差。若只保存量化码却丢失scale轴或广播规则,即使形状相同也会解出错误模型。
FP8与NVFP4等浮点低精度格式还涉及指数/尾数、块缩放和多级scale;它们不能套用上述整数步长公式。格式、训练配方和推理后端布局必须分别核对。下面补充一种有官方依据的表示;本章仍不提供跨设备、跨引擎的支持矩阵或自动提速结论。
NVFP4:表示、缩放轴与存储账本
NVIDIA 介绍的 NVFP4 采用 E2M1 数值、每 16 个值共享一个 E4M3 块 scale,再配一个张量级 FP32 scale。Transformer Engine 2.20.2 文档将重建关系写为 x ≈ q_e2m1 × s_block × s_global;其训练配方还区分一维块与二维权重缩放,不能把一种布局套到所有张量。[14][15]
量化时,先从张量和块的统计量确定两级 scale,再把原值除以有效 scale,按配方的舍入与裁剪规则映射到 E2M1 码本;scale 自身也有表示误差。零块须走约定分支,非有限值不能混入 amax;推理转换与训练配方的随机舍入也不能混同。[14][15]
作为本书一维行分组的教学账本,设矩阵为 M×K、K 可被 16 整除:量化码占 M×K/2 字节,逻辑块 scale 形状为 M×(K/16)、占 M×K/16 字节,另加 4 字节张量 scale;未计对齐时约为 4.5 + 32/(M×K) bit/值。这个推导不是导出文件的实际大小。两个四位码装进一个字节后,仍须约定高低位次序、转置、尾块和 scale 的物理排布;目标 kernel 的对齐或重排会增加开销。
离散网格的直觉可以通过一个小数组建立。使用前述对称四位约定,原值取零点一、零点二、零点三和七,最大绝对值校准得到步长一,前三个数都会舍入到零,最后一个精确表示。若把阈值缩小到零点三,前三个值能被较细网格表示,但七会饱和到零点三,产生六点七的误差。小值更精细并不等于总体平方误差更低;是否值得丢掉极值还取决于这个值对应的通道、出现频率和下游作用。算例说明为什么校准需要目标,而不是证明任何一种阈值总是更好。
在没有饱和、采用最近邻舍入的均匀量化中,单项绝对误差最多为半个步长。这个界依赖范围条件;一旦真实值越过可表示端点,误差可以远大于半步长。随机舍入则以相邻码的概率混合保持局部期望,误差不再用同一个半步长界描述。若原值已被裁剪,期望守恒最多针对裁剪后的值;若 scale 自身又被低精度表示,完整重建也多一层误差。不能把某一步无偏直接推广为整个网络输出无偏。
权重误差对输出的作用由输入决定。记原线性层 \(y=Wx\),量化误差矩阵 \(E=\widehat W-W\),则输出扰动为 \(Ex\),并满足一致范数下的 \(|Ex|\leq|E||x|\)。这个上界能说明输入尺度会放大误差,却通常偏保守,也没有表达输入集中在哪些方向。若把校准输入视为随机变量,二阶矩为 \(C=\mathbb E[xx^\top]\),则平均输出平方误差为
\[ \mathbb E|Ex|_2^2=\operatorname{tr}(ECE^\top). \]
因此,同样大小的权重误差在不同输入分布上会有不同后果。若某输入方向几乎不出现,沿该方向的误差对校准输出影响很小;若线上突然大量出现该方向,原来的评价就不再充分。这是本书对线性层的推导,也是理解激活感知方法的共同入口,并不等于校准二阶矩能完整预测语言模型任务分数。
一个二维反例更直观。假设某输出行的误差为 \(e=(\varepsilon,-\varepsilon)\)。当输入始终近似 \((1,1)^\top\) 时,两项互相抵消,输出误差接近零;换成 \((1,-1)^\top\) 时,输出误差变成 \(2\varepsilon\)。权重的均方误差没有改变,输入相关性却改变了输出。若只在第一类输入上校准,就可能低估第二类输入的风险。这不意味着应收集所有可能输入,而是要求校准集覆盖部署任务的主要方向,并用独立样本发现未覆盖的关键切片。
更深网络还会传播误差。局部线性化可把某层扰动经后续层的 Jacobian 传到输出,但这只是当前输入和小扰动附近的近似;经过非线性、归一化与注意力后,不同层的误差可能放大、抵消或改变激活区域。不能把所有层的权重误差简单平均后称为模型质量。逐层重建误差适合定位敏感部位,任务级回放用于确认最终效果,两种指标服务于不同问题。
对于贪心选择,存在一个有用但有限的间隔条件。设原始最高和第二高 logit 的差为 \(\Delta\),每个 logit 的扰动绝对值都不超过 \(\epsilon\)。如果 \(\Delta>2\epsilon\),最高项仍不会被其他项超过。这个结论来自最坏情况下第一名下降与第二名上升的合计幅度,是本书推导。它只保护当前相同上下文的一步 argmax;对于随机采样,概率即使轻微变化也可能改变同一随机数对应的结果,而一步变化又会改变未来上下文。只有对整条生成路径逐步满足相应条件,才能继续讨论整段保持,不能从一次输出间隔直接推出回答可靠性。
表示成本也必须含元数据。以四位码、每组一百二十八个权重和十六位 scale 的教学布局为例,一百二十八个码占六十四字节,scale 再占两字节,所以有效位宽是四点一二五。若再加十六位零点,就变成四点二五;若最后一组只有少数有效权重,却仍按完整块打包,这个组的平均成本会更高。稀疏高精度例外还需要索引和对齐信息,不能只把例外值本身计入。压缩率取决于具体制品,不是“INT4”四个字符就能唯一确定。
物理布局之所以重要,是因为矩阵乘法按特定顺序读取元素。逻辑上同一矩阵可以按行组量化,也可以转置后按另一轴分组;如果转换时仅转置量化码却没有同步处理 scale,解出的数值就会错误。即使数学结果一致,不同布局也会影响合并访存、解包和张量核心输入。离线转换应做序列化重载与小矩阵逐元素检查,再进入整模型测试。文件能够被读取,不能代替数值语义检查。
NVFP4 更能说明表示与训练配方的区别。该文档版本默认对权重使用二维缩放,对激活和梯度使用一维缩放,随机舍入仅启用于梯度;其面向权重梯度矩阵乘法的路径还使用随机 Hadamard 变换平滑输入分布。[15] 这些是特定配方的机制,不是所有四位浮点导出物都具备的性质。正文中的一维四点五位账本只用于那种共享轴,不能拿来反推二维权重文件或完整训练状态的真实字节数。
最终要问的是压缩消除了哪种瓶颈。若延迟主要来自权重从显存到算子的读取,减少字节可能有利;若主要来自大批矩阵计算,低位格式能否使用合适的计算核心更重要;若主要来自长上下文缓存或排队,单纯权重量化的收益可能有限。不同请求长度和批大小会改变瓶颈,所以同一量化模型可能在一个负载上更快、另一个负载上更慢。性能结论必须带上形状与负载,而不是仅携带模型名字。
6.4 校准如何保护任务能力
flowchart LR X["代表性校准输入"] --> G["GPTQ 输出重建与补偿"] X --> A["AWQ 保护敏感权重通道"] X --> S["SmoothQuant 迁移激活难度"] G --> V["独立开发集选择"] A --> V S --> V V --> T["冻结测试及真实算子回放"]
四种范围选择优化不同的代理
Wu等比较Max、Percentile和Entropy校准;其结果说明不同网络适合的范围方法不同。[16] 本书将一般非对称极值法称minmax,对称情形就是最大绝对值法。下表是方法区别,阈值搜索和误差记录必须与 6.3 节的编码约定绑定:
| 方法 | 范围选择 | 优点 | 风险与需记录项 |
|---|---|---|---|
| minmax | 观测最小/最大;对称取max abs | 覆盖校准观测范围,易实现 | 极值拉大步长;未来输入仍可饱和 |
| percentile | 对称取绝对值分位;非对称说明双侧分位 | 用裁尾换主体分辨率 | 分位定义、插值、尾部占比;罕见关键值受损 |
| MSE | 搜索反量化平方误差较小的范围 | 直接比较数值重建 | 对数据频率敏感,不等于任务最优 |
| KL/entropy | 搜索直方图重建分布损失较小的范围 | 比较分布形状的信息损失 | bin、截断重分配、展开和平滑规则影响结果 |
以下是可复核的教学定义。给定校准值集合和固定候选阈值\(a\),对称量化后计算 \(E(a)=\frac1N\sum_i(x_i-\hat{x}_i(a))^2\),选MSE最小的候选;并列用预定规则,如选较大范围。候选集合只能从校准/开发过程确定。MSE会给较大数值更高平方代价,但大量普通值仍可能压过少数关键值,因此应另报饱和率、最大误差和长尾任务。
KL方法也必须先规定候选阈值下的共同支持。以下采用教学约定:固定原始直方图的边界,对每个阈值a把尾部计数折入保留区间的边界bin,并归一化为该候选的参考分布\(p_a\)。将这个分布的保留bin合并到低位码桶,再把每个码桶的概率均匀回分给桶内原先满足\(p_{a,j}>0\)的bin,得到同一保留bin支持上的\(q_a\);回分分母是桶内正概率bin的数量,而不是桶的总bin数;该数量为零时桶概率也为零,不执行除法。原本为零的bin保持零。计算 \(D_{KL}(p_a\Vert q_a)=\sum_{j:p_{a,j}>0}p_{a,j}\log(p_{a,j}/q_{a,j})\)后选阈值。该约定使参考正概率bin得到正重建概率;若其他回分规则产生正概率对应零q,结果应记无穷,或事先规定对共同支持作平滑并重新归一化,不能直接跳过该项。尤其不能保持未裁剪的原始p,却给裁剪区间外的q填零,否则非零尾部会使KL无穷。不同后端对折尾顺序、零bin和回分有不同实现,复现时须保存具体版本与规则,本教学定义不声称逐项复现某个后端。[16]
这里KL比较的是激活直方图,不是后训练策略相对参考模型的KL,也不是输出语义正确率。MSE与KL最优阈值可能不同,最终用独立开发任务选型,冻结测试集只用于最终验收。校准数据覆盖中文、代码、数字、工具模板、长上下文与异常输入;分层抽样记录比例,不把私密字符串无限复制进缓存。权重范围统计和激活校准也应区分,GPTQ/AWQ用激活信息并不意味着二者都在量化激活。
GPTQ:基于误差补偿的权重量化
GPTQ 使用少量校准数据,逐层选择量化权重,并利用近似二阶信息补偿已经产生的误差 [17]。它适合离线压缩大模型权重,尤其关注在固定 bit 数下保持输出误差。优点是无需重新训练,缺点是量化结果依赖校准数据、group size、排序策略和推理 kernel。
AWQ 观察到,与激活相关的部分显著权重通道对质量影响更大,通过等价缩放降低敏感权重的量化误差,而非直接把所有重要权重保留高精度 [18]。这体现了一个重要原则:权重量化不能只看权重本身,还要看模型在真实输入上的激活分布。不同业务数据会导致“重要通道”不同,因此公开校准集的最佳 bit 配置未必适合线上。
SmoothQuant 把激活中的离群值通过等价变换迁移到权重侧,使权重和激活都更容易做 INT8 量化 [19]。它适合对追求端到端整数矩阵乘法的系统进行优化。难点是平滑系数、校准分布和算子支持;如果某个层或某类输入仍有离群值,整体 W8A8 质量可能显著下降。
LLM.int8 通过混合精度处理异常值,说明极少数 outlier 不能简单与普通通道同样量化 [20]。ZeroQuant 探索训练后低比特量化和硬件友好实现 [21];SpQR 进一步结合稀疏性和量化,以较低存储成本保留敏感权重 [22]。这些方案的共同挑战是算法格式必须与硬件 kernel、编译器和 serving engine 匹配。
方法差别与反量化的成本账本
GPTQ优化校准输入诱导的局部输出重建误差并补偿,AWQ利用激活统计选择等价缩放,SmoothQuant用输入通道的缩放把激活量化难度迁移到权重。以后者为例,列向量约定下 \(Wx=(WS)(S^{-1}x)\),S是输入通道正对角矩阵;浮点等价不保证两端量化后无误差。平滑缩放轴与最终量化scale轴也不是同一概念。GPTQ/AWQ常见路线以权重低比特为中心,SmoothQuant论文主要面向W8A8;具体组大小与激活粒度依配置而定,不虚构统一后端支持表。[17][18][19]
低位权重可能减少HBM读取,融合kernel可在片上解包/缩放再参与计算,避免先展开整块浮点权重写回显存。小batch解码若受权重带宽限制,节省传输可能超过反量化成本;大batch复用提高后,计算、布局转换和调度可能更重要。这是解释AWQ类部署为何可能更快的条件,不是算法名字带来的保证。[18] 实验需固定质量、形状和负载,分别计pack、scale读取、反量化、矩阵乘法及未量化算子。若某一可减半的传输项原占延迟f,理想总加速仅为 \(1/(1-f/2)\),再扣额外开销;此式为串行时间账本的教学推导。
输入为有限浮点数组、b、共享轴/组、对称选项及分位参数;先只实现上述对称minmax和绝对值percentile,再扩展非对称双尾。输出阈值、scale、零点、量化码、反量化值、饱和率、MSE和元数据位数,并保存分位插值及round约定。用同一数组比较两法,不能为每法更换输入分布。
边界至少包括全零、非零常数、正负不对称、单个强离群点、长度不足G和不整除G的尾组;空输入、NaN/Inf要明确失败。以手工小数组核对每个码,再确认组间广播不串行。拓展实现MSE阈值搜索与直方图KL,逐候选检查折尾后的参考分布与重建分布具有相同保留bin支持,验证零bin回分规则、归一化及非零尾部案例。练习只规定输入输出和验收,尚无配套代码、模型量化或GPU实测;不要用一次数组误差下降声称模型成功。
从上一节的二阶矩表达可以看出,GPTQ 使用的二阶信息并不是对整套语言建模任务求精确 Hessian。对于一行权重和固定校准输入,输出重建目标是一个二次函数,其 Hessian 与 \(XX^\top\) 成比例。这个局部问题可以精确写出二阶结构,但把各层分别量化的过程仍只是全模型质量的代理。校准输入不足时矩阵可能奇异或病态,阻尼既帮助数值稳定,也改变补偿的权衡;因此实现中的阻尼参数不是可以任意省去的装饰。[17]
误差补偿的思想可以用两个相关输入说明。设目标是保持 \(w_1x_1+w_2x_2\),且校准样本总有 \(x_2=x_1\)。如果量化第一项使 \(w_1\) 增加了零点一,那么让第二项减少零点一,就能在这些输入上抵消输出变化。但若线上出现 \(x_2=-x_1\),两个误差会同向叠加。这是教学极端例,不是 GPTQ 的完整算法;它同时解释补偿为何有用、为何依赖输入,以及独立任务验证为何不可取消。真实算法需要在多个输入方向和离散码约束之间折中。
GPTQ 为扩大规模,使用各输出行共用的量化列顺序,把部分补偿延迟到块处理结束,并用 Cholesky 分解提高数值稳定性。阅读算法时尤其要注意符号:论文伪代码把原来表示逆 Hessian 的变量重赋成它的 Cholesky 因子,后续对角元素已不是未经分解的逆矩阵对角元素。[17] 如果只从两个段落各摘一个公式,再沿用同一个变量名,很容易把误差除错尺度。书稿推导应分别记逆矩阵与三角因子;没有实现和数值测试时,不声称已经复现整套量化器。
校准还存在传播次序。先量化的模块改变了后续模块实际接收的激活,因此后续校准输入可以来自部分量化网络,而非始终来自完整浮点网络。GPTQ 的实验流程按 Transformer 块处理,并重新计算后续块输入。[17] 这能让后续量化适应已产生的变化,却不能保证所有误差都被补偿。若更换处理次序、并行量化多个块或复用旧激活缓存,应把它视为实现变化,并重新检查质量和资源。
AWQ 的缩放需要同时看量化前后的函数。设 S 为正对角矩阵,令 \(W’=WS\)、\(x’=S^{-1}x\),原始乘积不变。放大某些输入通道对应的权重列,可能让它们相对量化步长更容易表示;但组内极值也可能被推高,导致其他权重更粗糙。于是,保护敏感通道与影响邻近通道之间存在取舍,不能把 scale 一直增大。AWQ 用激活信息选择缩放,并结合校准数据搜索;其动机中保留少量权重高精度的实验,不是最终方法的存储格式。[18]
SmoothQuant 使用同类可逆缩放,却主要处理权重与激活共同量化时的困难分配。某些输入通道存在很大的激活值,直接用共同范围会压缩普通激活的有效分辨率;把该通道的激活缩小、权重放大,可以把困难从激活侧迁向较易离线处理的权重侧。[19] 迁移不等于消失:权重侧也有范围与粒度限制,缩放过强仍可能损害它。因此 W8A8 的评价应分别检查权重、激活与最终输出,而不是只报告激活直方图变得平滑。
这些方法还不能与混合精度离群分支混为一谈。LLM.int8 对特定离群特征维度使用较高精度计算,SpQR 则在压缩表示中为高误差权重保留稀疏例外;二者保护的对象与索引结构不同。[20][22] 如果将所有方法统一写成“保留百分之一高精度”,就会丢失核心算法差异,也无法估算实际索引、分支与算子成本。方法比较应先说明哪个张量被量化、哪些值进入例外、推理怎样恢复乘积,再讨论性能。
对贯穿案例,校准目标可以聚焦字段提取,但校准样本不能只有成功的短工单。长日志、罕见错误码、混合语言、负金额和缺失字段可能激活不同方向;这些切片需要按预期部署范围覆盖。开发阶段比较敏感层回退和组大小,最终测试则检查字段值与证据是否一致。若困惑度接近基线而金额错误率上升,应优先保留这个任务失败事实,而不是用总平均宣称近乎无损。校准指标帮助解释误差,业务约定决定误差是否可接受。
6.5 蒸馏迁移的分布与行为
flowchart LR T["固定教师"] --> P["同温度软分布"] T --> R["生成文本与轨迹"] P --> K["事件空间对齐后计算 KL"] R --> F["验证过滤后做序列监督"] K --> S["学生更新"] F --> S S --> E["独立能力与成本验收"]
Teacher—Student 目标
知识蒸馏让 student 学习 teacher 的软分布,而不仅是硬标签。经典形式为:
\[ \mathcal{L}=\alpha\mathcal{L}{hard}+(1-\alpha)\tau{distill}^2D_{KL}(p_{teacher}^{\tau_{distill}}\Vert p_{student}^{\tau_{distill}}), \]
其中 \(\tau_{distill}>0\) 是蒸馏softmax温度,teacher 的软概率包含类别相似性和暗知识 [23]。对语言模型,蒸馏可以使用 teacher 的 token 分布、生成轨迹、偏好排序、中间表示或工具动作。
DistilBERT、MobileBERT 与生成模型
DistilBERT 通过蒸馏和结构简化降低 encoder 模型成本 [24];MobileBERT 进一步围绕移动设备的延迟和内存设计结构 [25]。这里encoder结果不能直接外推到decoder聊天模型。生成式大模型蒸馏则更复杂:student 需要学习长序列概率、停止行为、工具格式和安全边界,teacher 生成的错误和偏好也会被复制。
蒸馏训练数据可以混合真实标签与经过验证的 teacher 输出,独立验证与测试样本必须留在训练之外。只用 teacher 生成数据可能限制覆盖并传递教师错误;只有教师文本时无法直接利用完整软概率,但仍可构成有效监督。代码蒸馏要运行测试,数学蒸馏要验证答案,工具蒸馏要检查环境状态,不能只比较 token-level loss。
蒸馏的目标选择
如果目标是低延迟分类,logit 蒸馏可能足够;如果目标是聊天和代码,轨迹蒸馏更重要;如果目标是 reasoning,必须考虑过程、结果和预算;如果目标是多模态,student 还要学习跨模态对齐。蒸馏不是简单把大模型“缩小”,而是选择哪些能力值得保留、哪些推理成本可以削减。
温度的作用可以直接从 softmax 梯度看出。令固定教师 logits 为 \(a_i\),学生 logits 为 \(z_i\),同一温度 T 下的分布为 \(p_i\) 与 \(q_i\)。对教师到学生的 KL 求学生 logit 导数,有
\[ \frac{\partial D_{\mathrm{KL}}(p\Vert q)}{\partial z_i} =\frac{q_i-p_i}{T}. \]
教师熵与学生参数无关,所以在教师固定时,使用软标签交叉熵得到相同学生梯度。若教师也参与更新,这个常数论证就不能直接沿用;若反向 KL 交换了两个分布,其梯度和优化倾向也不同。明确 KL 方向比只写“让两个分布接近”更重要。经典蒸馏论文用同温度软目标,并让硬标签项保持普通温度。[23]
为何又要乘 T 的平方?在温度足够高、类别数固定时,中心化后的 logits 相对温度很小,softmax 可作一阶近似。记类别数为 K,分别减去教师和学生各自的 logit 均值,有 \(q_i-p_i\approx[(z_i-\bar z)-(a_i-\bar a)]/(KT)\)。再乘前面梯度里的 \(1/T\),就出现 \(1/T^2\) 的量级。补乘 T 平方能抵消这个高温近似下的衰减,但不能保证任意温度下梯度范数严格相同,也不表示温度越高信息越多。[23] 温度趋于很大时分布接近均匀,数值差异如何被利用仍依赖精度、损失权重和学生容量。
例如教师在三个类别上给出零点六、零点三、零点一,硬标签只告诉学生第一类胜出,软分布还表达第二类比第三类更接近教师判断。但这里的“接近”是教师的统计偏好,不是语义真理。教师可能因为数据偏差把两种故障混淆,学生也会学习这种关系。对于风险不同的类别,应把错误代价与独立标签纳入评价,而不是因为软分布平滑就认为监督一定更可靠。教师置信高也不是正确性证书。
自回归蒸馏多了一层条件对齐。在同一个前缀下比较教师和学生的下一 token 分布,要求它们的事件空间一致。如果词表不同,同一个 ID 不表示同一个字符串;如果切分不同,第五个 token 甚至可能处在不同字符位置。直接逐位置 KL 会比较无关事件。可行路线包括使用共享词表、构造明确的字符串级对齐目标,或者只用教师生成文本重新按学生词表编码。最后一条路线最简单,但它学的是已选中的序列示范,而不是教师所有候选的软概率。
即便词表相同,前缀来源也会影响目标。只在正确答案前缀下训练,学生推理时一旦自己走偏,就可能进入训练中很少出现的状态;只在教师生成的前缀上学习,也不能确保覆盖学生自己的错误。可以在开发实验中加入学生生成的前缀,由教师或验证器提供后续指导,但这改变了采样分布和标注成本。应记录哪些前缀来自数据、教师或学生,而不是把所有蒸馏样本当成独立同分布的现成标签。
对推理轨迹尤其不能只看长度。一个长过程可能包含正确结论与错误中间步骤,一个简短过程也可能足够完成任务。如果学生容量有限,要求它逐字复制教师的冗长解释,可能把训练资源用在风格和连接词上。更合适的实验是同时比较结果监督、经过验证的过程监督和压缩后的过程监督,固定题目与输出预算,再看独立成功率。哪些过程值得保留应由可验证约束决定,不能把教师说得多当成知识更多。
蒸馏也没有自动实现压缩。若教师和学生结构一样大,只改变监督来源,推理权重与计算可能几乎不变;若学生更小,容量损失需要由数据与目标选择补偿。DistilBERT 和 MobileBERT 的结果来自特定编码器结构、训练目标与设备,展示了结构设计和监督可以共同起作用,并没有给所有生成模型提供固定压缩比例。[24][25] 因此,学生配置应先满足部署约束,再确认哪些能力值得用有限容量保留。
对于工单助手,可以让教师标注故障类别与证据句,再由规则检查字段合法性、证据是否存在、金额是否匹配原文。通过的样本用于训练小学生,未通过的样本保留为教师失败记录,不能静默丢掉后宣称教师准确率更高。评价学生时,应同时比较原教师、未蒸馏的小模型和蒸馏后学生,才能区分学生本来就具备的能力与蒸馏新增的收益。少数困难任务可以路由回教师,但路由规则本身也要有独立评估。
这条路线的成本由离线与在线两部分组成。离线包括教师生成、验证、过滤和学生训练;在线包括学生推理、重试与回退教师。若任务量很少或分布变化很快,离线投入可能来不及摊薄;若重复任务很多且边界稳定,小学生可能降低长期成本。这是本书的成本推导,不是蒸馏论文保证的收益。拒绝输出或升级处理也应作为结果类别统计,不能只在学生成功的子集上计算平均成本。
6.6 多模态接口与联合验收
flowchart LR I["图像与预处理"] --> V["视觉编码器的特征序列"] V --> P["逐特征投影"] V --> Q["固定查询压缩"] P --> L["语言前缀或交叉注意力"] Q --> L L --> O["答案与证据区域"] O --> E["数字核验及图文冲突回归"]
图文对齐的起点
CLIP 用图像—文本对比学习把视觉和语言映射到共享空间,展示了大规模弱标注数据可以学习通用视觉语义 [26]。对比损失鼓励正确图文配对相似、错误配对分离,适合检索和零样本分类,但不能直接完成长文本生成和复杂对话。
ViLT 直接在 Transformer 中处理图像 patch 与文本 token,减少了重型视觉区域特征的依赖 [27]。这类模型解决的是视觉和语言的联合表示,仍需要额外训练才能稳定完成视觉问答、文档理解、空间关系和指令执行。
Flamingo 通过冻结视觉编码器和语言模型,引入跨模态层支持少样本视觉语言任务 [28]。BLIP-2 使用 Q-Former 从视觉特征中抽取与语言模型相关的信息,再连接冻结的大语言模型 [29]。它们共同体现了“冻结大模块、训练小连接器”的工程思想:减少训练成本和灾难性遗忘,同时让视觉信息以语言模型能利用的形式进入上下文。
连接器的瓶颈在于信息压缩。视觉 token 太少会丢失细节,太多会占用上下文和推理成本;冻结语言模型可能无法理解某些视觉概念;视觉编码器和语言模型的坐标、位置与时间尺度不一致。连接器训练必须配合图文对齐、指令数据和任务评估。
LLaVA 把视觉特征投影到语言模型输入空间,再使用视觉指令数据训练对话能力 [30]。Qwen-VL 进一步覆盖中文、多语言、细粒度定位和文档理解,展示了中文多模态模型在数据配比和评估上的特殊要求 [31]。这类模型的能力不只来自视觉编码器,还来自图像分辨率、OCR、位置表示、指令质量和语言模型本身。
InternVL 等工作探索更高分辨率和更大视觉基础模型,说明视觉 token 数和细节能力存在明显权衡 [32]。高分辨率可能提升小文字和局部目标识别,通常也增加视觉端计算和内存需求;语言上下文与 KV Cache 是否增加,取决于连接器是否输出更多 token。BLIP-2 的固定查询和 Qwen-VL 的固定长度压缩说明,视觉输入变长不必使语言前缀同步变长。[29] [31] 端到端延迟还受内核、批量和并行执行影响,必须实测;多图和视频还要处理帧采样、时间顺序和跨帧一致性。
多模态训练数据至少包括图文描述、视觉问答、OCR、表格和文档、定位、图表、视频事件和安全边界。图像描述正确,不代表模型能可靠读取数字;能识别物体,不代表能理解空间关系;能回答图片问题,不代表引用了真实视觉证据。评估要把视觉感知、语言推理、定位精度、OCR、跨模态幻觉和安全分别统计。
常见失败包括图像不存在时幻觉描述、文字太小导致数字错误、把相似物体混淆、忽略图像局部、视觉内容与文本提示冲突,以及被图片中的恶意指令注入。多模态系统需要输入预处理、内容安全、证据定位和输出校验,不能把图片当作天然可信上下文。
视觉编码器与语言模型的接口
本节重点讨论视觉编码器、跨模态连接器和语言模型组成的生成式桥接架构,这不是所有视觉语言模型的定义。视觉编码器把像素变成 patch 或区域表示;连接器把这些表示映射到语言模型可接受的向量空间;语言模型再以自回归方式生成文本或动作。三部分可以全部训练,也可以冻结其中两部分只训练连接器。冻结方案成本低、稳定性好,但视觉和语言之间的差距可能限制上限;全量联合训练表达力强,却需要更多图文数据、显存和严格防止语言能力退化。
视觉 token 数是一个核心预算。在视觉 patch 直接拼接到语言序列的架构中,降低分辨率或合并 patch 可以缩短上下文,但可能丢失小字体、表格线和局部目标;提高分辨率可能改善 OCR 和定位,并增加视觉端计算。使用固定查询压缩时,语言侧前缀可以保持不变,应分别统计视觉编码长度与连接器输出长度,再测量 prefill、KV Cache 和吞吐。多图输入还要保留图像边界、顺序和来源,否则模型可能把不同页面的字段混在一起。视频则增加时间采样和跨帧一致性问题,不能简单把每一帧独立描述后拼接。
多模态训练通常包含几个阶段:图文对比学习建立粗粒度语义对齐,图文生成或匹配学习视觉到语言的映射,视觉指令微调塑造对话和任务行为,领域数据再增强文档、图表、代码截图或界面操作。每阶段目标不同;混合数据时须明确对应目标和权重,不能期待模型自动学会所有能力。
视觉指令样本应明确答案依赖的是图像、文本还是外部知识。若问题要求读取图片中的数字,标准答案应包含定位和识别依据;若问题要求总结文档,样本要覆盖页码、表格和跨页关系;若问题要求点击界面,动作坐标、元素状态和失败处理必须可验证。只用“描述这张图”的数据,不能训练可靠的业务视觉能力。
语言模型的先验可能覆盖视觉信号:当图片模糊或不存在时,模型仍会凭语言概率编造描述;当图像中有少见物体时,模型会用常见类别替代;当用户问题带有错误前提时,模型可能顺着文本而非图像回答。解决这类问题需要让模型显式指出证据区域、置信不足和需要更高分辨率的原因。
可以在输出中保留 bounding box、页码、时间戳、OCR span 或截图区域,再由程序检查引用是否存在。对于关键数字、金额、合同条款和监控指标,应使用专用 OCR、表格解析或领域工具复核,不把通用视觉语言模型当成唯一事实源。图像中的文字也可能包含提示注入,视觉内容必须和用户指令一样经过信任边界处理。
视觉指令微调可能让模型更会描述图片,却损伤纯文本代码和数学能力;高分辨率数据可能提高视觉细节,却增加回答冗长和成本。训练时应保留文本回放集合,并按视觉任务、纯文本、中文、代码和安全分层评估。LLaVA 的视觉指令路线、BLIP-2 的连接器设计和 Qwen-VL 的中文多模态实践,分别说明数据、连接器和语言模型底座都会影响最终能力 [29][30][31]。
多模态模型还要做输入缺失测试:只有文本、只有图片、图片损坏、图片尺寸异常、OCR 为空、多图顺序改变、视频帧丢失。模型应能识别输入不足并请求补充,而不是用语言先验填满空白。把这种“正确失败”纳入 SFT 和偏好数据,是本书建议检验的补充方案;收益应与增加正常图文问答的基线对照。
本书把输入处理视为有损证据链:原文件标识与授权范围、解码、采样/裁剪、感知结果和答案引用要对应。音频转写丢失音调、说话人重叠和非语音事件,需保留时间区间、语言和识别不确定性;不让模型把听不清的金额自动补全。视频抽帧会漏掉短事件,帧的顺序、时间戳和音画同步必须保留;只看到两个端点不能断言中间动作发生。这里描述应用契约,不宣称前述视觉模型都原生支持音频或任意时长视频。
图像要保留页码、区域与缩放映射,音频要保留片段与说话人标记,视频要保留帧时间和采样规则。资源超预算时先选择问题相关片段,再标记未观察范围;损坏、缺页、静音、丢帧和模态冲突应返回证据不足。将这些输入故障与生成错误分开,才能决定重采集、换感知工具还是修改语言模型。
可选延伸是漫剧资产与人物一致性,属于本书教学设计:把角色设定、服装、参考图/声音、分镜与已验收片段保存为带版本资产;镜头记录所用资产和下游依赖。服装版本改变后,只使受影响镜头和合成产物失效,再按预算局部重算。保存seed与提示提高追溯性,但不保证跨镜头身份或每次相同像素;身份条件是否有效取决于具体生成后端,不能从视觉问答论文推出影视生成能力。
片段评估分别检查角色身份、服装与场景、动作连续、音画同步、闪烁、文字可读性和叙事衔接,结合相邻镜头比较及人工抽检,失败镜头单独修复。不要仅由生成模型自评或用单帧美观代替整片验收。完整生成工具、版权范围、可恢复编排和发布授权留给专门项目;本章没有实现全自动创作平台,也不承诺人物一致性保证。
图文对齐的目标也决定了模型接口。CLIP 在一批图文配对中构造相似度矩阵,分别从图找文、从文找图计算交叉熵。正确配对是监督信号,其他批内配对形成对照;相似度尺度在训练中学习。[26] 这个目标能学习匹配表示,但没有直接训练逐 token 回答过程。将相似度最高的描述当作答案,与一个生成式视觉语言模型写出新回答,是两种不同计算。遇到多个描述都合理的图片,批内负例还可能包含语义相近样本,不能把配对标签直接等同所有语义关系。
连接方式决定视觉信息怎样进入语言计算。简单投影把每个视觉特征变成语言嵌入宽度的向量,通常保留较多局部信息,也直接占用前缀位置。BLIP-2 使用可学习查询从视觉特征提取固定数量的信息:原论文采用三十二个查询,输出长度不随视觉输入特征数直接增长。[29] 因此,分辨率提升可以增加视觉端与查询交互的成本,却保持语言前缀数量不变;代价是信息必须通过固定瓶颈。细节是否丢失要由任务测试决定,不能只按上下文更短判断方案更优。
Flamingo 使用另一条路径:Perceiver 将可变视觉特征压成固定数量,再由插入冻结语言层之间的交叉注意力读取。新增分支通过零初始化的 tanh 门控接入,使开始时语言路径保持原有函数;不同规模配置的插层频率并不相同。[28] 这种结构的视觉特征不是简单当成全部语言前缀拼进去,因此不能直接套用拼接架构的自注意力长度公式。其文本位置直接读取最近的前置图像,但更早图像仍可能通过先前文本的自注意力间接影响当前状态,不能解释成模型绝对看不到历史图片。
训练阶段同样没有统一冻结模板。初代 LLaVA 先训练投影,再更新投影与语言模型,视觉编码器保持冻结。[30] Qwen-VL 的第一阶段冻结语言模型、更新视觉端与连接器,第二阶段解冻全模型,指令阶段再冻结视觉端。[31] 同样叫“图文对齐”,优化的参数和数据目标可以不同。冻结大模块减少其优化器状态,但当梯度仍需穿过它流向连接器时,并不自动省去全部反向计算。
Qwen-VL 还提供一个具体预算例:第二阶段把图像边长从二百二十四提高到四百四十八,视觉特征序列由二百五十六增至一千零二十四,但连接器查询数仍为二百五十六。[31] 这个记录说明,视觉 token 需要注明是哪一层的 token。若本书另外假设直接拼接且不压缩,边长翻倍、patch 大小不变时,特征数约增至四倍;那只是几何推导,不是对所有模型语言上下文的预测。
对扫描工单,接口预算最终要回到证据。若金额字符在预处理缩放时已经模糊,语言模型再强也无法可靠恢复缺失像素;若连接器遗漏某一局部,增加回答长度也不能重新获得它。可以保存裁剪区域与原图坐标映射,用高分辨率重读或专门 OCR 检查关键字段,再比较同一页面上的结果。这个流程把感知失败与语言推理失败分开,避免把所有错误都归因于需要更多视觉指令数据。
模型报告中也应分开“输出了坐标”和“坐标证明答案正确”。一个边界框存在于图中,只能检查引用区域的形式;框内是否真的有目标文字、识别是否正确、推论是否由该区域支持,还需要不同层次的验证。图文冲突测试可以把图片中的金额与提示里故意给出的金额设为不同,观察模型是否依证据回答并说明冲突。无图、损坏图和模糊图则用于检查信息不足时的行为,不应与正常视觉识别准确率混在一个总分里。
任何算法方案都应同时报告质量、成本和风险。质量包括任务成功、格式、事实、代码执行和多模态感知;成本包括训练 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 的开放模型实践说明,基础模型、聊天适配、安全评估和发布条件需要联合考虑 [33]。
一次完整量化实验的交付规格
以下是企业知识助手的教学实验方案,尚未运行。固定基础checkpoint及hash、tokenizer、模板、检索证据快照和停止条件,先得到浮点基线;把校准集、调参开发集、最终测试集分开,按文档/事件实体和时间去重切分。测试覆盖中文知识问答、代码片段、工具参数、长上下文和关键数字;RAG证据相同,防止把检索改变归因给量化。
第一轮只改权重精度与粒度,记录tensor/channel/row-group、G、zero point、scale dtype、pack和尾组;第二轮固定可行布局比较校准方法;第三轮再比较敏感层回退及可选激活量化。GPTQ/AWQ内部优化与范围法并非全部可自由互换,不能强行把所有组合放进同一个矩阵。先确认所选实现真正支持该组合,再导出候选,并进行序列化、重载和真实kernel回放。
每个候选报告制品实际字节、峰值显存、任务通过率、关键切片、困惑度、逐层输出误差、饱和率,以及固定输入输出长度、batch和并发下的TTFT、TPOT、吞吐与p95。区分冷加载、预热后稳态和端到端队列时间,记录设备、驱动、库版本与测量重复次数。将成功任务数作分母计算成本,失败重试也算入;样本数和不确定性与平均指标同时给出。
若工具参数退化但困惑度正常,先定位相关样本与层,再尝试减小组、放宽裁剪、修正代表性或保留高精度,不能直接加训练轮数。若质量达标但速度变慢,检查反量化、fallback、布局和负载,而非宣布算法无效。门槛在看测试结果前由任务方确定;候选只在开发集选择,最终测试失败应回到开发流程并保留失败版本,不反复偷窥测试直到达标。
最终生成一份版本化制品记录:权重/adapter hash、量化格式和共享轴、校准样本清单hash、方法参数、导出工具、兼容后端、模板、视觉处理、评估与已知失败。只对已测形状和设备声明适用性;影子回放不执行工具副作用,灰度有停止条件并能恢复上一整套配置。服务端的调度与容量细节交给推理服务与资源调度,本章负责可重放的算法候选和验收证据。
上面的制品记录解决“这个版本由什么组成”,模型卡还要解决“它承诺什么、不承诺什么”。一个分类 adapter 只保证某套标签和输入格式,不应被路由到开放式问答;一个文档视觉模型只保证规定页型和分辨率,不应被默认用于医学影像;一个 INT4 模型只在指定 kernel 和上下文范围内通过评估,不应因为文件可以加载就宣称所有硬件都兼容。多模态制品还要说明图片、视频、OCR 的处理方式,是否保留原图、是否缓存视觉特征,以及输入模态、预处理和语言生成各层的约束分别是什么。把边界写进模型卡并随权重一起版本化,可以减少误用;跨版本比较时还要同时看任务成功率、格式错误、量化退化、视觉幻觉与尾延迟,只回滚权重而保留新模板会留下更隐蔽的协议错误。
本章小结
微调改变稳定的行为模式,检索与工具提供动态事实与外部能力;PEFT 通过少量参数实现任务隔离,LoRA/QLoRA 在训练成本和表达能力之间折中;量化和蒸馏降低推理成本,但必须结合真实数据、硬件 kernel 和服务路径评估;多模态模型通过视觉编码器、连接器和指令数据把图像、文档和视频接入语言模型,但视觉感知、语言推理和证据可靠性不能混为一谈。
面向企业落地,最重要的不是选择一个“最先进”的方法,而是让适配目标、数据监督、压缩格式、输入模态、评估指标和版本回退形成一条可追溯的验收证据链。只有这样,算法优化才会转化为可维护、可观测、可控制的模型能力。
参考资料
- Bai, J., et al. Qwen Technical Report. arXiv, 2023. 访问日期:2026-10-16
- Zhang, A., et al. 《动手学深度学习》:softmax 回归. 中文在线版 2.0.0. 访问日期:2026-10-16
- Zhou, C., et al. LIMA: Less Is More for Alignment. NeurIPS, 2023. 访问日期:2026-10-16
- Zhang, Q., et al. AdaLoRA: Adaptive Budget Allocation for Parameter-Efficient Fine-Tuning. ICLR, 2023. 方法正文核验日期:2026-11-01
- Liu, H., et al. Few-Shot Parameter-Efficient Fine-Tuning is Better and Cheaper than In-Context Learning. NeurIPS, 2022. 访问日期:2026-10-16
- Houlsby, N., et al. Parameter-Efficient Transfer Learning for NLP. ICML, 2019. 访问日期:2026-10-16
- Li, X. L., & Liang, P. Prefix-Tuning: Optimizing Continuous Prompts for Generation. ACL, 2021. 访问日期:2026-10-16
- Lester, B., Al-Rfou, R., & Constant, N. The Power of Scale for Parameter-Efficient Prompt Tuning. EMNLP, 2021. 访问日期:2026-10-16
- Hu, E. J., et al. LoRA: Low-Rank Adaptation of Large Language Models. ICLR, 2022. 访问日期:2026-10-16
- Ben-Zaken, E., Ravfogel, S., & Goldberg, Y. BitFit: Simple Parameter-efficient Fine-tuning for Transformer-based Masked Language-models. ACL, 2022. 访问日期:2026-10-16
- Liu, S.-Y., et al. DoRA: Weight-Decomposed Low-Rank Adaptation. ICML, 2024. 方法正文核验日期:2026-11-01
- Dettmers, T., et al. QLoRA: Efficient Finetuning of Quantized LLMs. NeurIPS, 2023. 访问日期:2026-10-16
- Nagel, M., et al. A White Paper on Neural Network Quantization. arXiv, 2021. 访问日期:2026-10-16
- NVIDIA. Introducing NVFP4 for Efficient and Accurate Low-Precision Inference. NVIDIA Technical Blog, 2025. 核验日期:2026-10-18
- NVIDIA. NVFP4. Transformer Engine 2.20.2 documentation. 方法正文核验日期:2026-11-01
- Wu, H., Judd, P., Zhang, X., Isaev, M., & Micikevicius, P. Integer Quantization for Deep Learning Inference: Principles and Empirical Evaluation. arXiv, 2020. 访问日期:2026-10-16
- Frantar, E., et al. GPTQ: Accurate Post-Training Quantization for Generative Pre-trained Transformers. arXiv, 2022. 方法正文核验日期:2026-11-01
- Lin, J., et al. AWQ: Activation-aware Weight Quantization for LLM Compression and Acceleration. MLSys, 2024. 访问日期:2026-10-16
- Xiao, G., et al. SmoothQuant: Accurate and Efficient Post-Training Quantization for Large Language Models. ICML, 2023. 访问日期:2026-10-16
- Dettmers, T., et al. LLM.int8(): 8-bit Matrix Multiplication for Transformers at Scale. NeurIPS, 2022. 访问日期:2026-10-16
- Yao, Z., et al. ZeroQuant: Efficient and Affordable Post-Training Quantization for Large-Scale Transformers. NeurIPS, 2022. 访问日期:2026-10-16
- Dettmers, T., et al. SpQR: A Sparse-Quantized Representation for Near-Lossless LLM Weight Compression. ICLR, 2024. 访问日期:2026-10-16
- Hinton, G., Vinyals, O., & Dean, J. Distilling the Knowledge in a Neural Network. NeurIPS Deep Learning Workshop, 2015. 访问日期:2026-10-16
- Sanh, V., Debut, L., Chaumond, J., & Wolf, T. DistilBERT, a Distilled Version of BERT. arXiv, 2019. 访问日期:2026-10-16
- Sun, Z., et al. MobileBERT: a Compact Task-Agnostic BERT for Resource-Limited Devices. ACL, 2020. 访问日期:2026-10-16
- Radford, A., et al. Learning Transferable Visual Models From Natural Language Supervision. ICML, 2021. 方法正文核验日期:2026-11-01
- Kim, W., Son, B., & Kim, I. ViLT: Vision-and-Language Transformer Without Convolution or Region Supervision. ICML, 2021. 访问日期:2026-10-16
- Alayrac, J.-B., et al. Flamingo: a Visual Language Model for Few-Shot Learning. NeurIPS, 2022. 方法正文核验日期:2026-11-01
- Li, J., et al. BLIP-2: Bootstrapping Language-Image Pre-training with Frozen Image Encoders and Large Language Models. ICML, 2023. 方法正文核验日期:2026-11-01
- Liu, H., Li, C., Wu, Q., & Lee, Y. J. Visual Instruction Tuning. NeurIPS, 2023. 访问日期:2026-10-16
- Bai, J., et al. Qwen-VL: A Versatile Vision-Language Model for Understanding, Localization, Text Reading, and Beyond. arXiv, 2023. 方法正文核验日期:2026-11-01
- Chen, Z., et al. InternVL: Scaling up Vision Foundation Models and Aligning for Generic Visual-Linguistic Tasks. arXiv, 2023. 访问日期:2026-10-16
- Touvron, H., et al. Llama 2: Open Foundation and Fine-Tuned Chat Models. arXiv, 2023. 访问日期:2026-10-16