2024技术总结
嘿,大家好!作为一名技术宅,我在2024年与AI的大型语言模型(LLM)技术有了不少“亲密接触”,感觉就像是和一位日益聪明的老友并肩前行。
这一年,LLM真的让我大开眼界。从Gemini 1.5 Pro到Claude 3系列,这些名字已经不再只是冰冷的代码,它们更像是我的工作伙伴,每一次升级都带来满满的惊喜。它们不仅文字处理游刃有余,连图像、音频、视频这些“跨界”任务也玩得风生水起,让我这个老技术人员都自愧不如。LLM就像是无所不在的助手,为我们的生活带来了实实在在的便利。有时候,我甚至觉得它们比我自己还更懂我。
当然,和LLM的“相处”也不是一帆风顺的。随着它们越来越聪明,推理效率和成本问题也逐渐浮出水面。这就像是我们人类的大脑,虽然聪明,但也需要足够的休息和营养。于是,我开始研究新的算法和训练策略,希望能让LLM们“吃得少、跑得快”。
- 技术总结类:特定技术领域的年度深度总结、技术工具与平台的年度使用心得、技术项目实战经验与成果展示等;
- 技术洞察类:前沿技术趋势洞察与分析、跨领域技术融合与创新实践、技术对社会与人文的影响深度思考等。
今天还是按照要求做一个技术向总结,希望下述内容对大家有所帮助!
1. RAG技术全栈进化解析:RAG技术升级、评估度量指标、应用场景、生态总结、落地实践问题解决、垂直场景应用、多模态RAG探索(✨)
- 大模型碰到的挑战
大型语言模型展示了强大的能力,但也面临着幻觉、过时知识和不透明推理等挑战。检索增强生成(RAG)通过整合外部数据库的知识,提高了生成内容的准确性和可信度。RAG 将大型语言模型的内在知识与外部数据库融合,为知识密集型任务带来了前景。
大语言模型挑战 | RAG 技术解决方案 |
---|---|
虚构信息 | 通过整合外部数据库的知识,提升生成的准确性和可信度 |
过时知识 | 允许持续知识更新和集成领域特定信息 |
非透明推理 | RAG 将 LLMs 固有的知识与外部数据库庞大、动态的知识库有机结合,提高透明度和可追溯性 |
- RAG 与其它技术比较
在大语言模型的优化方法中,RAG 经常与 Fine-tuning(FT)和提示工程相比较。 我们用象限图从外部知识需求和模型适配需求两个维度来说明三种方法的差异。
- 提示工程:利用模型的固有功能,而对外部知识和模型适应的需求最少。
- RAG:可以比作为信息检索提供量身定制的教科书模型,非常适合精确的信息检索任务。 早期阶段(Naive RAG),几乎不需要对模型进行修改
- FT:需要进一步训练模型,针对不同下游特定任务,需要重新训练整个庞大的模型;相当于学生随着时间的推移内化知识,适用于需要复制特定结构、风格或格式的场景。
有人提出过这个疑问,为什么要用 RAG 来做增强,而不选择比较容易想到的微调来做,这里提及了 RAG 的优势以及和微调的差异,在这里列出两者的对比,主要是为了让大家在进行问题定位和解决方案思考时能参考,权衡好什么时候该用哪些部分。
RAG | 微调 (Fine-tuning) | |
---|---|---|
知识更新 | 直接更新检索知识库,确保信息持续更新,无需频繁重新训练,非常适合动态变化的数据环境。 | 存储静态数据,需要重新训练用于知识和数据的更新。 |
外部知识 | 擅长利用外部资源,特别适合处理文档或其他结构化 / 非结构化数据库。 | 可用于将预训练中外部学习到的知识与大语言模型保持一致,但对于频繁变化的数据源可能不太实用。 |
数据处理 | 对数据的处理和操作要求极低。 | 依赖于构建高质量的数据集,有限的数据集可能无法显著提高性能。 |
模型定制 | 侧重于信息检索和融合外部知识,但可能无法充分定制模型行为或写作风格。 | 允许根据特定风格或术语调整 LLM 行为、写作风格或特定领域知识。 |
可解释性 | 答案能够追溯到具体的数据来源,提供更高的可解释性和可追踪性。 | 就像一个黑盒子,并不总是清楚模型为什么会做出某种反应,可解释性相对较低。 |
计算资源 | 需要计算资源来支持检索策略和数据库相关技术。外部数据源的整合和更新需保持维护。 | 有必要准备和整理高质量的训练数据集,确定微调目标,并提供相应的计算资源。 |
延迟要求 | 因涉及数据检索,可能带来较高的延迟。 | 经过微调的大语言模型 (LLM) 可以不通过检索直接回应,降低延迟。 |
降低幻觉 | 由于每个回答都基于检索到的实际证据,因此本质上更不容易产生错误或虚构的回答。 | 根据特定领域的数据训练模型,有助于减少幻觉,但面对未训练过的输入时仍可能出现幻觉。 |
伦理和隐私问题 | 从外部数据库存储和检索文本可能引起伦理和隐私方面的担忧。 | 训练数据中的敏感内容可能会引起伦理和隐私方面的问题。 |
- 从演进范式角度分类
RAG 研究范式在不断发展和演进,我们将其分为三个阶段:初级 RAG、高级 RAG 和模块化 RAG。虽然早期的 RAG 在成本效益上表现良好,并且性能优于传统的大语言模型 (LLM),但它仍面临着诸多挑战。高级 RAG 和模块化 RAG 的设计是为了解决原始 RAG (Naive RAG) 的特定不足。下面是三种开发范式解释和相应用组件部分示意图
- 朴素 RAG:主要由三部分组成:索引、检索和生成,直接将输入数据向量化,然后对向量数据库进行匹配,最后将输入数据与向量数据库匹配结果共同放入大模型中生成最终结果;
- 高级 RAG:增加了对数据的预筛选,围绕预检索和后检索提出了多种优化策略,其过程与朴素 RAG 相似,仍然遵循链式结构。
- 模块化 RAG:继承和发展了以前的范式,整体上显示出更大的灵活性。这体现在引入多个特定的功能模块和替换现有模块上。整个过程不仅限于顺序检索和生成,还包括迭代和自适应检索等方法。
- 从检索与生成协同角度
根据检索器如何增强生成器,我们将 RAG 基础范式分为 4 个不同类别:
- 基于查询的 RAG:利用用户 query 检索得到相关文档,将检索结果跟用户 query 拼接到一起作为生成模型的输入。这种方式是直接利用外部检索知识来指导生成模型,是目前 RAG 的主流范式。
- 基于潜在表征的 RAG:利用用户 query 检索得到相关文档,并获取对应文档的向量表征,在生成模型生成阶段融入知识文档的表征信息。这是一种隐式利用外部检索知识指导生成模型的方式。
- 基于 Logit 的 RAG:生成模型在 decoder 阶段计算下一个 token 的 logit 时,同时考虑生成预测的结果跟检索模块返回的信息。这种方式将检索模块与生成模块视为两个独立的链路,再联合两者的 logit 值。
- Speculative RAG:利用检索模块来替代生成模块的方式,主要用于节省资源跟加速文本生成。这种方式提供一段候选回复,让生成模型判断这段候选回复是否适合作为最终结果。
- .RAG 核心结构
RAG 流程中不可或缺的核心技术,主要是 “检索”、“生成” 和“增强”三个部分,通过整理一个脑图,简述下这些技术间如何错综复杂地协作以形成一个有凝聚力且有效的 RAG 框架。
- 检索:从数据源中高效检索相关文档至关重要。 其中涉及到几个关键问题,如检索源、检索粒度、检索的预处理以及相应嵌入模型的选择等。
- 生成:检索后,将所有检索到的信息直接输入大语言模型来回答问题并不是一个好的做法。 需要从调整检索内容和调整大语言模型两个角度介绍调整。
- 增强:在 RAG 领域,标准实践通常涉及单个(一次)检索步骤,然后生成,这可能导致效率低下,有时通常不足以满足需要多步骤推理的复杂问题。
- RAG 的增强功能
RAG 增强是整体体系的重点,从多个角度我整理了下增强 RAG 性能的方法。 从整个 RAG 流程角度,我们根据现有方法的增强目标将其分为 5 个不同的组:输入、检索器、生成器、结果和整个管道。单从 RAG 检索一个点来看,检索增强可以包含迭代、递归 & 自适应三个方法。
- 检索增强分类
除了最常见的一次检索之外,RAG 还包括三种类型的检索增强过程。
- 迭代检索:涉及检索和生成之间的交替,允许在每一步从知识库中获得更丰富、更有针对性的上下文。
- 递归检索:涉及逐步细化用户查询并将问题分解为子问题,然后通过检索和生成不断解决复杂问题。
- 自适应检索:侧重于使 RAG 系统能够自主确定是否需要外部知识检索以及何时停止检索和生成,通常利用 LLM 生成的特殊 Token 进行控制。
- 过程增强分类
根据现有方法的增强目标将其分为 5 个不同的部分:输入、检索器、生成器、结果和整个管道。针对这些部分有针对性的相应增强方式和方法。
- 评估
RAG 在 NLP 领域的快速发展和广泛采用,将 RAG 模型的评估推向了大语言模型界研究的前沿。 将 RAG 技术引进到大模型应用场景,我们需要了解和优化 RAG 模型在不同应用场景下的性能。下面简要讲讲 RAG 的主要下游任务、数据集以及如何评估 RAG 系统。
- RAG 的下游任务
RAG 的核心任务仍然是问答(QA),包括传统的单跳 / 多跳 QA、多选、特定领域的 QA 以及适合 RAG 的长格式场景。 除了 QA 之外,RAG 正在不断扩展到多个下游任务,例如信息提取(IE)、对话生成、代码搜索等。 RAG 的主要下游任务及其相应的数据集总结在表:
任务 | 子任务 | 数据集 |
---|---|---|
问答 | Single-hop | Natural Question(NQ)/TrivaQA(TQA)/SQuAD/Web Questions(WebQ)/PopQA/MS MARCO |
Multi-hop | HotpotQA/2WikiMultiHopQA/MuSiQue | |
Long-form QA | ELI5/NarrativeQA(MQA)/ASQA/QMSum(QM) | |
Domain QA | Qasper/COVID-QA/CMB/MMCU_Medical | |
Multi-Choice QA | QuALITY/ARC/CommonsenseQA | |
Graph QA | GraphQA | |
对话 | Dialog Gentration | Wizard of Wikipedia(WoW) |
Personal Dialog | KBP/DuleMon | |
Task-oriented Dialog | CamRest | |
Recommmendation | Amazon(Toys, Sport, Beauty) | |
信息抽取 | Event Argument Extraction | WikeEvent/RAMS |
Relation Extraction | T-REx, ZsRE | |
推理 | Commonsense Reasoning | HellaSwag |
CoT Reasoning | CoT Reasoning | |
Complex Reasoning | CSQA | |
其它 | Language Understanding | MMLU |
Language Modeling | WikiText-103/StrategyQA | |
Fact Checking/Verification | FEVER/PubHealth | |
Text Gentration | Biography | |
Text Summarization | WikiASP/XSum | |
Text Classification | VioLens/TREC | |
Sentiment | SST-2 | |
Code Search | CodeSearchNet | |
Robustness Evaluation | NoMIRACL | |
Math | GSM8K | |
Machine Translation | JRC-Acquis |
- 的评估项及度量指标
RAG 模型的当代评估实践强调三个主要质量分数和四个基本能力,它们共同指导 RAG 模型的两个主要目标的评估:检索和生成。其中* 质量分数:上下文相关性,答案忠实性,答案相关性* 基本能力:噪声鲁棒性,否定拒绝,信息集成,反事实稳健性适用于 RAG 评估方面的指标摘要,分别对应质量分数和基本能力对应的度量标准,如下表所示:
上下文相关性 | 答案忠诚性 | 回答相关性 | 噪音鲁棒性 | 否定拒绝 | 信息整合 | 反事实稳健性 | |
---|---|---|---|---|---|---|---|
Accuracy | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
EM | ✓ | ||||||
Recall | ✓ | ||||||
Precision | ✓ | ✓ | |||||
R-Rate | ✓ | ||||||
Cosine Similarity | ✓ | ||||||
Hit Rate | ✓ | ||||||
MRR | ✓ | ||||||
NDCG | ✓ | ||||||
BLEU | ✓ | ✓ | ✓ | ||||
ROUGE/ROUGE-L | ✓ | ✓ | ✓ |
- RAG 的评估框架及 Benchmark
业界提出了一系列基准测试和工具来促进 RAG 的评估。这些工具提供的定量指标不仅可以衡量 RAG 模型的性能,还可以增强对模型在各个评估方面的能力的理解。 RGB、RECALL 和 CRUD 等著名基准,专注于评估 RAG 模型的基本能力。 同时,最先进的自动化工具如 RAGAS、ARES 和 TruLens 雇用大语言模型来判定质量分数。 这些工具和基准共同构成了用于系统评估 RAG 模型的强大框架,如表所示:
评估框架 | 评估目标 | 评估方面 | 定量指标 |
---|---|---|---|
RGB† | 检索质量 生成质量 | 噪声鲁棒性否定性拒绝 信息集成 反事实鲁棒性 | AccuracyEM AccuracyAccuracy |
RECALL† | 生成质量 | 反事实鲁棒性 | R-Rate (再出现率) |
RAGAS‡ | 检索质量 生成质量 | 上下文相关性 答案忠诚性答案相关性 | *余弦相似度 |
ARES‡ | 检索质量生成质量 | 上下文相关性 答案忠诚性答案相关性 | Accuracy AccuracyAccuracy |
TruLens‡ | 检索质量生成质量 | 上下文相关性 答案忠诚性 答案相关性 | * |
CRUD† | 检索质量生成质量 | 创意生成 知识密集型 QA 纠错 总结 | BLEUROUGE-L BertScore RAGQuestEval |
† 代表基准,‡ 代表工具。* 表示自定义量化指标,偏离传统指标。鼓励读者根据需要查阅相关文献,了解与这些指标相关的具体量化公式。
- RAG 的生态总结
下面是基于前面 RAG 各部分的一个生态全景图,包含了 RAG 的下游任务、RAG 范式,RAG 评估、RAG 的核心技术,RAG 的展望等。
2.总结向文章
GraphRAG、Naive RAG框架总结主流框架推荐(共23个)
GraphRAG、Naive RAG框架总结主流框架推荐(共23个):LightRAG、nano-GraphRAG、Fast-GraphRAG、Dify、RAGflow等
设想你正致力于构建一个智能问答系统,该系统旨在从庞大的知识库中迅速而精确地提取关键信息,并据此生成自然流畅的回答。然而,随着数据规模的不断扩大,系统面临着严峻的挑战:检索效率逐渐下滑,生成内容的质量亦趋于下降。这正是当前众多检索增强型生成(RAG)系统亟需解决的核心问题——如何在数据冗余、检索效率低下以及生成内容不相关之间找到一个最佳的平衡点。
RAG 的发展瓶颈:
传统 RAG 系统通过检索模型提取最相关的文档,再交给生成模型处理。但这种流水线式的设计存在两个主要问题:
-
检索不够精确:简单的相似性检索模型容易漏掉重要信息或引入噪声数据。
-
生成效率低下:无关或低质量的上下文增加了生成负担,降低了回答的质量和速度。
-
推荐:LightRAG
-
论文
:LightRAG: Simple and Fast Retrieval-Augmented Generation https://arxiv.org/abs/2410.05779v1 -
Github 地址
:https://github.com/HKUDS/LightRAG
LightRAG在信息之间保持关系,能产生更优质的答案,同时其计算效率也更高。与之前的RAG模型相比,LightRAG引入了多项创新功能:
图增强文本索引
:通过将图结构纳入文本索引,LightRAG能够建立相关实体之间的复杂关系,从而提升系统的上下文理解能力。双层检索系统
:LightRAG采用双层检索机制,能够同时处理低层(具体细节)和高层(抽象概念)的查询。例如,它不仅可以回答“谁写了《傲慢与偏见》?”这样具体的问题,也能应对“人工智能如何影响现代教育?”这样抽象的问题。增量更新算法
:该模型使用增量更新算法,以便在不重建整个数据索引的情况下,快速整合最新信息。这种方法能够选择性地索引新或修改过的内容,尤其适用于动态环境,比如新闻或实时分析,数据变化频繁的场景。
LightRAG的轻量化特性使其能够快速处理大规模知识库并生成文本,减少了计算成本,适合更多开发者和小型企业使用。
LightRAG的架构主要分为两个部分:基于图的文本索引和双层检索。其工作流程可以总结如下:
图形文本索引
:将原始文本文件分割成小块,便于高效检索。知识图谱构建
:利用大语言模型(LLM)进行实体和关系的提取,并生成文本的键值对(K, V)。信息检索
:通过生成的键值对进行检索,包括:详细层面
:关注于文档的具体小部分,允许精确的信息检索。抽象层面
:关注整体意义,帮助理解不同部分之间的广泛连接。
通过这两种检索方式,LightRAG能够在小文档部分中找到相关信息,并理解不同文档之间的更大、相互关联的概念。
关键词提取,LightRAG 中有 Prompts 示例:
示例 1:
查询:"国际贸易如何影响全球经济稳定?"
################
输出:
Output:
{
{
"high_level_keywords": ["国际贸易", "全球经济稳定", "经济影响"],
"low_level_keywords": ["贸易协定", "关税", "货币汇率", "进口", "出口"]
}}
LightRAG的评估成效显著,其在检索精确度、模型可调性、响应速度以及接纳新信息的能力等多个维度上,均展现出了超越其他同类RAG模型,如NaiveRAG、RQ-RAG、HyDE以及微软研发的GraphRAG的优势。通过具体的案例研究分析,我们发现,尽管GraphRAG凭借其基于图的知识应用,在文档检索与文本生成方面表现不俗,但其运行所需资源更为庞大,进而导致了更高的成本投入。
- 案例研究:LightRAG与基线方法GraphRAG的比较
第三方基于 Streamlit 实现了一版开源的 LightRAG GUI,代码地址:https://github.com/aiproductguy/lightrag-gui/blob/demo2/notebooks/streamlit-app-lightrag.py
国内大模型+Agent应用案例精选,以及主流Agent框架开源项目推荐
智胜未来:国内大模型+Agent应用案例精选,以及主流Agent框架开源项目推荐
- Agent详细介绍
AI Agent框架(LLM Agent):LLM驱动的智能体如何引领行业变革,应用探索与未来展望
未来已来:LLMops如何重塑AI-native新范式的运维格局[行业范式]、以及主流LLMops推荐
从众中取优:开源Agent市场深度调研,近20款主流开源Agent框架的技术亮点与适用场景深度剖析[Multi-Agent 框架详解]
AI Agent技术的最新进展与改变世界的典型项目巡礼【含AI Agent框架项目介绍】
- 实战
AI Agent【项目实战】:MetaGPT遇上元编程,重塑复杂多智能体协作的边界
超越单兵作战:多智能体 Multi-Agent System (MAS)—多智能体框架实战
RAG+AI工作流+Agent:LLM框架该如何选择,全面对比MaxKB、Dify、FastGPT、RagFlow、Anything-LLM,以及更多推荐
RAG+AI工作流+Agent:LLM框架该如何选择,全面对比MaxKB、Dify、FastGPT、RagFlow、Anything-LLM,以及更多推荐
-
MaxKB/Dify的优势与劣势
-
优势
-
大模型接入灵活性
:提供了多种大模型接入方式,支持多种API接口,使得开发者可以根据需求灵活选择和切换模型,这对于需要高性能模型的应用场景尤为重要。 -
强大的Chat功能
:Chat功能不仅支持多轮对话,还能通过智能推荐和上下文理解提升用户体验,适用于需要复杂交互的场景。 -
丰富的知识库支持
:内置了知识库管理系统,支持多种数据格式的导入和导出,便于用户管理和利用知识资源。 -
高效的Workflow设计
:Workflow设计简洁直观,支持拖拽式操作,使得非技术人员也能快速上手,大大降低了使用门槛。 -
Prompt IDE
:提供的Prompt IDE工具,让开发者可以更直观地调试和优化提示词,提升了开发效率。
-
-
劣势
-
学习曲线
:虽然界面设计较为友好,但对于初学者来说,仍需要一定时间来熟悉其工作流程和功能。 -
社区支持
:相较于一些成熟的开发平台,社区活跃度和资源丰富度还有待提升,这可能会影响到开发者在遇到问题时的解决速度。 -
定制化程度
:虽然Dify提供了丰富的功能,但在某些高度定制化的需求上,可能还需要进一步的开发和调整。
-
-
FastGPT/RagFlow的优势与劣势
-
优势
-
Agent智能体
:Agent智能体功能强大,能够自动执行复杂任务,减少了人工干预的需求,适用于需要自动化处理大量任务的场景。 -
LLMOps支持
:提供了LLMOps支持,使得开发者可以更方便地进行模型训练、优化和部署,这对于AI模型的持续迭代和优化至关重要。 -
后端即服务
:提供了后端即服务的功能,简化了后端开发流程,使得开发者可以更专注于前端和业务逻辑的开发。 -
强大的RAG引擎
:RAG引擎能够高效地处理和检索大量数据,适用于需要快速响应和高吞吐量的应用场景。
-
-
劣势
-
功能复杂性
:FastGPT的功能较为复杂,对于初学者来说,可能需要较长时间来掌握其使用方法和技巧。 -
部署难度
:相较于一些轻量级的开发平台,FastGPT的部署过程可能更为复杂,需要一定的技术背景和经验。 -
用户界面
:虽然FastGPT的功能强大,但其用户界面可能不如一些竞争对手直观和友好,这可能会影响到用户的使用体验。
-
-
根据需求选择平台
选择合适的平台首先要明确自己的需求。Dify和FastGPT各有特点,适用于不同的应用场景。
-
MaxKB/Dify:适合需要快速构建和部署AI应用的开发者,提供了丰富的预设模板和集成工具,使得开发者可以快速上手,尤其适合初学者和需要快速验证想法的团队。
-
FastGPT/RagFlow:适合需要高度定制化和复杂工作流的企业级用户,提供了强大的RAG引擎和Workflow orchestration,能够处理复杂的业务逻辑和数据处理需求。
-
在选择平台时,应考虑以下因素:
-
项目规模:如果是小型项目或初创团队,MaxKB/Dify的快速部署和简单易用性可能更适合。如果是大型企业级项目,FastGPT/RagFlow的强大功能和定制化能力更为合适。
-
技术栈:考虑团队现有的技术栈和成员的技术背景。在技术实现上有所不同,选择与团队技术栈匹配的平台可以减少学习成本和开发难度。
-
功能需求:明确项目所需的核心功能,如大模型接入、Chat功能、知识库等。Dify和FastGPT在这些功能上各有优势,根据具体需求进行选择。
-
-
社区与支持对比
社区支持和资源丰富度对于平台的选择也至关重要。
-
MaxKB/Dify:拥有一个活跃的社区,提供了丰富的文档、教程和示例代码。社区成员经常分享使用心得和解决方案,对于遇到的问题可以快速得到帮助。
-
FastGPT/RagFlow:社区相对较小,但提供了专业的技术支持团队。对于企业级用户,FastGPT提供了定制化的技术支持和咨询服务,确保项目的顺利进行。
-
在选择平台时,应考虑以下因素:
-
社区活跃度:活跃的社区意味着更多的资源和更快的解决问题速度。社区活跃度较高,适合需要快速解决问题的开发者。
-
技术支持:对于企业级用户,专业的技术支持至关重要。提供了专业的技术支持,适合对技术支持有较高要求的用户。
-
-
部署与使用便捷性
部署和使用的便捷性直接影响开发效率和成本。
-
MaxKB/Dify:提供了简单易用的界面和一键部署功能,使得开发者可以快速将应用部署到云端或本地。文档详细,适合初学者快速上手。
-
FastGPT/RagFlow:部署相对复杂,需要一定的技术背景和配置。提供了强大的定制化能力,适合对性能和功能有较高要求的用户。
-
在选择平台时,应考虑以下因素:
-
部署难度:MaxKB/Dify的部署过程简单,适合需要快速部署的开发者。FastGPT/RagFlow的部署相对复杂,但提供了更多的配置选项。
-
使用便捷性:MaxKB/Dify的用户界面友好,操作简单。FastGPT/RagFlow的用户界面相对复杂,但提供了更多的功能和定制化选项。
-
LLM大模型部署实战指南
LLM大模型部署实战指南:Ollama简化流程,OpenLLM灵活部署,LocalAI本地优化
大型语言模型微调Fine-Tuning技术——14种主流方法的原理、适用场景及实践指南
-
快速总结
-
BitFit
对微调机制的一种积极探索,也很简单,通过仅调整 bias 效果就能有不错的效果,但没有具体阐述原理,就是通过猜测加实验得到的结果。同时,作者提出一个观点:微调的过程不是让模型适应另外的数据分布,而是让模型更好的应用出本身的表征能力。特点:- 训练参数量极小(约 0.1%)。
- 在大部分任务上效果会差于 LoRA、Adapter 等方法。
-
Prefix Tuning
在每一个 Transformer 层都带上一些 virtual token 作为前缀,以适应不同的任务。特点:
- 前缀 Token 会占用序列长度,有一定的额外计算开销。
- Prefix Tuning 的线性插值是比较复杂的。
-
Prompt Tuning
该方法可以看着是 Prefix Tuning 的简化版本,针对不同的任务,仅在输入层引入 virtual token 形式的软提示(soft prompt)。特点:* 相对于 Prefix Tuning,参与训练的参数量和改变的参数量更小,更节省显存。- 对一些简单的 NLU 任务还不错,但对硬序列标记任务(即序列标注)表现欠佳。
-
P-Tuning
将 Prompt 转换为可以学习的 Embedding 层,并用 MLP+LSTM 的方式来对 Prompt Embedding 进行一层处理。相比 Prefix Tuning,仅在输入层加入的可微的 virtual token;另外,virtual token 的位置也不一定是前缀,插入的位置是可选的。特点:
- 引入一个 prompt encoder(由一个双向的 LSTM + 两层 MLP 组成)来建模 virtual token 的相互依赖会收敛更快,效果更好。
-
P-Tuning v2
该方法在每一个 Transformer 层都加入了 prompt token 作为输入,引入多任务学习,针对不同任务采用不同的提示长度。并且回归传统的分类标签范式,而不是映射器。特点:
- 解决了 Prompt Tuning 无法在小模型上有效提升的问题。
- 移除了对模型效果改进较小的重参数化的编码器(如:Prefix Tuning 中的 MLP、P-Tuning 中的 LSTM)。
- 对于一些复杂的硬序列标记任务(即序列标注)取得了不错的效果。
-
Adapter Tuning
该方法设计了 Adapter 结构,并将其嵌入 Transformer 的结构里面,针对每一个 Transformer 层,增加了两个 Adapter 结构,在训练时,固定住原来预训练模型的参数不变,只对新增的 Adapter 结构和 Layer Norm 层进行微调。特点:- 通过在 Transformer 层中嵌入 Adapter 结构,在推理时会额外增加推理时长。
-
AdapterFusion
一种融合多任务信息的 Adapter 的变体,在 Adapter 的基础上进行优化,通过将学习过程分为两阶段来提升下游任务表现。
-
AdapterDrop
该方法在不影响任务性能的情况下,对 Adapter 动态高效的移除,尽可能的减少模型的参数量,提高模型在反向传播(训练)和正向传播(推理)时的效率。特点:- 通过从较低的 Transformer 层删除可变数量的 Adaper 来提升推理速度。 当对多个任务执行推理时,动态地减少了运行时的计算开销,并在很大程度上保持了任务性能。
-
LoRA
该方法通过低秩分解来模拟参数的改变量,从而以极小的参数量来实现大模型的间接训练。特点:- 将 BA 加到 W 上可以消除推理延迟。
- 可以通过可插拔的形式切换到不同的任务。
- 设计的比较好,简单且效果好。
-
AdaLoRA
对 LoRA 的一种改进,它根据重要性评分动态分配参数预算给权重矩阵,将关键的增量矩阵分配高秩以捕捉更精细和任务特定的信息,而将较不重要的矩阵的秩降低,以防止过拟合并节省计算预算。
-
QLoRA
使用一种新颖的高精度技术将预训练模型量化为 4 bit,然后添加一小组可学习的低秩适配器权重,这些权重通过量化权重的反向传播梯度进行微调。特点:- 使用 QLoRA 微调模型,可以显著降低对于显存的要求。同时,模型训练的速度会慢于 LoRA。
-
MAM Adapter
一种在 Adapter、Prefix Tuning 和 LoRA 之间建立联系的统一方法。最终的模型 MAM Adapter 是用于 FFN 的并行 Adapter 和 软提示的组合。特点:- 整体上来说,最终的模型 MAM Adapter 效果会优于单个高效微调方法。
-
UniPELT
一种将不同的 PELT 方法 LoRA、Prefix Tuning 和 Adapter 作为子模块,并通过门控机制学习激活最适合当前数据或任务的方法。特点:- 相对于 LoRA,BitFit,Prefix-tuning,训练的参数量更大;同时,推理更耗时;并且,输入会占用额外的序列长度。
- 多种 PELT 方法的混合涉及 PLM 的不同部分对模型有效性和鲁棒性都有好处。