首页 / 文章

训练企业级AI智能体:在SFT、DPO、GRPO和RAG之间做选择。

培训企业级AI智能体:何时使用SFT、DPO、GRPO、LoRA或普通RAG,以及如何将结果以固定、经过评估且可逆的形式发布。

发布者:REACTAPP.TOP阅读约 50 分钟11590 词

来源: Training and Adaptation for Enterprise AI Agents

想象一下,十天前有位分析师向企业智能体提问:上个季度北美地区的销售额为何下降?系统询问“上个季度”具体指什么,最终确定为2026财年第二季度。它将北美地区对应到已确认的区域层级结构中,生成与特定租户相关的SQL查询,尝试了几种假设,并输出了一份附有依据的报告。

如今分析师又提出了类似的问题。智能体仍然记得正确的范围,但却输出格式错误的工具JSON数据,花费大量篇幅解释一个早已被证伪的假设,还极其自信地引用了一份草稿性质的财务说明。

在这种情况下,许多团队会认为该模型需要进一步优化。有时这确实是必要的,但很多时候他们其实是在对错误的内容进行训练。

弄清楚出了什么问题。区域映射属于事实类信息,财务记录属于受规则约束的知识,而SQL架构则是一种不断变化的接口,因此这三者都存储在内存、检索机制以及工具契约中。权重机制则应体现更为稳定的行为准则:发出有效的工具调用、遵循证据处理规范、在得到空结果后能够恢复、优先选择有引用依据的结论,以及在代理可获取的证据不足时拒绝回答。

这种区分是所有企业级系统适配的基础:

变化的事实归入检索系统,持久化的上下文存入内存,具体操作交给工具处理,可重复的行为则用于训练。

模型更新并非简单的笔记本记录结果,而是一次受规则约束的发布过程,其证据链从第一个优化步骤之前就开始了,并且必须能够在生产环境回滚时依然保持完整。

接下来的内容将从企业智能体的视角探讨常见的训练后工具箱,这一目标与基准模型有着显著不同。涵盖的内容包括:

  • 判断缺陷应归类到提示词、检索、记忆、工具还是权重中;
  • 构建合法且抗污染的数据平台;
  • 在继续预训练、监督微调、LoRA、QLoRA、DoRA以及完整微调之间进行选择;
  • 根据偏好数据的特征匹配DPO、IPO、KTO、ORPO和SimPO等方法;
  • 区分PPO、GRPO、DAPO、GSPO、RLOO以及可验证奖励训练各自解决的问题;
  • 利用师徒蒸馏技术将前沿能力转化为可部署的实际应用;
  • 将适配器作为生产组件进行注册、评估、测试、监控及回滚操作。

有一个贯穿所有内容的正在处理的案例:INV-22041,这是针对租户acme-eu开展的多智能体销售调查。该调查包含四个逻辑阶段(信息补充、数据充分性验证、假设检验以及报告生成)。每个阶段都有其专属的工具和子工作流,但在每个阶段边界处仍能看到培训合同的内容。

何时应选择培训作为解决方案

当所需变更会反复出现、能够被量化且稳定到足以被纳入模型权重中,同时在其他地方实施该变更的成本过高时,才应考虑使用培训。而当需要变更的是政策、产品目录、客户姓名、当前价格、权限,或是那些可以通过约束条件来处理的工具结构时,培训通常并非首选方案。

应选择能够最有效地解决缺陷且可逆性最强的层级:

  1. 提示词或系统包用于处理基础模型本身已能可靠执行的明确行为。
  2. RAG用于处理需要明确来源的当前企业知识。
  3. 内存模块用于存储用户设定的偏好、持久化的映射关系以及先前已通过审核的输出结果。
  4. 工具与模式控制可确保确定性、实现授权管理并控制潜在的副作用。
  5. SFT或PEFT用于规范重复出现的响应结构、工具语法、恢复模式以及领域风格。
  6. 偏好优化在多个输出均有效但其中一种始终更优时使用。
  7. 强化学习则用于在需要通过一系列决策后才能评估成功与否的场景。

通过相同的流程来执行INV-22041。要知道“北美”对应的是已批准的区域节点NA_01,这需要依赖受管控的内存或元数据。在每个SQL请求中绑定tenant_id、使用只读语义层并返回类型化的JSON,这既是运行时契约的要求,也是可训练工具的行为规范。相比有说服力的未注明出处的故事,优先选择简短且带有出处的解释,是进行偏好训练的绝佳对象。

常见的错误:针对最新的企业文档进行微调。模型可能会记住过时或受限制的表述,同时丢失其来源信息、删除权限以及授权相关的语义。

根据你所掌握的监督数据选择方法

团队通常会从算法名称开始着手,但实际上应该从你实际拥有的证据入手。

  • 当提示与黄金答案或黄金工具轨迹配对时,可使用SFT。
  • 面对被选中与被拒绝的响应时,可采用DPO类方法。
  • 若有独立标签标记输出结果为理想或非理想且不存在配对关系,KTO是合适选择。
  • 若存在确定性评分器能够对每次输出进行评分(如SQL有效性、精确答案、单元测试、策略检查),则GRPO或RLVR等可验证奖励优化方法更为适用。
  • 当质量具有主观性且无法转化为任何人都能信服的规则时,传统的奖励模型结合PPO架构依然适用。

这些都不是意识形态问题,每个选择都反映了你的数据所能证明的内容。

值得保留的发布不变性

对于每一个训练样本,都需要记录一个元组,其中包含该样本的编号及其来源、同意使用的理由与目的、所属的租户、策略版本、所应用转换操作的哈希值、该样本被划分到的分组,以及生成它的标注员或评分系统版本。在系统部署后,这个元组就能解答那些棘手的问题:某种行为是从何处来的?该样本是否经过授权?它会不会在不同租户之间泄露?是哪种转换操作产生了它?它是否也出现在评估数据中?

企业数据平面

大多数训练后的问题其实早在训练开始之前就已存在。再完美的目标函数也无法挽救那些被污染、未经授权或描述不清晰的样本。

来源信息优先于预处理

每份原始数据都需要有所有者、收集方式、许可或同意依据、允许的使用目的、保留规则、地理范围、敏感等级以及来源标识。当文档或痕迹被用作训练样本时,切勿丢弃这些元数据。最终的训练样本必须能够追溯到原始数据以及所有经过的转换过程。

隐私、机密信息与数据最小化

进行数据脱敏是必要的,但还不够。一个数据集可能没有明显的名称,却可能包含机密的商业逻辑、稀有的标识符、针对特定客户的数值或可恢复的机密信息。需注意以下几点:

  • 在转换前后都要检测个人身份信息及机密内容;
  • 通过抽样、存储和评估方式确保不同用户的数据相互隔离; 按照使用目的进行过滤,而不仅仅是基于访问权限;
  • 检查测试集与受保护语料库中是否存在近似重复内容;
  • 记录删除路径,以便权利请求能够覆盖原始数据、衍生示例、检查点、适配器、缓存以及评估结果。

污染程度可被量化

有一个简单的操作指标:污染率即受污染的评估项目数量除以评估项目总数。“受污染”包括完全重复的内容、近似重复的内容、包含正确答案的意译内容,以及从评估项目中衍生出的合成示例。对于用于版本发布的评估而言,理想的目标是污染率为零。

人工标注需要规范

如果没有评分标准,偏好数据集就会变成反映标注者个人喜好的数据集。在报告阶段,一个有效的评分标准可以按以下顺序对这些标注进行排序:

  1. 授权与隐私合规性;
  2. 事实依据与正确引用;
  3. 统计有效性;
  4. 经过校准的不确定性;
  5. 完整性;
  6. 简洁性与风格。

应衡量一致性程度。对于两名评估者,科恩卡帕值等于实际观测到的一致性减去随机情况下预期的一致性,再除以1减去随机一致性。实际观测部分是指两名评估者在标签上达成一致的比例,而随机部分则来自每位评估者的标签出现频率。卡帕值较低意味着评分标准、示例或评估者培训需要改进,额外的训练轮次也无法改善薄弱的表现。

实际训练记录的样式

有用的成果并非单纯的提示与答案对,而是一份能够实现治理关联与评估关联的记录:

{
  "example_id": "inv22041-sft-01842",
  "tenant_scope": "synthetic-enterprise",
  "purpose": "tool_format_and_recovery",
  "messages": [
    {"role": "user", "content": "Why are sales down in the last quarter?"},
    {"role": "assistant", "content": "I will use the previously approved Q2 FY2026 scope and test the cited hypotheses."}
  ],
  "tool_trace": {
    "name": "query_semantic_layer",
    "arguments": {"tenant_id": "acme-eu", "region_id": "NA_01", "period": "FY2026-Q2"}
  },
  "source_ids": ["memory:m-492", "schema:v17", "policy:p-31"],
  "transform_hash": "sha256:…",
  "split": "train"
}

这些数值是人为设定的。而布局并非如此:某个对象会同时承载内容、授权人信息、来源以及评估时的识别方式。

SFT、持续预训练与中期训练

人们将这些技术统称为“微调”,但实际上每种方法优化的是不同的数据分布。

有监督微调

SFT使模型模仿目标响应或轨迹。损失值是各位置负值之和:即掩码乘以模型在给定输入及之前目标标记的情况下为该目标标记分配的对数概率。在该公式中,x代表输入上下文,yₜ表示位置t的目标标记,掩码mₜ在需要监督的标记处为1,在提示词、填充符及所有被排除的内容处为0,而θ则表示可训练参数。

系统标记、用户标记、工具结果标记以及填充符标记可提供上下文,但不会生成梯度。只有选定的助手目标标记才会对监督损失产生影响。

掩码非常重要。如果用户标记和系统标记意外混入,模型会学会重复对话内容而非真正回答问题。

交叉熵目标函数的实际作用

在每个监督位置上,模型会为每个词汇标记生成一个对数几率值,随后通过softmax函数将这些对数几率值转换为概率。在softmax函数中,某个标记的概率等于其经过指数运算后的对数几率值除以整个词汇表中所有标记经过指数运算后的对数几率值之和,因此得到的概率值为正数且总和为1。

交叉熵损失则根据模型为正确标记给出的概率的负对数来计算损失值。如果模型对某个标记的预测概率为0.8,对应的损失约为0.223;而如果预测概率为0.01,损失则约为4.605。因此,错误的预测即便概率较高,产生的梯度也会远大于已经正确的预测所产生的梯度。

在企业中,有一个后果尤为重要:只要目标明确,少量高质量的工具示例就足以彻底解决系统性的格式问题。而当两个示例呈现语义上相同的请求,却对应着相互矛盾的工具结构时,这种差异就会导致无法兼容的预测结果。

序列损失、标记损失与业务重要性各不相同

序列损失通常是通过对所有受监督标记进行平均计算得出的,即标记损失的总和除以受监督标记的数量。由于一份500个标记的报告所产生的标记损失大约是一份10个标记的拒绝响应的五十倍,因此在优化过程中,即使两类数据数量相等,结果仍可能以报告类数据为主导。

当拒绝的正确性、租户约束或工具选择具有业务重要性时,仅靠示例数量无法体现这种重要性。可行的方法包括:

  • 按行为类别平衡批次;
  • 给示例或选定的标记赋予权重;
  • 简化冗长的目标;
  • 对罕见的边界情况进行过采样;
  • 在评估中将生成质量与契约检查分开。

任何权重设置都必须明确标注。即便损失函数中未提及,任何未被记录的采样方式仍属于评估目标的一部分。

教师强制与暴露偏差

在监督微调过程中,每个标记都是在之前正确的目标标记之后被预测的。但在运行时,模型会读取自己生成的内容,因此一次小小的失误就可能使其陷入训练中从未出现过的状态。

对于智能体而言,这种差异会表现为工具的连续故障:

  1. 模型生成的实体标识符略有错误。
  2. 工具返回空结果。
  3. 模型从未见过该状态。
  4. 它编造了一个结果,却没有修正查询。

在完美的演示示例中应同时包含恢复路径。后续的在线蒸馏与强化学习方法会更直接地处理同样的分布偏移问题。

正确处理工具对话的掩码设置

真实的对话记录包含系统策略、用户语言、助手的推理过程、工具参数、工具结果以及最终答案。需要确定哪些标记应用于训练行为:

  • 系统与用户的标记通常设置为掩码值0;
  • 助手对工具的调用通常设置为掩码值1;
  • 工具的原始输出通常设置为掩码值0,因为它属于环境观测值,而非助手需要模仿的语言内容;
  • 辅助分析或隐藏推理需遵循模型提供方的规则及部署策略;
  • 最终答案会被标记为1。
  • 若意外监控到工具的输出,模型可能会学会伪造数据库结果。若意外排除某些工具参数,报告质量虽会提升,但工具的可靠性仍会保持不变。

    示例间无泄漏的打包方式

    假设示例A、B和C分别需要700、900和1,100个标记,将每个示例放入独立的4,096标记序列中,平均而言只有约22%的分配位置会被使用。这种打包方式能提高利用率,但合并后的序列仍需设置限制:

    • 必须尊重模型自身的位置处理机制;
    • 任何不应被模型学习的内容(如填充符、被排除的元素)都会被框架标记为忽略,通常用−100表示;
    • 如果该方法将各个示例视为独立的,注意力机制就不应在不同示例之间交叉;
    • 调试和删除请求仍需能够恢复每个示例的元数据。

    常见错误:开启 packing=True 后就认为库的默认设置已适用于聊天模板、注意力实现及损失函数。应手动检查每一批数据:解码后的输入、标签、掩码、示例边界以及受监督的标记数量。

    对于企业级智能体而言,最具价值的是那些包含有效工具参数、具备澄清能力、能以结构化方式拒绝请求、可从空结果中恢复、遵循引用规则以及能实现智能体间协作的SFT示例。即便训练数据中只有理想响应,也应将负面边界案例纳入评估。

    持续预训练

    持续预训练会将普通的下一个标记目标应用于特定领域的文本。当基础模型从未接触过该领域的词汇、符号或文本风格时,可使用此方法。不过,它并不擅长直接学习具体的操作策略。

    此处存在灾难性遗忘的风险:虽然模型在处理该领域文本时的困惑度会降低,但在遵循通用指令、处理其他语言、保证安全或使用工具方面却会表现不佳。因此需保留重放数据,并设定基本能力底线。

    将领域数据与重放数据混合

    将新的域分布称为D_domain,而必须保留的能力样本则称为D_replay。一种简单的混合目标函数会将域数据上的加权期望损失与重放数据上的加权期望损失相加。这两种权重并非恒定的通用值:高度定制化的本地模型可能允许更高的域数据权重,而共享的企业级基础模型则通常需要更强的保留机制。

    至少要分别观察三条曲线:域验证损失、重放验证损失以及下游行为评估结果。较低的总体损失可能会掩盖正在恶化的重放曲线,因此停止条件除了要包含域数据收敛的标准外,还应设置保留机制的最低阈值。

    学习率决定了影响范围

    持续预训练会调整的参数数量远多于小型适配器,而适合适配器的学习率则可能损害密集型的基础模型。应采用保守的学习计划,频繁保存检查点并评估中间检查点的性能,因为最终的优化器步骤并不一定就是最佳的企业级检查点。

    令牌数量也会影响实际的变化程度。在数十亿个令牌上使用极小的学习率,其带来的模型变化可能比在少量精心挑选的样本上使用较大学习率带来的变化更大,因此应记录总令牌数和优化器步骤数,而不仅仅是训练轮数。

    训练中期

    中期训练介于大规模预训练和最终训练后优化之间。通过筛选出的长上下文、推理、多模态或智能体行为轨迹,可在对齐之前提升模型能力。对于INV-22041而言,这可能意味着智能体会留下长时间的调查轨迹,看到空的SQL查询结果后,会怀疑是时间粒度或语义映射的问题,进而修正查询、更新假设集,并记录简洁的证据清单。

    打包技术将多个短序列放入同一个上下文窗口中,从而提高资源利用率,但此时需要确保正确的注意力分配和损失边界。糟糕的打包机制会导致某个客户的示例在毫无预警的情况下干扰到另一个客户的示例。

    SFT还是中期训练:诊断方法

    先判断所需行为是否能在相对简短的输入输出对中体现出来。

    • 如果可以,就从SFT开始。
  • 当任务要求模型判断文档的组织结构时长、经历多阶段状态转换,或处理与以往不同的上下文组合时,训练中期策略才能发挥作用。
  • 如果缺失信息会定期变化,上述两种方法均不适用,此时需借助检索技术或专用工具来解决。
  • 对于INV-22041任务,有效的SQL JSON格式是监督微调的目标数据。经过筛选的长序列数据有助于智能体在经过30步调查且多次假设失败后仍能找到正确答案。当天的销售数据仍属于运行时数据。

    参数高效微调:LoRA、QLoRA、DoRA及前缀微调

    参数高效微调应当成为企业的默认选择,因为它能保持一个共享的基模型,仅通过小型、分版本的行为调整来实现功能优化。

    LoRA

    LoRA会冻结权重矩阵W,并学习一个低秩更新量。经过调整后的矩阵等于W加上两个小型矩阵B和A的乘积,再乘以alpha除以秩r得到的系数。

    假设W将4096个输入映射到4096个输出,且秩为16。那么该密集矩阵大约包含1680万个参数,而两个LoRA矩阵仅包含131,072个可用于该映射任务的训练参数(16 × 4096加上4096 × 16)。这一数值仅占密集矩阵参数总量的约0.78%。

    有三个参数决定了适配器的功能:秩决定了其容量,alpha除以秩用于调整更新量,而目标模块则决定了模型可以在何处进行适配。这三者都是模型结构的一部分,必须被正确注册。

    为何低秩就足够了

    密集更新允许每个输入输出方向独立变化。LoRA认为任务特定的更新存在于一个规模小得多的内在子空间中。它无需学习d_out × d_in大小的数值,只需学习r(dᵢ + dₒ),其中dᵢ表示输入维度,dₒ表示输出维度。

    对于秩为16、尺寸为4096×4096的投影来说,相关数值如下:

    • 密集更新需要16,777,216个参数;
    • LoRA更新需要131,072个参数;
    • 可训练参数的比例为0.0078125,即0.78125%。

    这些数值仅对应一个投影。实际的适配器会针对多层中的多个投影,因此应从实际生成的模型中统计可训练参数,而非仅依据单个矩阵进行推断。

    缩放项并非装饰性内容

    当 alpha 值为 32 且秩为 16 时,LoRA 乘数為 2。若将秩提升至 64 而 alpha 仍保持 32,乘数则降至 0.5。尽管数据集和基础模型没有变化,但学习到的矩阵及优化过程会发生变化。

    某些实现采用基于秩稳定的缩放方式,即用 alpha 除以秩的平方根,而非直接用 alpha 除以秩。这会改变不同秩之间的比较结果。需记录缩放规则、库的版本信息以及初始化和丢弃策略。

    适配器的插入位置

    各个注意力投影承担不同的功能:

    • q_proj 负责确定当前令牌向上下文提出的问题;
    • k_proj 决定早期令牌如何传递其所包含的信息;
    • v_proj 确定从这些令牌中提取的实际内容。
  • o_proj 决定了注意力输出如何被写回残差流中。
  • MLP投影决定了特征变换的方式,会对领域行为产生影响。通常以调整查询投影和值投影作为起点,但这并非固定规则。消融实验矩阵应涵盖不同的目标模块和层级,并记录可训练参数数量、任务性能提升、遗忘程度、延迟以及伪影大小。

    组合适配器并非必然具有叠加效应

    两个单独使用时表现良好的适配器在同时启用时仍可能产生冲突。它们的增量可能会将相同的层推向相反的方向,改变激活统计值,或依赖不同的系统包。应将组合模型视为一份全新的配方:组合后的权重等于基础权重加上每个适配器的增量乘以其缩放系数 sᵢ。这个公式看似简单,但由于更新后的投影会通过注意力层、归一化层和多层感知器层以非线性方式传递,因此必须按照实际应用时的状态进行测试。

    QLoRA

    QLoRA以4位格式存储冻结的基础模型,而梯度仅传递给LoRA适配器。它采用了NF4技术,即对量化常数进行双重量化,并使用分页优化器来应对内存使用量的激增。

    有两个要点可避免生产环境中的错误:

    • QLoRA是一种训练时优化内存的技术,它本身并不定义推理时的量化方式。
    • 仅凭适配器并不能证明量化后的部署具有相同的性能。需在实际使用的版本上重新进行质量、延迟、信息泄露以及工具使用情况评估。

    为何NF4和双重量化如此重要

    普通的4位整数会将数值范围划分为等间距的数值。预训练权重通常接近正态分布,因此等间距划分会降低其表示效率。NF4则能让数值更贴合该分布特征。

    分块量化为每个块设置独立的缩放系数,而这些系数需要被存储下来。双重量化则会进一步压缩这些系数,从而减少大型模型中的元数据开销。

    对于冻结权重的大致内存估算,需将参数数量乘以每个权重的位数,再除以8,最后加上元数据。理想情况下,若每个权重存储4位,则70亿参数的模型所需原始权重空间约为3.5 GB(70亿 × 4 / 8)。此外还有缩放因子、缓冲区、临时反量化处理、适配器、梯度、优化器状态、激活值以及框架开销等,因此声称70亿参数模型仅需3.5 GB空间并不能说明其训练内存需求。

    QLoRA通过优化冻结的基准权重及适配器来节省内存。不过激活值的内存需求仍与批量大小、序列长度、层宽度以及检查点策略相关,这意味着即便使用4位权重,长上下文训练仍可能受激活值内存限制。

    分页优化器

    激活检查点机制以及长序列处理可能会导致内存使用暂时性激增。分页优化器会利用受管理的内存,根据需要将优化器相关页面在CPU和GPU之间切换。这虽能避免内存不足导致的故障,但分页操作可能会降低处理效率。需监测实际运行时间以及主机内存压力,切勿将内存分配成功视为优化成功。

    DoRA

    DoRA将权重拆分为幅值和方向两部分,主要对方向部分进行低秩更新。调整后的权重为学习得到的幅值m乘以更新后的矩阵W + ΔW,并且会对每一列进行归一化处理。此处ΔW即为LoRA风格的更新量。其原理在于幅值和方向起着不同的作用,将二者分开处理虽会增加一定的复杂性,却能在较低的秩数下恢复模型质量。

    归一化分母用于确定每个更新后的方向,而 m 则控制其幅度。这样虽然会增加参数量和计算量,但能让 DoRA 更接近全微调时的自由度。实际应用中的关键问题是:在增加了训练、服务及注册流程的复杂度之后,性能提升是否依然存在?

    前缀与提示词调优

    前缀调优通过学习连续的虚拟标记来引导注意力,同时不改动基础权重。这种方式结构简洁,适合实现精细控制,但在处理工具语法或多步骤行为时,其表达能力不如 LoRA。

    独立使用还是合并?

    Sidecar适配器适用于租户或任务隔离、快速回滚、A/B路由以及审计需求。只有在对合并后的校验和进行精确评估并记录之后,对于那些需要保持不可变的版本,才适合使用合并方式。

    Sidecar还支持根据预设用途进行路由,因此“报告”适配器无法在“数据充足”模式下悄悄启动。路由器的决策结果应与适配器ID、规模、基础校验和及原因一同记录在追踪信息中。

    合并可以减少运行时适配器的开销并简化部署流程,但也会模糊基础版本与行为变更之间的清晰界限。应保留未合并的版本链,对合并后的模型进行校验,并且绝不能将内容合并到未被标记为“最新”的基础版本中。一个简洁的训练配置如下所示:

    from peft import LoraConfig
    from trl import SFTConfig, SFTTrainer
    lora = LoraConfig(
        r=16,
        lora_alpha=32,
        lora_dropout=0.05,
        target_modules=["q_proj", "v_proj"],
        task_type="CAUSAL_LM",
    )
    trainer = SFTTrainer(
        model=base_model,
        train_dataset=train_dataset,
        eval_dataset=eval_dataset,
        peft_config=lora,
        args=SFTConfig(
            output_dir="runs/inv22041-sft-v3",
            assistant_only_loss=True,
            packing=True,
            max_length=4096,
        ),
    )
    trainer.train()
    

    重要的参数包括 r=16 和 lora_alpha=32 等。assistant_only_loss=True 用于控制损失边界,固定的目标模块决定了适配器的作用范围,而数据打包格式必须与聊天模板的掩码格式兼容。

    离线偏好优化

    SFT 是让模型进行模仿,而偏好优化则是让模型在多个合理选项中偏向某一特定选项。以同一主题的两份报告为例,二者在语法和统计上都十分严谨。被选中的那份会引用相关证据,明确说明假设并就此结束;而被拒绝的那份则会添加没有依据的因果关系描述。这样的对比所带来的信号强度甚至超过另一份“完美答案”。

    布拉德利-特里模型视角

    成对偏好模型通常基于这样一个假设:对于输入 x,响应 yʷ 比响应 yˡ 更优的概率等于奖励差值的sigmoid函数值,即 σ[r(x, yʷ) − r(x, yˡ)]。此处 yʷ 是被选中的响应,yˡ 是被拒绝的响应,而 r 则代表隐式或显式的奖励。只有两种奖励之间的差异才具有意义。

    DPO

    DPO直接在偏好对上优化策略,并将其与参考策略关联起来。损失函数为β乘以边际值的负对数Sigmoid函数,其中边际值是指所选响应的策略对数概率相较于参考策略的上升幅度,再减去被拒绝响应的相同幅度。在符号表示中,πθ表示正在训练的策略,π₀表示固定的参考模型,而β则用于设定参考策略相对偏好边际值的强度。

    参考检查点与beta值属于发布元数据。即便数据集完全相同,只要更改其中任意一项,目标函数也会随之改变。

    DPO计算示例

    假设当前策略和参考策略对应的序列对数概率如下:

    • 当前策略,所选报告:−8.0;
    • 参考策略,所选报告:−9.0;
    • 当前策略,被拒绝的响应:−7.5;
    • 参考值,被拒绝的响应:−7.0。

    相对于参考值,该策略在所选响应上的提升量为 −8.0 − (−9.0) = 1.0。在被拒绝的响应上,提升量为 −7.5 − (−7.0) = −0.5。DPO裕度为 1.0 − (−0.5) = 1.5。当 beta = 0.2 时,beta乘以裕度得到的值为0.3,损失值为 −log σ(0.3),约为0.554。

    该策略因提升了所选响应并降低了被拒绝的响应而获得正分。若裕度为负,则损失会更大,且梯度会改变这种排序关系。

    该计算还说明了参考值为何重要。DPO并不仅仅判断哪个响应的原始概率更高。在这个例子中,被拒绝的响应的当前对数概率仍然更高(−7.5对比−8.0),但相对于参考值而言,策略已朝着正确的方向发展。

    长度也是信号的一部分

    序列的对数概率是各标记的对数概率之和,因此更长的序列往往会产生更多的负对数概率。数据集构建和目标函数的不同版本会以不同方式处理这一问题。

    如果被选中的报告始终比被拒绝的报告更短,模型可能会学会追求简洁而非遵循证据规范。如果被选中的报告更长,模型则可能学会过度冗长。可根据长度差异对偏好对进行分层,并检查在控制长度的评估下胜率提升是否依然存在。

    SimPO使用经过序列长度标准化的平均对数概率,并加入目标奖励边际值。这虽减少了对独立参考模型的依赖,但也会带来自身的边际值和缩放选择问题。无需参考模型并不意味着无需超参数。

    偏好强度与分歧

    二元评分仅表示y_w获胜,并未说明胜势是明显还是微弱。在可能的情况下,应保留评分者的投票、置信度、评分维度以及分歧情况。

    3比2的评分分歧并不一定需要与5比0的全票一致结果具有相同的训练权重。降低模糊评分对的权重也有弊端,因为有效的少数派偏好可能会因此消失。在选择权重规则之前,需根据用户群体、语言、地域和任务类型进行考量。

    参考模型漂移

    虽然规定偏好训练应从 sft-v3 开始,但 DPO 运行程序却悄悄加载了 sft-latest。数学参考标准也随之改变。需要同时保存初始化策略以及损失函数中使用的冻结参考策略。这两者通常相同,但也未必如此,为保证可复现性,必须同时记录它们的标识符和校验和。

    相关方法

    • IPO 用有限的、基于边际值的目标取代逻辑斯蒂偏好损失中的无界推导,这样在确定性标签可能导致 DPO 过拟合时能起到缓解作用。
    • KTO 可以分别从被标记为“理想”或“不理想”的示例中学习,因此无需配对输出。
    • ORPO 将指令学习与概率比偏好惩罚整合为一个目标函数,无需单独的参考模型。
  • SimPO不依赖参考模型,采用经过长度归一化的序列对数概率再加上目标阈值。
  • 没有任何方法能够让泄漏测试或SFT基线变得多余。偏好训练虽然可以提高胜率,但会降低校准精度、响应长度、拒绝阈值或对少数群体的处理效果。

    DPO系列方法的选择

    应依据决策记录而非趋势来做出选择:

    • 当数据对结构完整且存在可轻松运行的稳定参考模型时,选择DPO;
    • 当确定性或低噪声的偏好导致DPO产生过大的阈值时,尝试使用IPO;
    • 当反馈以独立的优劣结果形式出现且配对显得人为时,选择KTO;
    • 如果将SFT与偏好学习结合为单一阶段能简化操作,可尝试使用ORPO。
    • 如果参考模型的内存限制最为严格,且按序列长度归一化的奖励符合任务需求,可尝试使用SimPO。

    所有候选方法都应从同一个SFT基准模型开始,并使用相同的数据划分、评估套件和计算资源。如果设置不同,那么比较的只是处理流程而非目标本身。最简单的DPO设置如下:

    from trl import DPOConfig, DPOTrainer
    trainer = DPOTrainer(
        model=sft_model,
        ref_model=reference_sft_model,
        train_dataset=preference_dataset,
        args=DPOConfig(
            output_dir="runs/inv22041-dpo-v1",
            beta=0.2,
            max_length=4096,
            max_prompt_length=2048,
        ),
    )
    trainer.train()
    

    参考模型必须是运行清单中指定的检查点,绝不能使用模型注册表当前所称的“最新版本”。

    传统RLHF:奖励模型、PPO与RLAIF

    传统RLHF会同时运行三个模型。策略模型负责生成候选答案,奖励模型对这些答案进行评分,而PPO则调整策略模型,抑制那些可能使其不稳定的过大变化。

    PPO依赖于截断的替代目标函数。简而言之,该函数会计算概率比乘以优势值与截断后的比率乘以优势值的期望最小值,再减去用于衡量与参考模型偏差的KL惩罚项。各符号含义如下:

    • ρₜ表示新旧策略之间的概率比;
    • Aₜ用于评估所采样动作是否优于预期。
  • ε决定了策略更新的最大幅度;
  • KL惩罚项使策略保持在与参考值相近的状态。
  • 当质量评估真正具有主观性、有足够的对比样本可用于构建奖励模型,且在线策略优化能够弥补由此带来的操作复杂性时,可选择此方案。

    奖励模型的训练

    奖励模型通常采用相同的成对Bradley-Terry损失函数:所选响应的学习得分的负对数sigmoid值减去被拒绝响应的得分。评分函数rφ是一个带有参数φ的学习得到的标量函数,其训练目标是将所选响应的排名置于被拒绝响应之上。

    奖励的绝对值本身并无意义。7分并不意味着“七单位的好”,只有在经过校准的运算分布内的比较才具有参考价值。不同检查点、数据集或提示词类别之间的奖励尺度可能存在差异。

    应将奖励模型视为一种排序系统,并衡量以下指标:

    • 保留样本对上的准确率;
    • 通过分数差异进行的校准程度;
    • 与人工标签在各子集上的一致性;
    • 对对抗性输入的抵抗能力;
    • 对长度、格式、引用次数及身份相关词汇的敏感度;
    • 在分布之外的表现。

    应保留一个黄金数据集,既不用于训练奖励模型,也不用于指导策略的优化。否则,策略可能会过度拟合其评估器,而仪表板却显示出了进展。

    使用实数进行PPO裁剪

    假设旧策略的动作概率为0.20,而更新后的策略该概率为0.25。两者的比值为0.25 / 0.20 = 1.25。当ε = 0.2时,截断机制会将该比值限制在1.20以内。对于2的正优势值:

    • 未截断时的值为1.25 × 2 = 2.50;
    • 截断后的值为1.20 × 2 = 2.40;
    • PPO会选择两者中较小的值,即2.40。

    虽然这次更新仍然会强化该动作,但由于概率提升幅度过大,无法获得全部的目标收益。

    当优势值为负时,选择最小值可以防止优化器利用截断机制朝相反方向操作。正是这种谨慎的做法,使得旧策略的快照版本和滚动版本在整个批次处理过程中都保持不变。

    KL控制器

    KL项旨在防止策略偏离参考值过远。调整后的奖励为学习到的奖励减去系数βᴋʟ乘以策略与参考值之间的KL散度。如果βᴋʟ过小,策略可能会利用奖励模型,变得重复或丧失语言质量;如果该系数过大,则学习进程会停滞。一些系统会调整β值,以使KL散度保持在目标范围内。

    应通过标记位置和任务片段来追踪KL散度,而不仅仅是全局平均值。较低的平均值可能会掩盖在拒绝处理、工具调用或少数语言处理方面的显著变化。

    演员-评论家框架

    经典的PPO通常需要六个组件:正在被训练的演员网络,其先前版本的冻结快照,用于确定KL项的参考策略,以及充当批评者的价值模型。奖励模型和滚动优化引擎则构成其余部分。这些组件虽然保持独立身份,但可以共享权重或基础设施。离线偏好方法以及无需批评者的群体方法之所以受到青睐,是因为它们能够消除昂贵且容易出错的分布式系统中的某些部分。

    不要仅仅因为PPO是标准的RLHF方法就选择它。只有当针对学习得到的主观奖励进行优化时,其所需的额外运行与维护成本是值得的,它才具有存在的意义。

    RLAIF以书面宪法为指引,用人工智能的判断替代部分或全部人类设定的偏好标签。它带来的是规模扩展,而非真实标准。受约束的数据协议必须涵盖判断规则的提示与宪法内容、所使用的判断版本、不同判断结果出现的分界点,以及何时需要人工介入。

    奖励操纵是最危险的故障类型:模型会找到那些虽能获得高分数但并无实际意义的表面特征。企业的奖励模型可能会认为更长的报告、更多的引用或频繁使用的委婉表述意味着“更好”。对抗性测试和直接的任务指标不应纳入学习到的奖励体系中。

    RLAIF与宪法式判断

    宪法将各项原则转化为评判标准。对于INV-22041而言,它可指示评判者首先考虑授权因素,其次为引用支持、统计有效性、校准后的不确定性以及简洁性。

    基于评判者的标签还增加了三项需要追踪的要素:

    • 宪法及评判者提示信息;
    • 评判者模型及其解码配置;
    • 针对分歧或不确定性的裁决规则。

    当排序发生变化时就会出现立场偏差。可以通过交换被选中与被拒绝的选项、随机化中性标识符,以及添加经过人工审核的对照对来检测这一问题。如果某个评判者在排序改变后会改变裁决结果,那么它就无法作为偏好真相的可靠来源。

    具有可验证奖励的强化学习

    如果成功与否能够通过机械方式检测,那就完全不需要学习型奖励模型。SQL语句可以在受限环境中被解析并执行,代码也可以在测试条件下运行。统计结论可以与预期结果及假设进行对比。

    GRPO

    GRPO会从针对同一提示的若干候选响应中抽取样本,并对它们的奖励值进行标准化处理。某个响应的优劣由其奖励值减去群体均值,再除以群体标准差,最后加上一个较小的稳定值ε来决定。

    假设存在八个候选SQL执行方案,它们的奖励值从差到好依次为−0.3、−0.2、0、0、0.5、0.8、0.8和1.0。这组数据的均值是0.325,总体标准差约为0.47。每个候选方案都会根据其所在样本组中的其他方案进行上下调整,这样就无需再单独训练评估模型,不过该方法的可靠性完全取决于其奖励机制的质量。

    为获得最佳轨迹,标准化优势值约为 (1.0 − 0.325) / 0.47,即 1.44 左右;最差情况下则为 (−0.3 − 0.325) / 0.47,约为 −1.33。

    具体数值取决于实现方式是使用总体方差还是样本方差,以及奖励值的预处理方式。这些细节至关重要,因为它们会改变梯度幅度。

    如果每个样本的奖励值均为 1,则标准差为零,也就不存在相对信号。epsilon 可以避免除以零的情况,但它无法生成可用于学习的信息。解决此问题的方法是采用动态采样或更严格的训练计划。

    对于 INV-22041,复合奖励可能要求:

    • JSON 数据符合架构规范;
    • 存在租户判定条件;
    • SQL 查询为只读模式;
    • 查询在成本限制范围内执行;
    • 返回的数据足以用于所声明的测试;
    • 报告仅引用已提供给评估人员的证据。

    简单的加权求和方式会让某个维度的优秀表现弥补严重的违规问题。假设奖励由正确性的0.3倍、证据质量的0.2倍、SQL有效性的0.2倍以及风格的0.3倍构成,那么只要答案和风格良好,跨租户查询仍可能获得正分。因此安全和授权机制需要设置严格的限制:一旦授权失败或保护数据泄露,奖励即为零;否则则为正确性、工具和证据奖励的加权之和减去一个加权成本项。

    在风险更高的环境中,违规行为可能会获得负的最终奖励而非零分。重要的是不能让优秀表现弥补违规行为,因为再出色的表现也无法抵消未经授权的访问行为。

    应将奖励的各个组成部分分开显示。优化器只需要一个标量值,但若在控制面板中分别展示正确性、授权状态、工具有效性、证据质量、成本和长度等信息,就能便于识别奖励操纵行为。

    奖励归一化可能掩盖业务规模差异

    分组归一化仅关注单个提示词内的相对顺序。如果所有候选方案的表现都很差,而其中一个稍好一些,那么它就能获得正向优势。仍然需要设定绝对的下限值。

    另一种情况是所有候选方案都正确。尽管这体现了良好的生成行为,但对此类情况的分析价值有限。应继续将这些提示词纳入评估,只有在明确指定了采样策略时,才将其移除或降低其在相对策略优化中的权重。

    策略比例与裁剪

    GRPO风格的目标函数通常保留PPO中的重要性比率与截断机制。对于每个标记,该比率会将新策略的概率除以旧策略的概率,目标函数则为该比率乘以优势值与截断后的比率乘以优势值的期望最小值,再减去一个KL项。优势值可以按序列定义,而比率则是针对每个标记应用的,这种不匹配促使人们提出了GSPO等序列级改进方法。

    DAPO:更稳定的长推理训练

    DAPO加入了四种实用机制:截断界限被分离处理,组别会动态采样,策略梯度是按每个标记处理的,此外还会对运行时间过长的样本进行专门处理。动态采样会丢弃那些奖励完全相同的组别,因为这类组别不存在相对信号。

    Vanilla GRPO 可能会出现熵值崩溃、长序列不稳定性,或是生成的全为正确或全为错误的序列批次,这时 DAPO 就能发挥作用。其设计本质上是针对训练过程中出现的故障提出的四项工程解决方案:

    1. 提高裁剪阈值。将上下裁剪边界分开,让那些出现概率较低的有用标记有更多发展空间,同时避免出现全局性的对称不稳定性。
    2. 动态采样。会过滤掉那些采样得到的序列全为正确或全为错误的提示词,因为这类提示词的标准化优势几乎不存在对比度。
    3. 标记级策略梯度损失函数。对长序列会按标记级别进行统计,不会因样本级平均处理而削弱其效果。
  • 过长的奖励塑造机制。长度惩罚会逐步施加,从而避免在最大长度附近出现导致梯度不稳定的尖锐边界。
  • 每种机制针对不同的问题。在未明确自身工作负载存在何种缺陷之前,不要将它们作为一个不可分割的整体来采用。

    在企业级 SQL 智能体中,动态采样可以将训练重点放在那些仅有部分执行计划能适配正确租户的查询上。过长的奖励塑造机制可防止模型在处理简单查询时仍耗费数千个推理token,而 Clip-Higher 则能在有用恢复操作的发生概率极低时提供帮助。

    GSPO:以序列作为处理单元

    GSPO是在整个序列上计算重要性比和裁剪值,而非针对每个标记单独计算。这种方式更适用于序列级的奖励机制,而且其稳定性有助于在规模极大的专家混合模型上实现稳定的强化学习过程。

    这并不意味着GSPO可以取代GRPO,而是优化单元应当与奖励机制及模型架构相匹配。当业务结果是根据序列来评估的,且策略为专家混合模型时,GSPO值得尝试使用。

    简而言之,GSPO通过计算响应长度内每个标记的对数概率差值并取平均值,再将结果取指数,从而得到序列似然比,该值被转换到比率空间。随后,优化目标会限制该序列级别的比率,并在同一层级应用由群体衍生的优势。由于奖励会评估整个轨迹,因此优化单元现在与评估单元保持一致。

    在MoE模型中,标记之间的微小路由变化会导致逐个标记的比率出现波动,因此对整个序列进行聚合可能更为稳定,但代价是局部优化的表现会较差。应综合评估收敛性、熵值、路由稳定性、奖励以及下游质量,而不可仅依赖奖励。

    RLOO

    REINFORCE留一法将提示组中的其他样本作为每个样本的基准。这是一种无需批评函数的策略梯度估计器,也是比较基于组的方法时的实用标准。

    当有G个样本时,样本i的基准值为其他G − 1个样本的奖励均值,其优势值为该样本的奖励减去该基准值。与z分数标准化不同,该方法无需除以组的标准差。在REINFORCE框架下,该估计器结构简单且无偏,不过奖励的量级会直接影响梯度的量级。

    假设奖励值为1.0、0.8和0.2。对于第一个样本,留一法的基准值为(0.8 + 0.2) / 2 = 0.5,因此其优势值为0.5。第三个样本的基准值为(1.0 + 0.8) / 2 = 0.9,对应的优势值为−0.7。

    RLVR与强化学习微调

    更广泛的模式是带有可验证奖励的强化学习。通过采样轨迹,运行确定性或严格规定的评估器,然后对通过评估的内容进行强化。

    结果奖励用于判断最终答案是否正确,而过程奖励则用于评估中间步骤。过程监督能够定位故障,但步骤评估器成本高昂,且可能过度限制合理的推理过程。在企业智能体中,过程奖励体现在可观察的接口上(如工具选择、授权、论据构建、证据提交与传递),而不会作用于隐藏的思维链。

    结果奖励与过程奖励的对比

    仅基于结果的SQL奖励可以是一个简单的指示器:当结果与预期相符时值为1,否则为0。这种奖励方式客观且计算成本低,但却可能迫使模型通过不安全或成本高昂的查询来得到答案。

    具有流程感知能力的奖励机制会加入六个可观测的不变量。这些不变量包括架构是否有效、租户是否受约束、查询是否为只读操作、查询成本如何、结果是否正确以及证据是否已正确释放。每个不变量都应是基于可观测要素的经过验证的函数。评分应涵盖SQL语法树、授权决策、执行计划、返回的数据集、统计测试记录以及引用信息,绝不能涉及私有的推理过程。

    评分器测试即模型测试

    在运行任何强化学习任务之前,先构建评分器测试矩阵:

    • 已知的正常轨迹能够通过验证;
    • 错误的租户会失败;
    • 隐藏在子查询中的租户条件能够被正确读取;
    • SQL注释无法伪造必需的条件;
    • 空结果与执行错误能够被区分开来;
    • 成本过高的笛卡尔连接会失败;
    • 即便最终数值正确,伪造的引用也会失败;
    • 评分器超时会导致任务失败;
    • 格式错误的评分器输出无法作为正奖励。

    每次修改评分器后,都需要重新运行历史轨迹。即使策略代码没有变化,奖励版本的更改也会开启新的实验系列。

    思考是有代价的

    仅靠正确性标准可能会培养出浪费资源的推理方式,因此需要加入一个有限成本项:奖励值为正确性减去lambda乘以思考成本Tₕ。该成本可以是推理所需的token数、毫秒数或标准化后的计算量,而λ则代表额外的思考成本。只有在满足正确性及安全性最低标准之后才施加惩罚,否则模型就会学会快速但错误地作答。

    假设两条正确的解答路径都能获得1.0的基准奖励,其中一条需要400个推理token,另一条需要1,000个。若将token成本标准化为1,000,且lambda = 0.1,那么较短路径的奖励为0.96(扣除0.04),较长路径的奖励为0.90(扣除0.10)。

    因此,较短的正确路径更具优势。不过,一个错误的、仅包含100个token的答案本应无法通过正确性检验,更不应获得-0.01的奖励并与正确答案竞争。

    延迟与令牌数量存在关联但并不完全相同。并行工具调用、缓存命中、批量调度以及模型架构都可能改变实际耗时,而推理过程中使用的令牌数量则保持不变。应选择与生产环境约束相匹配的成本衡量标准。

    多轮智能体强化学习

    模型决策、工具输出、内存读取以及智能体间的任务交接都处于企业业务流程的轨迹之中。需记录其状态变化,并在评估本地不变量之外,还要对最终的业务结果进行评分。

    例如,用于信息补充的智能体在提出澄清性问题时可能不会获得直接奖励,但其价值会在“数据充分性”模块生成正确查询、以及“报告生成”模块避免错误因果推断时体现出来。信用分配机制不应忽视这种依赖关系。

    该轨迹为结构化的事件日志

    不应仅将流程演示视为聊天记录,每次状态转换都应包含以下信息:

    • 状态与观测标识符;
    • 执行动作的智能体及其策略版本;
    • 可用的工具集与授权范围;
    • 选定的动作及其原始参数;
    • 策略决策结果与工具执行结果;
    • 内存的读写操作;
    • 传递给下一环节的数据;
    • 时间戳、成本以及最终结果。

    这种格式支持回放、离线策略分析以及精确的奖励分配。同时还能避免训练流程将工具生成的观测结果误认为是助手自身产生的。

    分层奖励

    对于四阶段的调查,需设定局部合同奖励以及最终业务奖励。总奖励为最终奖励 R★ 加上四个阶段奖励 R₁ 至 R₄ 的加权之和,这四个阶段分别对应信息丰富、数据充分性验证、假设检验和报告,对应的权重分别为 γ₁ 至 γ₄。

    局部奖励能够加速学习过程,但也可能相互冲突。信息丰富阶段可能会通过提出过多问题来提升信息的清晰度;报告阶段则可能通过省略某些限制条件来优化简洁性。最终奖励以及那些必须遵守的硬性规则,其重要性应高于局部便利性。

    责任归属应与因果关系相对应。如果 Enrichment 提供了错误的实体映射,而 Reporting 仅如实汇报所接收的结果,此时仅惩罚 Reporting 会传递错误的观念。应保留每个阶段的输出结果,并判定最先发生合同违约的环节。

    最佳实践:在仍能保留真实合同结构的最小化环境中进行训练,使用沙箱工具、确定性测试数据、带版本控制的评估工具、严格的超时限制,并且不得使用生产环境凭证。

    蒸馏技术:传递能力而非复制模型

    蒸馏技术可将成本高昂的“教师模型”的行为转化为规模更小或更易于部署的“学生模型”。

    逻辑斯蒂蒸馏

    该学生被训练为匹配教师调整后的标记分布。损失值为温度的平方乘以教师softmax函数与学生softmax函数之间的KL散度,这两者都是基于除以温度值后的对数几率计算得出的。平方因子有助于保持梯度幅度的稳定。较高的温度值会使得除最高概率标记之外的相对概率更加明显,也就是硬标签所忽略的“隐性知识”。

    温度值的变化

    假设某教师对三个候选标记的对数几率分别为8、4和2。在时,softmax函数会将几乎所有概率集中在第一个标记上。而当时,实际的对数几率变为4、2和1,分布变得更为平滑,这样学生就能了解到第一个标记是最有可能的,同时也能知道第二个标记比第三个标记更有可能被选中。

    随着温度升高,次要候选项之间的梯度会提供更多有用信息。但如果温度设置得过高,分布会趋于均匀,从而失去有用的结构。应依据保留的迁移质量来调整温度值。

    平方因子用于弥补对数几率值除以温度后梯度变小的问题。若取消该因子,蒸馏损失与硬标签损失之间的平衡就会被打破。

    结合硬标签与软标签

    一种常见的目标函数会结合两项指标:SFT损失的权重以及蒸馏损失的权重。硬标签用于保留已知的正确输出,而软标签则传递相对偏好信息。这两项权重共同决定了平衡关系。

    在工具调用场景中,严格的模式正确性可能比教师的不确定性更具权重。而在自然语言解释方面,教师的分布可能展现出更丰富的行为特征。不同标记类别的权重可以有所差异,但这种额外的复杂性必须保持可测试性并加以记录。

    序列蒸馏与在策略上蒸馏

    序列蒸馏是基于教师生成的输出进行训练的。虽然方法简单,但学生只能看到教师的状态分布。

    在策略上蒸馏则允许学生先生成结果,再由教师监督学生实际达到的状态。这对于智能体而言尤为有效,因为早期的微小偏差就会引发后续新的工具状态。

    当目标是提炼推理过程时,应保留那些可见的内容:问题是如何被解决的、工具的运行轨迹以及可验证的结果。隐藏的推理文本不应成为系统运行的依赖项。

    序列提炼的过滤机制

    教师生成的输出属于合成训练数据,因此应与人工编写的数据受到同样的管控:

    • 审查其授权与许可情况;
    • 扫描其中是否包含个人身份信息及敏感数据;
    • 在沙箱环境中运行相关工具;
    • 在可能的情况下进行确定性验证;
    • 与评估结果进行去重处理;
    • 追踪其来源,包括教师、提示词、解码设置以及原始上下文。

    最佳样本选择虽能提升合成数据的质量,但会降低多样性并放大选择者的偏见。需保留生成与选择过程中的统计信息,以便重建学习者的数据分布。

    在线蒸馏循环

    在线蒸馏循环包含五个步骤:

    1. 学习者根据当前策略生成数据。
    2. 教师为这些状态打分或提供对应的标记分布。
    3. 过滤掉不安全或无效的轨迹。
    4. 学习者基于剩余状态进行更新。
    5. 通过评估检查其能力及分布偏移情况。

    该循环针对学习者的实际错误进行优化。相比静态教师数据,它需要更多资源,且可能因学习者分布的持续变化而产生不稳定性。应固定教师的身份,并在每次迭代时对学习者的生成结果进行快照保存。

    蒸馏并非推测性解码

    蒸馏技术旨在训练学生模型以近似教师模型。而推测性解码则在推理时运行一个较小的草稿模型,再由目标模型来验证这些草稿生成的标记。蒸馏后的学生模型可以充当草稿模型,但这两种技术追求的目标不同。

    蒸馏技术能让模型单独运行时的成本更低。而推测性解码仅能在大量草稿标记被接受且验证效率较高的情况下加快目标模型的运行速度。应分别对这两种技术进行评估。

    企业级蒸馏服务合同

    需明确以下各项:

    • 教师模型及其API版本;
    • 生成参数及工具环境;
    • 提示词或系统包版本;
    • 过滤与判定规则;
    • 学生模型、分词器及适配器的来源信息;
  • 针对教师与学生的安全评估;
  • 涵盖教师输出内容的数据使用权限。
  • 较小的模型也会存在故障模式。需对学生重新进行隐私保护、引用规范、授权机制、工具使用及对抗性测试,切勿认为教师的合规性就能直接适用于学生。

    前沿模型在训练与微调方面有哪些变化

    近期出现的前沿模型并非仅由参数数量决定。它们的处理流程已超越单一的监督微调阶段。最优秀的模型融合了多种要素:按特定顺序输入的数据、强化学习、可验证的奖励机制、合成轨迹,以及从教师到学生的知识迁移。这些要素各自弥补了单纯模仿所无法解决的问题。

    微调已不再是一项单一操作,而是一套完整的流程,引导模型从模仿走向探索,再经过验证、对齐,最终实现部署。

    DeepSeek-R1

    DeepSeek-R1将强化学习置于推理适应的核心位置。R1-Zero从预训练的基模型出发,直接应用强化学习,而无需先向其传授任何人类编写的思维过程。该实验旨在验证推理是否能够源自结果优化,而非对精心设计的推理路径的复制。

    核心方法为群体相对策略优化(GRPO)。针对每个提示,策略会生成一组候选方案,每个方案都会获得一个奖励。其优势在于通过与群体对比来计算奖励,即奖励值减去群体均值再除以群体标准差,最后加上ε,且无需单独训练价值模型。表现优于同组方案的会获得正优势,表现较差的则获得负优势。去掉评价模块可以在保留有用学习信号的同时减少内存和计算开销。

    在能够自动验证正确性的场景中,GRPO表现尤为出色:数学题的答案验证、代码的编译与测试,以及结构化回复的格式校验都属于此类场景。该模型可直接从客观结果中学习,无需为每个推理步骤添加人工偏好标签。

    R1-Zero表明,通过强化学习可能会出现验证、回溯以及在复杂问题上投入更多计算资源等行为。它同时也揭示了纯结果训练的局限性:推理过程可能难以理解、语言表达不一致,或者仅仅为了获得奖励而生成内容,却无法形成完善的回答。

    DeepSeek-R1的完整流程通过分阶段的训练方案解决了这些局限性。它从易于理解的冷启动示例开始,接着是推理强化学习,然后是拒绝采样,再是混合推理与通用监督微调,最后是对齐强化学习。冷启动数据确立了可读性强的推理风格,推理强化学习使能力超越了简单模仿的水平,拒绝采样保留了更好的自动生成路径,针对推理和通用数据进行的监督微调在保持广泛适用性的同时巩固了相关行为,而最后的强化学习阶段则提升了回答的实用性与安全性。

    仅GRPO本身并非创新点,关键在于如何将监督学习、可验证的强化学习、自生成数据以及最终对齐步骤有序地结合在一起。

    DeepSeek随后在成功的推理路径基础上对较小的密集模型进行了微调。如此一来,原本需要高昂成本的推理能力便被应用到了更易于部署的模型中,学生们也能从具有更丰富问题解决结构而非仅最终答案的演示中学习。

    Qwen3与模式融合

    Qwen3将推理与直接响应视为需要共同学习的两种行为。训练过程从长链思维的冷启动开始,接着是侧重推理的强化学习,之后将推理与非推理行为相融合,最后通过更广泛的强化学习实现整体对齐。

    模式融合是一种有趣的训练思路。一种策略可以同时学习两种行为,而另一种方式则是使用长推理检查点与独立的简短回答检查点。这种方式能够判断何时需要较长的推理过程,何时直接回复即可,从而在无需将所有任务都转化为冗长表述的情况下保持推理能力。

    GSPO与更新粒度

    GSPO(群体序列策略优化)改变了策略更新的精细程度。即使奖励能够覆盖整个回复,基于标记级别的方法通常也会为每个标记单独计算并调整重要性比率,这可能导致在同一个生成的序列中出现不一致的更新结果。

    GSPO会为序列计算重要性比率,并将序列视为一个优化单元进行处理。简单来说,它先计算更新后的策略与生成该轨迹的策略在响应长度上的对数概率比,然后取平均值并对其进行指数化处理。通过对整个序列取平均,可以得到一个响应级别的信号,该信号与获得奖励的单元相对应。

    当强化学习因标记级概率的波动而变得不稳定时,这种方法尤为有效。其创新之处在于将通常不匹配的三个要素——生成的对象、奖励单元以及优化单元——统一起来。

    Kimi K2:稳定性与智能轨迹

    Kimi K2采用了训练稳定性方法,提升了大规模优化运行的可靠性。MuonClip将Muon风格的矩阵优化与防止权重不稳定增长的控制机制相结合。QK-Clip则监控注意力行为,当查询项和键项的logit值出现极端情况时,会选择性地限制这些项的投影。

    这些都属于预训练层面的创新,而非后续微调技术,但它们在这里非常重要,因为训练后的模型质量取决于其所继承的检查点。少量的适配数据集无法有效修复因优化器不稳定或注意力logit值激增而受损的基模型。

    Kimi K2的训练后流程也依赖于智能行为轨迹:编码、工具调用、观测处理以及多步骤任务完成。训练过程中使用带有环境反馈的动作序列,而不仅仅是提示词与答案的配对。典型的流程包括从任务确定到工具选择、参数生成、执行反馈、错误恢复,最终得到经过验证的结果。

    由于有代码运行、工具的响应以及任务完成信号,这类轨迹的某些部分可以自动检测。这样一来,评估体系不仅能关注最终答案是否令人信服,还能检查模型是否选择了正确的功能、是否产生了有效的参数、是否对观测结果做出了恰当反应,以及是否真正完成了任务。

    Meta的师生协作流程

    Meta的Muse Spark和Muse Glimmer展现了一个更为完整的师生协作流程。教师可以生成最终答案、中间推理过程、多模态解读结果、工具选择决策以及问题解决路径,但这些内容在经过正确性、安全性、来源可靠性、多样性及相关性等方面的筛选之前,都不会成为训练材料。

    Muse Glimmer的迁移流程包含七个适配步骤。教师首先生成相关轨迹,这些轨迹会经过严格的筛选处理;随后学生需经历逻辑概率蒸馏、训练中期优化和监督微调,接着是策略内的知识蒸馏,最后通过强化学习完成学习。

    • 逻辑概率蒸馏传递的是教师的概率分布,而不仅仅是其选定的特定符号,这样能够保留关于合理替代选项及相对置信度的信息,而这些信息在传统硬标签训练中会被忽略。
  • 在训练中期,学生会接触到长上下文及自主决策相关数据,这比仅通过狭窄的指令微调更能提升其能力,从而使这些技能融入更全面的表征中,而非作为最后添加的薄层存在。
  • 在线知识蒸馏解决了传统蒸馏方法的核心缺陷。仅通过教师的行为轨迹进行训练时,学生虽然能学习到教师的状态,但在推理时会遇到自身错误决策产生的状态。如果让学生生成行为轨迹,再由教师针对这些状态提供指导,就能缩小两者之间的差异。
  • 随后,强化学习会进一步强化那些能产生可衡量结果的行为。
  • 综合来看,这些步骤使得知识蒸馏成为一个多阶段的能力迁移过程,而非单纯的压缩步骤。

    现在的框架已经清晰可见:用监督数据设定行为规则,用可验证的强化学习方法完成模仿学习,用合成轨迹实现覆盖,设置与奖励粒度(整个序列)相匹配的优化单元,最后通过对学习者自身状态进行提炼,将所需能力传递给可实际部署的模型。

    真正的创新并非某个单一的模型名称,而在于整个训练系统:数据的排列顺序、结果的验证方式、策略的探索路径、对不稳定更新的管控,以及那种不假设规模较小的学习者就能完美复制其教师模型的最终迁移机制。

    训练即发布

    即便运行成功,也仍不能视为可部署的成果。真正需要交付的是完整的配置方案,它包括基础模型及其分词器——无论是适配器还是合并后的权重、系统包与工具架构、内存规范与检索策略,以及量化方案、运行时规则和安全策略。

    注册信息

    至少需要注册以下内容:

    • 基础模型和参考模型的校验和;
    • 数据集及其处理过程的摘要;
    • 数据分割清单与污染情况报告;
    • 优化目标、优化器、种子值、超参数及目标模块;
    • 代码与容器的摘要信息;
    • 硬件配置与数值精度;
    • 评分工具、奖励模型、评估器及策略的版本信息;
    • 评估报告、审批记录、负责人、有效期及回滚目标。

    评估需要基准与对比

    需满足两个条件:

    1. 绝对阈值条件。受保护套件中的泄漏率为零,工具架构的有效性超过阈值,租户绑定率为100%,且拒绝率与安全阈值也均达标。
    2. 相对改进条件。候选方案必须在保持所有阈值条件满足的情况下,针对目标缺陷表现出优于当前生产方案的性能。

    应评估整个运行过程,而不仅仅是模型本身。一旦应用了新的量化方式、聊天模板、检索策略或工具架构,更强大的适配器也可能会出现性能下降。

    切勿将企业整体质量简化为单一平均值

    设 Mₖ 为第 k 个评估切片的度量值。加权得分 S 是各切片权重与其度量值的乘积之和,且所有权重之和为1,这样能很好地汇总结果。不过加权平均法允许进行补偿,因此在常见的英文评测任务中取得高分数时,可能会掩盖在租户隔离功能或数据量较少的语言处理方面的严重退步。

    按以下顺序进行字典排序:

    1. 严格的安全、隐私和授权底线;
    2. 能力保留底线;
    3. 在目标任务上的改进程度;
    4. 成本和延迟限制;
    5. 通过所有前期筛选的候选方案的综合排名。

    这体现了奖励设计原则:那些不可妥协的约束条件是无法用性能或处理效率来弥补的。

    置信区间与微小提升

    采样噪声可以解释观察到的准确率差异。对于包含 n 个独立样本且比例为 p̂ 的二元指标,标准误差大致为 p̂(1 − p̂) / n 的平方根。当 p̂ = 0.90 且 n = 100 时,标准误差约为 0.03,这使得仅提升 1 个百分点的准确率显得不够有说服力。

    所有候选模型都需要回答相同的提示问题,因此配对测试的结果通常比将各模型结果视为独立数据更可靠。可以对每个样本的差异进行自举法处理,或使用合适的配对测试,并同时报告置信区间与点估计值。

    以大语言模型作为评判者的评估方法需要额外的控制措施:随机排序、固定评判者版本、人工校准以及追踪评判者之间的分歧情况。仅凭某个评判者对某组提示问题的微弱优势并不足以作为发布模型的依据。

    遗忘测试套件

    目标增益不得削弱通用能力。需保留一套固定的能力范围,包括:

    • 指令遵循能力;
    • 安全边界与拒绝准则;
    • 跨语言行为表现;
    • 选择合适工具并正确调用它;
    • 在长文本中提取事实;
    • 合理的置信度评估及何时应避免行动的判断;
    • 非目标领域的相关任务;
    • 对抗性攻击与隐私探测能力。

    需根据精确的基准配置或实际运行方案报告差异。一旦出现能力下限不足的情况,应在增加目标示例之前,先检查训练数据、模型排名、学习率、训练轮数、重放数据组合以及优化目标。

    两个量化阈值

    当涉及QLoRA或更高级别的服务端量化时,需进行两次评估:

    1. 训练版本控制机制在评估精度时使用开发阶段的基准模型加上适配器。
    2. 部署版本控制机制则使用生产环境实际使用的版本:完整的合并版本或侧车构建版本、运行时内核、量化设置、分词器以及聊天模板。

    前者用于判断训练是否教会了所需行为,后者则用于确认部署是否保留了该行为。

    金丝雀测试与回滚

    金丝雀测试可通过限流、租户类别、请求类型或影子模式来进行划分。需要监控任务成功的频率以及何时需要人工介入修正,策略被拒绝的频率、工具出现的错误,Token消耗量和延迟情况,还有奖励值或输入数据分布的任何偏差。

    回滚操作需要恢复之前的配置,这意味着不仅要恢复之前的适配器,还需恢复其他相关组件。如果新的系统包、分词器或工具架构仍在运行,说明系统尚未完成回滚。

    金丝雀算法

    假设历史上严重故障的发生率为 p。在 n 次独立的金丝雀请求中,至少出现一次故障的概率为 1 − (1 − p)ⁿ。以 1% 的故障率和 100 次请求计算,该概率约为 1 − 0.99¹⁰⁰,即 63.4%左右,因此小型金丝雀系统很容易忽视那些罕见但严重的故障。

    金丝雀设计应同时考虑风险与百分比因素。可有意引入高风险的任务路径、特殊语言、过长的上下文、处于权限边界上的请求、返回空结果的查询以及不同的用户群体。影子评估虽不会产生副作用且能提升覆盖范围,但无法揭示真实操作的所有交互效应。

    升级与回滚触发条件

    在金丝雀系统启动前就确定触发条件:

    • 一旦出现绝对的策略违规情况,即立即停止运行;
    • 受保护数据泄露时需立即停止,同时暂停事件处理流程并保留证据;
    • 工具出现错误或响应延迟超过阈值时需暂停并进行分析诊断;
    • 目标数据出现具有统计可信度的异常变化时需回滚操作;
    • 奖励或评分标准出现无法解释的偏差时需暂缓升级处理;
    • 缺失遥测数据则意味着测试未成功完成,因为无法对版本进行评估。

    绝不能在盯着控制面板的情况下自行制定验收标准,否则治理工作就会在部署压力下变成一场协商。

    记录所有被拒绝的测试运行

    如果审计记录中包含了失败候选项及其原因,其说服力会更强。请看以下案例:

    • qlora-v4版本使工具的有效性提升了三点;
    • 然而,一旦应用量化处理,基于引文的答案准确性会降低5个百分点;
    • 审核机制拒绝了它;
    • 经过深入分析,团队将这一下降与对量化处理反应不佳的输出预测联系起来;
    • 生产环境仍继续使用 dpo-v1。

    这证明了审核机制能够阻止那些表面上看似不错的模型。仅包含已通过审核版本的注册表无法证明控制措施确实有效。Reporting适配器的发布清单可能如下所示:

    release_id: inv22041-reporting-dpo-v1
    base_sha256: "…"
    reference_release: inv22041-sft-v3
    adapter:
      method: lora
      rank: 16
      alpha: 32
    dataset_digest: "sha256:…"
    grader_version: sql-cage-12
    policy_version: p-31
    gates:
      tenant_binding: 1.0
      protected_leak_rate: 0.0
      tool_json_validity_min: 0.98
    canary:
      mode: shadow
      duration_hours: 72
    rollback_to: inv22041-sft-v3
    

    清单中列出了发布编号、固定的基础校验和、参考版本(即更早的SFT构建版本)以及适配器详情。其内容简短,便于查看;信息充足,足以验证相关声明。

    端到端流程演示:INV-22041

    缺陷报告非常具体:基础代理通常能得出正确答案,但由于工具调用格式错误、无法妥善处理空SQL结果,以及缺乏明确的因果说明,导致其准确性下降。共有八个步骤来解决这些问题:

    1. 定位缺陷。区域映射信息存储在受控内存中,当前销售数据保存在语义层中,权限则由运行时策略管理。训练内容涵盖工具语法、错误恢复、引用处理以及标准化的拒绝方式。
    2. 构建数据层。编译4,200个SFT示例以及1,100个多步骤恢复轨迹,标注数据来源,剔除草稿版财务文件,并确保发布版本中的contamination_rate = 0。
    3. 建立SFT模型。在选定的注意力投影上,以16的秩和32的alpha值训练LoRA适配器。工具解析成功率从0.71提升至0.94,而整体能力水平保持稳定。
    4. 添加偏好数据。评估者更倾向于选择简洁明了的报告,而非流畅但缺乏支持的替代方案。在固定SFT参考模型的情况下,以beta = 0.2运行DPO,胜率为0.78,且数据泄露率仍为零。
    5. 仅在有充分理由时才应用可验证的强化学习方法。在数据充足性评估阶段,每个提示需生成八条SQL查询及工具执行路径,并从租户绑定性、有效性、执行情况、成本以及数据是否充足等方面对它们进行评分。GRPO能提升恢复效果;当相同奖励分组和较长输出会削弱信号时,则可尝试使用DAPO。
    6. 检查架构适配性。如果学生模型是会导致强化学习过程不稳定的MoE模型,且其令牌级重要性比率不稳定,可在相同评分标准与预算条件下将GSPO与该模型进行比较。
    7. 在经济性要求时进行简化处理。利用教师输出及在策略状态信息,将可观察的工具行为整合到规模更小的本地学生模型中,然后在对精确量化后的模型上重复进行泄漏检测和工具集测试。
    8. 发布配方。固定每个组件,进行72小时的阴影测试,只有当绝对最低分和相对提升率均达标时才进行推广,并在审计记录中保留一次故意拒绝的测试结果。

    在运行时,完整的系统仍然会读取当前季度的架构与权限设置。训练会使其更好地遵循这些规则,但并不会使其成为这些规则的拥有者。

    故障树:优质训练项目出错的原因

    常见的问题是,在缺乏企业级合同的情况下对代理模型进行了优化:

    • 较高的训练准确率可能掩盖了存在问题的评估结果。
    • 获胜的偏好比较结果可能来自更长的回答内容或泄露的引用信息。
    • 不断上升的奖励曲线可能反映出评分机制被利用的情况。
    • 学生会在学习技能的同时,也习得教师那些不安全的习惯。
    • 看似完美无缺的适配器在实际部署的量化运行环境中可能会出故障。
    • 如果仅恢复权重而保持其他配置不变,回滚操作可能会失败。

    训练目标只能证明优化确实发生了,而只有发布后的实际表现才能证明企业系统确实得到了改进。

    概念验证与企业级应用

    因此,训练后最具价值的工作往往并非新的损失函数,而是将数据溯源、奖励契约、可复现性、评估机制、注册标识、部署流程、遥测功能以及回滚机制整合在一起的工程实现。

    十二条实用规则

    1. 保持存储中的数据持续更新,同时确保适配器的行为稳定。
    2. 根据实际拥有的监督数据和奖励契约来选择算法。
    3. 固定参考模型、评分工具、评估标准以及策略版本。
    4. 在聊天式监督微调中使用仅依赖辅助模型的损失函数,并验证数据打包的边界条件。
    5. 优先选择PEFT技术,将完整微调视为需要书面说明的特殊情况。
    6. 使用QLoRA进行训练并不等同于可以直接使用量化后的模型。
    7. DPO方法需要固定的参考模型和beta值,而无需参考模型的方法同样需要基准线作为对比。
    8. 针对对抗性轨迹,对每一个可验证的奖励进行单元测试。
    9. 选择DAPO或GSPO应基于实际测试中的失败情况,而非仅仅因为它们更为新潮。
    10. 蒸馏过程既能传递行为特征,也能传递故障模式,因此需独立评估学习得到的模型。
    11. 对于决定发布标准的测试套件,其污染程度必须保持在零。
    12. 需记录完整的实现方案,并在升级前进行回滚演练。

    契约而非阶梯

    企业的适配过程并非从SFT逐步迈向更多时髦缩写的过程,而是一系列契约的串联。

    数据契约规定了示例可能传授的内容,目标则定义了优化后的信号,而环境部分列出了可行的操作。评估用于确定改进程度,注册表会精确记录所构建的内容,部署流程则用于控制组织需要承担的风险大小,回滚机制则能表明该变更是否真正可逆。

    只有这些契约完善了,LoRA、DPO、GRPO、蒸馏技术以及后续出现的各种训练后方法才能成为实用的工程工具。没有它们,即便有完美的奖励曲线,也只不过是成本更高的演示而已。