大模型算法二次开发:核心思路与流程详解
大模型二次开发主要包含领域知识注入、知识召回激发及偏好对齐三个阶段。核心方法涵盖增量预训练(CPT)、有监督微调(SFT)、人类反馈强化学习(RLHF)及直接偏好优化(DPO)。在技术实现上,可分为基于 Prompt、基于表征及基于模型混合三类自适应预训练方法。文章详细解析了各阶段的功能、优缺点及实施细节,强调了数据质量、算力规划及评估体系在工程落地中的重要性,为垂直领域大模型的开发提供了系统化的思路与参考。

大模型二次开发主要包含领域知识注入、知识召回激发及偏好对齐三个阶段。核心方法涵盖增量预训练(CPT)、有监督微调(SFT)、人类反馈强化学习(RLHF)及直接偏好优化(DPO)。在技术实现上,可分为基于 Prompt、基于表征及基于模型混合三类自适应预训练方法。文章详细解析了各阶段的功能、优缺点及实施细节,强调了数据质量、算力规划及评估体系在工程落地中的重要性,为垂直领域大模型的开发提供了系统化的思路与参考。

随着众多大模型相继问世,大模型二次开发、大模型微调成为一项热门技术。本文总结了大模型二次开发的基本方法与思路,涵盖从领域知识注入到偏好对齐的全流程。
模型通常分为三个主要阶段:
在大模型整个流程中,增量预训练属于后期预训练(Post-pretraining)的范畴。Post-pretraining 是一种在模型的初始预训练和最终微调之间进行的训练方法,通常用于进一步适应模型以处理特定类型的数据或任务。
后期预训练(Post-pretraining) Post-pretraining 是在通用预训练模型的基础上,对模型进行额外训练的过程,通常是为了使模型更好地适应特定的领域或任务。这个过程使用的数据集通常比预训练阶段的数据集更专注于某个领域或任务,但比微调阶段使用的数据集更大、更广泛。训练方法可以是监督学习,也可以是自监督学习,具体取决于可用数据的类型和训练目标。 Post-pretraining 的目标是在不过度专化到某个特定任务的同时,提高模型对特定领域的理解和表现。
训练过程 在 Post-pretraining 阶段,模型通常会在一个包含大量领域特定数据的数据集上进行训练。这个阶段的训练可以包括多种任务,如语言建模、文本分类、实体识别等,这些任务都是为了提升模型在特定领域的表现。训练过程中,模型的参数会根据领域特定数据集进行调整,以便更好地捕捉和理解领域内的语言模式和知识。
优势与目标 Post-pretraining 允许模型在保持通用性的同时,增强对特定领域的理解,这有助于模型在后续的微调阶段更快速地适应特定任务。与 SFT 相比,Post-pretraining在微调之前提供了一个中间步骤,有助于模型更平滑地过渡到特定任务上。与 RLHF 相比,Post-pretraining 不依赖于复杂的奖励机制或人类反馈,而是通过大量的领域特定数据来提升模型性能。 总结来说,Post-pretraining 是一个介于预训练和微调之间的训练阶段,它使用大量的领域特定数据来进一步调整模型,使其更好地理解特定领域的语言和任务。这个阶段不需要复杂的奖励机制,而是通过传统的监督或自监督学习方法来实现模型性能的提升。
在这个阶段,预训练模型(可能经过了 Post-pretraining)被进一步训练,以优化它在一个特定任务上的表现。微调通常在一个相对较小的、特定任务的数据集上进行,这个数据集包含了明确的标签,模型通过监督学习来进行优化。微调的目的是调整模型的参数,使其能够在特定任务上做出准确的预测。
SFT (Supervised Fine-Tuning) 是微调的一种形式,强调在有监督的环境下进行。在 SFT 阶段,我们使用特定领域的数据或私有化数据对预训练模型进行改良。这一阶段需要指令微调数据,数据集通常由输入(用户问题)和输出(标准答案)两个字段构成。标准答案通常由专家标注获得。
RLHF 是一种利用人类反馈来训练强化学习模型的方法。在 RLHF 中,模型通过与人类交互获得反馈,这些反馈作为奖励信号来指导模型的行为。RLHF 通常用于训练能够生成更自然、更符合人类偏好的文本或其他输出的模型。这种方法特别适用于需要模型理解和适应人类偏好的场景。
对齐阶段目的是进一步优化模型,使其更符合实际应用需求。在这个阶段,我们收集用户反馈数据(如点赞或点踩),并基于这些数据进行模型的进一步训练。
对齐阶段的数据格式与 SFT 阶段不同:通常包含对同一问题的接受(accept)和拒绝(reject)两种答案。
问题解决策略及部署:在 SFT 阶段,模型被训练以识别'想要的答案',但未明确告知'不想要的答案'。为解决这一问题,我们通过收集用户反馈和日志数据,在对齐阶段告诉模型哪些答案是不可接受的。经过 SFT 和对齐阶段的训练,我们可以得到一个优化后的模型,这个模型可以部署上线。在对齐过程中,我们可以使用一些常见的方法,如 PPO(Proximal Policy Optimization)和 DPO(Distributional Proximal Optimization)。DPO 由于训练过程相对简单,已成为对齐阶段的主流算法。
总的来说,SFT 更侧重于直接从标注数据中学习,而 RLHF 则试图通过人类的反馈来引导模型学习更复杂和更细粒度的行为。RLHF 通常被认为是一种更接近人类学习方式的方法,因为它不仅仅依赖于标签数据,还依赖于人类对模型输出的评价和偏好。
总的来说,模型对齐阶段可以视为一个更广泛的概念,而 RLHF 是一种特定的实现方式,特别是在强化学习领域。两者在实践中可能会有交集,但它们侧重点和应用方式有所不同。
利用人类指导的力量有效地训练人工智能模型。传统的强化学习模型通过与环境交互产生的奖励来学习,而 RLHF 则不同,它引入了人类反馈作为宝贵的指导来源。这种反馈可以帮助人工智能系统导航复杂的决策空间,与人类价值观保持一致,并做出更明智和道德的选择。
RLHF 是一个复杂且经常不稳定的过程,那我们是否可以通过直接优化语言模型来实现对其行为的精确控制,而无需使用复杂的强化学习,也可以有效学习到人类偏好呢?
DPO 就是通过利用奖励函数与最优策略之间的映射关系,证明这个受限的奖励最大化问题可以通过单阶段的策略训练来精确优化来达到这个目的的。
它通过直接优化模型以生成首选响应,将问题表述为使用人类偏好对数据集的分类任务,本质上是在人类偏好数据上解决一个分类问题。DPO 是稳定的、性能和计算成本轻量级的,无需拟合奖励模型,在微调期间从 LM 中采样,或执行显着的超参数调整。
DPO 是一种单阶段算法,可直接优化 LLM 以生成首选响应。具体的实现手段是通过增加偏好样本的对数概率与减小非偏好样本响应的对数概率。DPO 最大化生成首选完成的概率并最小化生成非首选完成的概率。它不涉及多轮训练。
增量预训练也叫领域自适应预训练(domain-adapter pretraining),即在所属领域数据上继续预训练。自适应预训练(domain-adapter pretraining)的方法可以分为三类:Prompt-based 方法、representation-based 方法和 model mixed-based 方法。
在使用模型全局 tuning 的方式适应下游任务时,预训练模型的泛化性能会被严重削弱,因此 Prompt-based 方法在保持预训练模型参数权重不变的条件下,增加额外可学习的 Prompt tuning 模块来实现对下游任务的泛化,这样就能较好地保持原模型的泛化性能。
VPT 这种方式虽然可以较好地保留模型的泛化性,但是,在面对新的任务时,以往的 Prompt 模块的知识同样被覆盖,依旧遭遇了灾难性遗忘问题。为此,有学者提出了 Prompt Pool 的概念,设计了 Prompt 模块的集合,即 P={P1,P2,…,Pm}(m 表示该 Pool 的最大尺寸)。Prompt Pool 的思想有效避免了单一 Prompt 的问题,但是 Pool 的设计使得其需要进行 Prompt Selection 操作,也就是需要将特定任务与其对应的 Prompt 模块进行索引匹配。
L2P 算法是一种较为常用的 Prompt selection 算法,该算法设计了一种 Key-Query 的 Prompt 匹配方法,也就是为每一个 Prompt 提供一个可学习的索引键 k,即 P={(k1,P1),(k2,P2),…,(km,Pm)。L2P 利用预训练模型将输入特征编码到 Key 对应的嵌入空间中,然后利用余弦距离损失函数在已有的 Pool 中搜索最近似的 Key。接着,利用如交叉熵损失等方法对搜索到的 Key 对应的 Prompt 进行优化。
类似的 Prompt Selection 算法很多,如 DualPrompt 算法,该算法将 Prompt 进行解耦,分化为 General Prompt 和 Expert Prompt。General Prompt 面向所有任务,为所有任务中共享信息,而 Expert Prompt 针对独立任务,数量与任务量一致。其采用了和 L2P 相同的 key-query 匹配策略。
Prompt Selection 虽然可行,但仍是硬匹配,选项有限。基于注意力信息加权的 Prompt Combination 方法则有效缓解了该问题。如 CODA-Prompt 通过对 Prompt Pool 进行注意力机制嵌入,为每个注意力赋予自适应权重,进而求算全局 Key-Query 的加权和,实现可学习式 Prompt 组合。
从根本上来说 Prompt Combination 仍受制于 Prompt Pool 的范围。为此,许多学者则开展 Prompt Generation 有关的研究,如 DAP,其利用 MLP 进行特定任务提示信息的编码生成。
优点:
缺点:
representation-based 方法直接利用预训练模型强大的泛化性和通用性来实现持续学习。比如 Simple-CIL 方法,该算法是 ADAM 算法原文中提出的 Baseline,Simple-CIL 冻结预训练模型参数,并通过求算类别中心的方式来构建 Classifier。具体来说,在面对很多类别时,计算同类的 embedding 或 features 的平均值,并将该平均值作为该类别的标准(prototype),最后结合类别标准与余弦比较的方法替换模型的原始 Classifier。
虽然基于 prototype 的方法存在一定的作用,但是并未很好地适应下游任务。为此,一些研究在基于 prototype 方法的基础上结合了外置参数高效调节模块或者外置适配器来使得预训练模型更加适应下游任务,如 ADAM 等。
ADAM 等算法在进行类别标准设定时,类别标准之间的仍存在联系,导致任务效果降低。为此,RanPAC 算法则采用 online LDA classifier 来去除原始方法 prototype 计算结果之间的相关性,加大类别间的分布差异。此外,RanPAC 算法利用 Random Projection layer 将 features 映射到高维空间中,并在高维空间中进行 prototype 的计算,以使得特征分布符合高斯拟合。
相较于前面将预训练模型的通用语和适应性分离处理的方式,SLCA 算法采用了差异学习率调整和特征经验重播的方式进行持续学习研究。该算法使用较小的 learn rate 调整模型主体部分,而使用较大的 learn rate 调节模型的 classifier,以实现模型的逐步微调和 classifier 的快速适应。为了避免忘记以前的分类器,SLCA 还对分类特征分布进行建模,并重播它们以校准 classifier。
优点:
缺点:
Model Mixture-based 方法在持续学习工程中构建了一组模型,然后再推理阶段通过 Model Ensemble 和 Model Merge 来进行信息综合决策。
Model Ensemble 中,ESN 算法凭借预训练模型强大的通用性,构建多个 classifier,在面对新任务重新初始化和训练一个新的 classifier。在推理时,采用投票策略来整合多个模型的结果进行最终决策。
由于 Model Ensemble 的核心因素取决于模型的方差,一些研究通过增强模型之间的多样性来替代使用相同的预训练模型构建不同的 classifier。如 PromptFusion 利用预训练的 ViT 和 CLIP,并在推理过程中动态地对 logit 进行组合,即 f(x) = λ fvit (x) +(1−λ)fclip(x)。
与多个 backbone 的集成不同,PROOF 采用了仅使用单个 CLIP 的更全面的推理方法。由于 CLIP 支持视觉和文本特征的跨模态匹配,因此 PROOF 设计了一个三层集成,考虑 image-to-text、image-to-image prototype、image-to-adjusted text 的跨模态融合。
Model Merge 将多个不同的模型合并为一个统一的模型,无需要额外的训练。LAE 定义了 online 和 offline 学习协议,online 模型通过交叉熵损失进行更新,目的是在新的任务中获取新的知识。离线模型则通过 Model Merge 进行更新,例如指数移动平均 (EMA): θ offline←α·θ offline +(1−α)·θ Online,其中 α 为权衡参数。LAE 仅将 EMA 应用于参数高效调谐模块 (如 prompt),其利用 online 和 offline 模型的最大 logit 进行推断。
与 LAE 一样,ZSCL 将合并技术应用于 CLIP 模型,目的是在持续学习过程中保持其 zero-shot 性能。然而,随着 EMA 中权衡参数的改变,CLIP 性能不再具有鲁棒性。因此,ZSCL 建议每隔几次迭代合并参数,从而在模型训练期间创建平滑的损失轨迹。
此外,CoFiMA 注意到 EMA 在 Merge 过程中对每个参数的重要性是相等的,CoFiMA 在 Merge 过程中插入 Fisher information(费雪信息)作为每个参数的估计重要性。
优点:
缺点:
在实际的大模型二次开发中,除了理论流程,还需要注意以下工程实践:
大模型二次开发是一个系统工程,涉及从数据准备、模型选择、训练策略到部署优化的全流程。选择合适的开发路径(如 CPT+SFT+DPO)并结合具体的业务场景进行调优,是构建高质量垂直领域大模型的核心。随着技术的演进,未来将出现更多高效、低成本的微调与对齐方案,开发者需持续关注前沿动态。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online