
释放 Ai 潜力:利用子图和速度掌握 Llm 推断和 Rag 涡轮增压!
这篇文章是这个发人深省的系列中的第22篇。
今天,我们将探讨人工智能中的三个迷人主题,分别是:
- LLM推理:概述
- 子图RAG:高效子图检索与推理的侦探助手
- 快速RAG:您个性化的半结构化数据导航指南
精美的视频影像:
LLM推理:概述
高效的推理一直是LLM领域热门的研究方向。我最近阅读了一篇调查,想与大家分享该领域的概述。
LLM在推理过程中需要大量的计算资源、内存访问和内存使用。这可能会影响延迟、吞吐量、功耗和存储等效率指标,尤其是在资源受限的环境中。
图1:LLM部署的挑战。[来源]。
让我们首先回顾一下LLM的推理过程,我在之前的文章中也做了总结。
最常用的大型语言模型,尤其是仅解码器模型,通常使用自回归方法生成句子。
为了提高效率,键值(KV)缓存技术存储并重用多头自注意力模块中的先前键值对,从而显著减少生成延迟。
图2:预填充阶段(a)和解码阶段(b)的演示。[来源]。
在每个步骤中,模型处理整个令牌序列,包括输入令牌和先前生成的令牌,以预测下一个令牌。随着序列的增长,生成变得越来越耗时。
为了解决这个问题,引入了键值(KV)缓存技术。该方法在多头自注意力(MHSA)模块中存储并重用键(K)和值(V)对,显著减少延迟。这种广泛采用的优化将LLM推理过程分为两个阶段:
- 预填充阶段:模型计算并存储初始输入令牌的KV缓存,并生成第一个输出令牌(图2a)。
- 解码阶段:模型一次生成一个输出令牌,使用每个新令牌的键(K)和值(V)对更新KV缓存(图2b)。
图3:大型语言模型高效推理方法的分类。[来源]。
如图3所示,LLM推理优化可以分为三个层次:
- 数据级优化:通过优化输入提示(例如,输入压缩)或更好地结构化输出内容(例如,输出组织)来提高效率。这种方法不改变原始模型,避免了模型训练的高成本,尽管可能需要最小的辅助模型训练。
- 模型级优化:涉及设计更高效的模型架构(例如,结构设计)或模型压缩,以提高推理效率。这种方法通常需要预训练或微调,并可能对模型性能产生轻微影响。
- 系统级优化:针对推理引擎或服务系统,包括硬件加速。它避免了昂贵的模型训练,并且通常在模型性能上是无损的。
评论
在阅读完这些内容后,我的理解变得更加清晰。例如:
- RAG 和 自RAG 属于输入压缩。
- Mixtral 8x7B、MQA 和 GQA 是高效结构设计的例子。
- QLoRA 属于量化领域中的量化感知训练。
- FlexGen 涉及推理引擎中的后训练量化和卸载。
子图RAG: 高效子图检索与推理的侦探助手
生动的描述
知识图谱就像一个充满无数线索的犯罪现场。作为侦探助手,SubgraphRAG 快速过滤出最关键的证据(子图),基于这些线索。这些证据随后交给伟大的侦探(LLM),他利用这些证据来解开谜团,解释推理过程,并最终提供一个合理的答案。
概述
当前基于知识图谱的RAG框架在检索和推理之间的平衡上面临挑战:
- 基于LLM的方法需要多次昂贵的模型调用进行逐步图搜索,同时由于上下文的限制可能会错过相关信息。
- 像LSTM或GNN这样的轻量级模型更高效,但缺乏复杂的推理能力,常常错过关键证据。
- 固定子图检索方法提高了效率,但限制了LLM推理的证据覆盖。
SubgraphRAG 引入了一种基于轻量级多层感知器(MLP)的子图检索器,结合方向距离编码(DDE),以高效提取知识图谱中的相关子图。通过与未调优的LLM集成,以引导通过子图进行推理,SubgraphRAG实现了高效、灵活和可解释的知识增强生成。
图4:SubgraphRAG的框架。检索到的子图由并行提取的相关三元组组成。检索到的子图在形式和大小上是灵活的。在上述示例中,相关子图具有灵活且复杂的形式(既不是树也不是路径)。[来源]。
图4展示了SubgraphRAG的三步工作流程:
- 主题实体提取: 从查询中提取关键实体(例如,Elon Musk、Jeff Bezos、Bill Gates)
- 子图提取:结构特征构建: DDE(方向距离编码)映射知识图谱三元组与主题实体之间的结构关系,识别与查询相关的连接。图4显示了表示“公司创始人”和“商业伙伴关系”等关系的方向箭头。
- 提取相关三元组: 评分并并行检索前K个三元组以形成子图(例如,Nvidia与Tesla、Amazon、Microsoft的合作),使用轻量级多层感知器(MLP)。用于训练MLP的弱监督信号通过启发式规则生成,例如“从主题实体到答案实体的最短路径”,以构建近似相关子图,减少对精确标记数据的依赖。
- 与LLM推理: 将子图和查询输入LLM(例如,GPT-4)以生成答案。在图1中,答案是“Nvidia和NASA”,其中包含一个推理过程。
图5:在SubgraphRAG中使用的提示。[来源]。
评论
子图RAG的基于子图的检索机制和轻量级多层感知器(MLP)非常有创意。
然而,我有以下担忧:
- 子图规模的动态调整: 子图大小K适应语言模型的上下文窗口,但最佳大小的确定仍不明确。较大的子图可能存在冗余风险,而较小的子图可能会错过关键证据。
- 三元组评分的局限性: 轻量级MLP评分方法以效率换取复杂性,可能会在多实体场景中错过高阶关系。该方法过于依赖预训练的嵌入,而不是KG结构。
快速RAG: 您的个性化半结构化数据导航指南
生动描述
想象一下探索一个拥有隐藏景点的广阔城市。传统的导游(如VectorRAG或GraphRAG)可能会带您进行一次通用的游览,无论相关与否,涵盖所有内容。
快速RAG 根据您的兴趣创建一个定制行程(模式学习),并仅突出您关心的地方(脚本学习)。这样,您可以在更短的时间内看到更多,而不会错过关键景点。
概述
当前的RAG方法(如VectorRAG和GraphRAG)在处理网络管理中生成的复杂半结构化数据时效率低下,面临时间、成本和准确性方面的挑战。
快速RAG旨在以成本效益高的方式高效处理现代网络生成的大量半结构化数据。通过引入模式学习和脚本学习来提取和组织数据,避免将所有数据直接输入大型语言模型(LLMs),从而节省资源。
图6:快速RAG架构。[来源]。
快速RAG的主要步骤如下:
- 块采样:使用关键词提取和熵分析从半结构化数据中提取代表性样本,以选择捕捉数据主要特征的最小集合。
- 模式学习:根据选定的样本生成JSON模式,以定义实体类型及其属性,然后迭代优化模式以确保完整性和准确性。
- 脚本学习:基于样本数据和模式,生成和优化解析函数以实现自动化数据处理。
- 知识图谱创建:将解析后的JSON对象转换为知识图谱。例如,实体成为带有其类型作为标签的节点,简单属性成为节点属性,嵌套属性成为通过边连接的子节点。
- 信息检索:通过使用图查询、文本搜索、组合查询或混合查询方法,将用户输入转换为查询语句,从知识图谱中生成精确答案。
评论
以下是我的想法:
- 快速RAG利用知识图谱来组织数据是创新的,但这引发了关于维护这些图谱的成本以及在处理实体之间复杂关系时实时更新它们的挑战的问题。
- 此外,尽管当前的实验集中在网络日志和配置文件上,但其在更复杂的数据格式、高噪声水平或结构异常下的性能仍有待深入探索。