
解锁AI潜力:如何通过Agentic AI转变模型合并以提升性能
超越微调:Agentic AI 如何利用模型合并
继 RAG 之后,微调不再是改进模型的主要方法,但如果我们能够超越微调呢?这篇博文探讨了 Agentic AI 如何利用模型合并——一种将多个 LLM 融合到一个更强大的系统中的技术。让我们分解所有这些技术术语,看看它如何使 AI 系统更智能、更高效、更具适应性。
来自 ChatGPT 的 AI 生成图像
想象一个只理解技术细节的 LLM 和另一个擅长对话的 LLM。我们应该重新训练还是微调?
如果我们微调 LLM 1,它将开始忘记技术细节,反之亦然。我们需要一种方法,在保持模型分离的同时,仍然结合它们的功能来生成最佳响应。
现在,考虑另一种情况:
即使我们选择微调,一个 LLM 也会在经典文学、剧本和叙事结构上进行微调,以创作引人入胜的情节,而另一个模型则在百科全书数据和事实数据库上进行微调。结果将是一个既有创造力又保持事实核查准确性的作家。
一篇 论文 利用 模型合并方法来提高 LLM 的自我批评能力并防御越狱攻击。 关键思想是将外部评论模型与原始 LLM 合并,加强其识别和改写不安全响应的能力,而无需人工标记数据。
作者介绍了三种自我批评防御策略:
- 响应重写 (RR): LLM 生成一个初始响应 → 批评自己的响应 → 重写它以删除有害元素。
- 使用外部评论者的响应重写 (RR-extcrit): 不是自我批评,而是外部评论模型评估响应并建议更安全的修订。
- 合并响应重写 (RR-merge): 使用线性权重插值将基础 LLM 和评论模型合并到一个模型中,有效地将自我批评能力直接集成到 LLM 中。合并后的模型保留了两个模型的优势,而无需单独运行两个模型的计算开销。
什么是模型合并
模型合并,也称为模型融合,是将多个模型的参数组合成一个统一模型的过程。与在推理时结合多个模型的预测的集成方法不同,模型合并在参数级别组合模型,并产生一个最终模型。
## Basic Example
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
def load_model(model_name: str):
"""
Load a model and its tokenizer from the Hugging Face hub.
"""
model = AutoModelForCausalLM.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)
return model, tokenizer
def merge_models(model1, model2, alpha: float = 0.5):
"""
Merge two models by taking a weighted average of their parameters.
"""
# Ensure both models have the same architecture
state_dict1 = model1.state_dict()
state_dict2 = model2.state_dict()
# Create a new state dict for the merged model
merged_state_dict = {}
for key in state_dict1.keys():
if key in state_dict2:
# Merge the parameters using weighted average
merged_state_dict[key] = alpha * state_dict1[key] + (1 - alpha) * state_dict2[key]
else:
raise ValueError(f"Key {key} found in model1 but not in model2.")
# Load a fresh instance of the model and load the merged state dict
merged_model = type(model1).from_pretrained(None, config=model1.config)
merged_model.load_state_dict(merged_state_dict)
return merged_model
def main():
model_name = "gpt2" # using GPT-2 as an example
alpha = 0.6 # weight for the first model; adjust as desired
# Load two models (they could be fine-tuned differently or come from different checkpoints)
model1, tokenizer = load_model(model_name)
model2, _ = load_model(model_name)
# Merge the models
merged_model = merge_models(model1, model2, alpha=alpha)
# Example usage: generate text with the merged model
prompt = "Once upon a time"
inputs = tokenizer(prompt, return_tensors="pt")
# Generate text (adjust parameters as needed)
output_sequences = merged_model.generate(
input_ids=inputs.input_ids,
max_length=50,
temperature=0.7,
num_return_sequences=1
)
generated_text = tokenizer.decode(output_sequences[0], skip_special_tokens=True)
print("Generated text from merged model:\n", generated_text)
if __name__ == "__main__":
main()
合并方法
模型合并涉及将多个已训练模型的参数组合成一个模型,旨在提高性能、鲁棒性或效率,同时减少计算开销。
以下是一些基本的模型合并技术:
- 基本权重平均:直接平均两个或多个模型的权重。合并在同一数据集上训练的两个模型
- 加权模型平均:在合并期间为模型分配不同的重要性。合并具有不同性能水平的模型
- 线性模式连接 (LMC) 合并:在权重空间中找到一个路径,可以在其中合并两个模型,同时将性能损失降到最低。合并在不同数据集上训练的模型
- 模型汤: 根据性能选择性地组合来自多个模型的权重。组合多个微调模型
- 子空间合并: 在合并之前将模型权重投影到低维空间中。高效的内存合并
以下是一些高级模型合并技术:
1. SLERP(球面线性插值)
SLERP 是一种非线性插值方法,用于合并模型权重,同时保留参数空间中的几何属性。与在线性插值中沿直线平均权重不同,SLERP 在超球面上找到一条平滑的曲线路径。
其中 ω 是高维空间中两个权重向量 θ1 和 θ2 之间的夹角。
优点:
- 比简单的线性插值更稳定。
- 减少了灾难性遗忘。
缺点:
- 需要角度计算,这使得它在计算上很昂贵。
- 并非总是与所有架构兼容。
2. TIES (Task-Interference Elimination Strategies) 合并
TIES 旨在合并在不同任务上训练的模型时解决干扰。它试图对齐权重,使合并后的模型保留每个单独模型的优势,而不会在任何任务中损失性能。
- 步骤 1: 识别模型之间的冲突参数(例如,在不同任务中行为不同的神经元)。
- 步骤 2: 调整或重新对齐权重以减少干扰。
- 步骤 3: 仅在兼容的参数区域合并模型,同时保留不同的任务知识。
优点:
- 保留单个模型的优势。
- 减少因冲突权重导致的性能损失。
缺点:
- 比直接合并更耗费计算资源。
- 在合并之前需要进行任务相似性分析。
3. DARE (Divergence-Aware Residual Ensemble) 合并
DARE 试图最大限度地减少合并训练期间差异显着的模型的负面影响。它通过识别模型之间的残差差异并在合并之前进行调整来实现这一点。
- 步骤 1: 比较两个模型的权重分布。
- 步骤 2: 找出模型之间参数更新的差异。
- 步骤 3: 不是简单的平均,而是添加一个残差校正项来平衡冲突的更新。
其中 α 是由差异度量确定的缩放因子。
优点:
- 对于组合高度差异化的模型更有效。
- 平衡知识保留,同时避免模型崩溃。
缺点:
- 需要额外的计算来计算差异度量。
- 对于已经紧密对齐的模型,并非总是必要的。
4. Passthrough 合并方法 — 最重要
与标准合并不同,Passthrough Merge 不会在权重级别合并模型。相反,它在推理期间动态地选择哪个模型处理给定的查询。Goliath-120B 就是这样一个模型,它通过使用 2 个 Llama 模型和 Mergekit 构建。
- 步骤 1: 确定哪个模型最适合给定的输入。
- 步骤 2: 代理将查询转发到所选模型,而不会更改任何模型的权重。
- 步骤 3: 如果多个模型相关,则它们的输出在响应级别组合,而不是合并参数。
优点:
- 避免模型之间的破坏性干扰。
- 在实时 AI 助手和多领域 AI 系统中运行良好。
缺点:
- 实际上并没有合并模型 — 只是动态地路由查询。
- 需要一个选择机制(例如,分类器或路由算法)。
何时以及何时不选择模型合并技术
模型合并是一种强大的技术,但它并非总是最佳选择。是否使用它取决于计算资源、模型兼容性和特定于任务的要求等因素。
何时选择?
- 当您想结合多个模型的优势时
- 当您需要一个统一的单通道模型时
- 当您想提高泛化能力时
- 当您想在不完全重新训练的情况下调整模型时
- 当任务干扰可控时
何时不选择?
- 当模型具有高度不同的架构时
- 当任务干扰过高时
- 当您需要实时、低延迟的响应时
- 当合并增加计算成本而不是降低成本时
- 当安全性和稳健性是优先事项时
在模型合并的背景下,Agentic AI 可以在提高合并过程的效率、适应性和有效性方面发挥关键作用。
关于 Agentic AI 的简要介绍 —
Agentic AI 指的是表现出自主性、决策能力和自我改进的 AI 系统,使它们能够在复杂、动态的环境中独立运行。与需要预定义指令的传统 AI 模型不同,Agentic AI 可以设定目标、规划行动、从反馈中学习并适应新情况,而无需人工干预。
什么使 AI 具有“Agentic”?
- 自主性 — AI 系统可以在没有持续人工监督的情况下运行。
- 面向目标的规划 — 它定义自己的子目标并计划行动以实现它们。
- 自我改进 — 它不断从过去的经验中学习并调整其策略。
- 不确定性下的决策 — 即使数据不完整,它也可以评估权衡并做出决策。
- 适应性 — 系统可以根据现实世界的反馈动态地改变其行为。
Agentic AI 的核心组件 —
- 感知模块 — 捕获原始数据(文本、图像、音频)并提取有意义的信息。
- 记忆和知识库 — 存储过去的交互和知识,以改善长期学习。
- 工具、规划器和目标管理 — 将复杂的任务分解为更小、可执行的步骤。
- 决策模块 — 使用多目标优化(如马尔可夫决策过程)评估不同的策略
- 行动执行 — 与外部系统(API、数据库)交互以实施决策。
- 反馈和自我改进 — 使用强化学习或自蒸馏来微调其自身的响应。
Agentic AI 如何帮助模型合并
AI Generated Image from ChatGPT
1. 智能模型选择
Agentic AI 能够自主地分析、比较和决定应该合并哪些模型以获得最佳性能。Agentic AI 不会简单地平均所有模型,而是可以根据多个因素(例如任务相关性、知识多样性和性能指标)战略性地选择最佳模型。
- 任务相似性分析: 在合并之前,Agentic AI 需要确定模型是否具有互补的知识,或者它们是否差异太大而无法有效合并。如果模型 A 针对财务预测进行了微调,而模型 B 针对医疗诊断进行了训练,则未经调整地合并它们可能会降低性能。
- 基于性能的选择: Agentic AI 可以在决定合并哪些模型之前评估不同模型在相关任务上的表现。如果正在合并一个 LLM 用于客户支持,Agentic AI 可能会在以下方面测试候选模型:响应准确性、情商、处理难缠的客户。
- 知识冗余和互补性检查: Agentic AI 确保合并模型实际上增加了有用的新知识,而不是仅仅复制现有功能。两个针对新闻文章进行微调的 LLM 可能包含高度重叠的知识。合并它们不会显着提高性能。但是,将法律专家模型与通用知识 LLM 合并会创建一个更强大的模型,具有专业的法律理解。
2. 实时模型路由
实时模型路由是一种动态合并方法,其中 Agentic AI 系统在运行时决定哪个模型(或模型组合)应该处理特定的查询,而不是永久地合并它们的权重。系统不是从多个来源创建一个单一的静态模型,而是根据输入特征智能地选择并将请求路由到最相关的模型。这就是 Passthrough Merging,因为模型没有物理合并,而是根据它们的专业知识动态路由。
-
查询分析:当用户提交查询时,Agentic AI Master Agent 首先对其进行分析。
-
模型选择策略:一旦 AI 理解了查询,它就会使用以下策略之一选择一个或多个模型:
-> 单模型选择(如果一个模型最合适)
- 如果查询是关于 Python 编码的,系统会选择一个 Code-Specialized LLM。
- 如果查询要求一首诗,它会选择一个 Creative Writing LLM。
-> 混合路由(如果多个模型做出贡献)
- 对于像*“用简单的术语解释量子计算”*这样的查询,AI 可能会:
- 使用一个 Technical Model 来生成准确的解释。
- 使用一个 Conversational Model 来简化响应以提高清晰度。
-> 加权响应混合(如果两个模型贡献相同)
- AI 通过为每个响应赋予权重并生成最终回复来合并两个模型的输出。
- 执行和响应生成:选定的模型生成响应,如果需要,AI 会过滤和完善响应以符合安全准则。系统对多个输出进行排名,以确保显示最高质量的响应。
3. 持续改进和反馈学习
AI 模型合并面临的最大挑战之一是确保合并后的模型随着时间的推移不断改进,而不是变得静态。Agentic AI 使系统能够自主演进,利用反馈循环和自学习技术来提高性能,而无需手动重新训练。
Agentic AI 使用一种反馈驱动的方法,其中它:
- 监控响应和用户交互: 每次与 AI 模型的交互都会被分析,以确定响应是否准确、相关和有用。
- 识别合并模型中的弱点: 如果某些特定于任务的性能下降,Agentic AI 会检测到合并模型的哪一部分负责。
- 动态调整模型权重: 如果反馈表明一个组件(例如,语言流畅性)正在改进,而另一个组件(例如,事实准确性)正在下降,Agentic AI 可以重新加权合并系统中不同模型的贡献。
让我们分解一个简单的工作流程 —
- 查询摄取和预处理: 主代理接收查询。收集用户历史记录、位置、时间以及之前的交互等信息以提供上下文。
- 意图和上下文分析: 一个轻量级的分类器分析查询以确定其意图。例如,它可能会决定查询是技术性的、情绪化的还是一般的。系统为每个已识别的意图输出一个置信度分数(例如,60% 技术,30% 共情,10% 一般)。
- 映射到专业模型: 每个意图都与一个或多个专业模型相关联。例如:路由到 Technical Troubleshooting Model 或 Medical Diagnostic Model(取决于领域)或路由到 General Conversational Model。
- 动态合并: 如果分类器对单个意图产生很强的置信度,则将查询转发到该专业模型。如果意图是混合的或临界的(例如,技术和会话方面都很高),主代理会计算加权平均值以合并相关模型的输出。
- 最终响应选择: 如果生成了多个模型输出(例如,在并行运行推理以进行验证时),主代理会根据预定义的标准(如置信度级别或排名)聚合或选择最佳响应。
- 反馈循环: 可以记录用户反馈以改进未来的模型选择决策。
结论
由 Agentic AI 驱动的模型合并代表了超越微调的重大飞跃,使 AI 系统能够变得更具适应性、效率和自我改进能力。通过智能地组合多个模型、动态调整权重并持续从反馈中学习,AI 可以在不同任务中实现更高的准确性、鲁棒性和多功能性。
然而,尽管它很有前景,但模型合并仍处于实验阶段,并带来了一些挑战:
- 高计算成本: 合并模型 — 尤其是使用 TIES、SLERP 或 DARE 等高级技术 — 需要大量的 GPU/TPU 资源,这使得大规模部署成本高昂。
- 系统复杂性增加: 实现动态路由和自适应加权增加了工程开销,需要复杂的决策框架。
- 延迟问题: 虽然模型合并减少了并行运行多个模型的需要,但实时调整和动态推理会增加处理延迟,这可能不适用于对延迟敏感的应用程序,如聊天机器人或自主系统。