RAGCache多级动态缓存管理系统,让RAG推理更高效|RAG论文分享

news2024/11/23 15:47:58

在这里插入图片描述

今天为大家分享北京大学和字节跳动联合发表的一篇关于加速RAG推理的论文:

RAGCache: Efficient Knowledge Caching for Retrieval-Augmented Generation

论文地址:https://arxiv.org/abs/2404.12457

1.论文概述

Retrieval-Augmented Generation (RAG) 是一种将检索机制与生成模型相结合的方法,通过首先检索与问题相关的文档或知识,然后生成模型基于检索结果生成答案或文本。最近的研究表明,RAG可以显著提高各种基准的生成质量。

然而,RAG的知识注入导致喂入大模型的序列信息增多,这引入了长序列生成的问题,导致较高的计算和存储开销。例如,初始请求包含100个token,检索到的文档总共包含1000个token。因此,增强请求的额外计算和内存成本比原始请求高10倍左右。资源需求的不断增加有效处理RAG请求提出了巨大挑战。

为了解决这个问题,本文设计了一个特定于RAG的多级动态缓存管理系统RAGCache。本文发现了两个系统优化的机会。首先,相同文档在多个请求中重复出现,使得此类文档的LLM推理中间状态 (Key Value tensors) 可以共享。其次,一小部分文档占了大多数检索请求。因此,缓存这些频繁访问的文档的中间状态,可以减轻计算负担。

基于这个观察,RAG设计了一个知识树,它将检索到的文档的中间状态 (Key Value tensors) 适配到GPU和主机内存中。访问频率较高的文档缓存在快速的GPU内存中,访问频率较低的文档缓存在较慢的主机内存中。实验结果表明,与集成了Faiss的vLLM相比,RAGCache将TTFT时间降低了4倍,吞吐量提高了2.1倍。

2.核心方法

2.1 系统架构图

RAGCache架构如上图所示。

当接收到一个用户请求时,RAG Controller首先从外部数据库 (External Database) 检索相关的文档。然后,这些文档被转发到Cache Retriever 以查找匹配的Key Value tensors。如果缓存中没有Key Value tensors,RAGCache会指示LLM推理引擎 (LLM Inference Engine) 生成新的tokens。

相反,如果Key Value tensors可用,则带有Key Value tensors的请求将转发到LLM推理引擎,然后该引擎使用前缀缓存内核来生成标记。

生成第一个标记后,Key Value tensors被转发回RAG Controller,该控制器Key Value tensors并刷新缓存的状态。最后,生成的答案作为响应传递给用户。

2.2 缓存结构和替换策略

多个请求能够共享Key Value tensors的部分要求前缀相同,即必须保持相同的顺序。因此,为了在保持文档顺序的同时实现快速检索,RAGCache使用知识树来构建文档的键值张量,如下图所示。

该树将每个文档分配给一个节点,节点指的是文档的键值张量的内存地址。从根到特定节点的路径表示文档序列。RAGCache通过沿着这些路径的前缀匹配来检索张量。在前缀匹配过程中,如果后续文档不在子节点中,则立即终止遍历,并返回标识的文档序列。

替换策略 Prefix-aware Greedy-Dual-Size-Frequency (PGDSF):利用知识树,RAGCache 必须确定每个节点在分层缓存中的位置。访问频率较高的节点最好存储在GPU内存中,以提高访问速度,而访问频率较低的节点则分配给速度较慢的主机内存或直接释放。

为了优化节点放置,RAGCache采用了PGDSF替换策略。PGDSF根据每个节点的访问频率、大小和访问成本计算优先级。此方法通过维护优先级最高的节点来利用有限的存储容量,其优先级定义如下:

时间越新优先级越高,访问频率越大优先级越高,平均成本越大优先级越高。

3.精彩段落

在这里插入图片描述

4.总结

RAGCache是专为RAG定制设计的新型多级动态缓存系统。RAGCache缓存了多个请求中检索到的文档的Key Value以最大限度地减少冗余计算。RAGCache的核心是一棵知识树,可确保缓存最关键的键值张量。

RAGCache还实现了一个全局RAG控制器,用于协调外部知识数据库和LLM推理引擎之间的交互。该控制器通过系统优化得到增强,包括缓存感知重新排序和动态推测流水线。

那么,如何系统的去学习大模型LLM?

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

作为一名热心肠的互联网老兵,我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。

但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

所有资料 ⚡️ ,朋友们如果有需要全套 《LLM大模型入门+进阶学习资源包》,扫码获取~
在这里插入图片描述

篇幅有限,部分资料如下:
👉LLM大模型学习指南+路线汇总👈

💥大模型入门要点,扫盲必看!
在这里插入图片描述
💥既然要系统的学习大模型,那么学习路线是必不可少的,这份路线能帮助你快速梳理知识,形成自己的体系。
在这里插入图片描述

👉大模型入门实战训练👈

💥光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
在这里插入图片描述

👉国内企业大模型落地应用案例👈

💥《中国大模型落地应用案例集》 收录了52个优秀的大模型落地应用案例,这些案例覆盖了金融、医疗、教育、交通、制造等众多领域,无论是对于大模型技术的研究者,还是对于希望了解大模型技术在实际业务中如何应用的业内人士,都具有很高的参考价值。 (文末领取)
在这里插入图片描述
💥《2024大模型行业应用十大典范案例集》 汇集了文化、医药、IT、钢铁、航空、企业服务等行业在大模型应用领域的典范案例。

在这里插入图片描述

👉LLM大模型学习视频👈

💥观看零基础学习书籍和视频,看书籍和视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。 (文末领取)
在这里插入图片描述

👉640份大模型行业报告👈

💥包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。
在这里插入图片描述

👉获取方式:
这份完整版的大模型 LLM 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

😝有需要的小伙伴,可以Vx扫描下方二维码免费领取🆓
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1970291.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

聊聊Netty中几个重要的生命周期

写在文章开头 Netty内置了各种开箱即用的处理器,把握好处理器中几个比较重要的生命周期回调用助于我们编写出强大的网络通信程序,所以本文将基于一个简单的示例和源码介绍一下Netty中几个比较重要的生命周期函数,希望对你有帮助。 Hi&#x…

九州未来参编,《边缘计算产业发展研究报告》正式发布

日前,由中国通信标准化协会主办的第四届“云边协同”大会暨首届分布式算力论坛在北京成功举办。大会聚焦云边端分布式算力领域技术新突破、应用新场景以及发展新价值,搭建政产学研用交流对接平台,深化产业链协同开放合作。 会上,由…

Cookie-Monster:一款针对Web浏览器的安全分析与数据提取工具

关于Cookie-Monster Cookie-Monster是一款针对常见Web浏览器的安全分析与数据提取工具,该工具可以帮助广大研究人员提取并分析Edge、Chrome和Firefox浏览器中的Cookie数据。 Cookie-Monster适用于红队和蓝队成员,能够提取WebKit主密钥,找到具…

无监督学习与强化学习基础

就是训练数据无标签,算法自动对数据进行分类,听着很神奇,但学了机器学习以后,除了神经网络比较悬,对人像是个黑盒,别的都是基于数学的分类算法,无监督学习也不例外。 聚类—K-means算法 坐标轴…

Postman下载安装~用于springboot控制层测试

第一步:下载安装 方法1:在线下载 Postman API Platform 方法2:百度网盘 通过百度网盘分享的文件:Postman-win64-Setup 链接:https://pan.baidu.com/s/16nNfKvuNfM8z4kP1Ad-K2Q?pwdotxe 提取码:otxe -…

见证中国数据库的崛起:从追赶到引领的壮丽征程《三》

见证中国数据库的崛起:从追赶到引领的壮丽征程《三》 三、深度思考:中国数据库发展的经验与启示产学研用结合的创新模式应用驱动的创新路径人才培养的关键作用 【纪录片】中国数据库前世今生 在数字化潮流席卷全球的今天,数据库作为IT技术领域…

Java高级流

高级流 java将IO分为了两类 节点流:又称为"低级流" 特点:直接链接程序与另一端的"管道",是真实读写数据的流IO一定是建立在节点流的基础上进行的。文件流就是典型的节点流(低级流) 处理流:又称为"高级流" 特点:不能独立存在&#x…

开源项目的发展趋势,以及参与开源项目可以获得的经验和成果,以及涉及到的注意事项

目录 一、当前开源项目的发展趋势 1. 全球化协作与社区增长 2. 多领域技术创新与迭代加速 3. 开放协作模式 4. 商业化与产业融合 5. 安全性与隐私保护 6. 跨界融合与生态构建 7. 政策支持 二、参与开源项目的经验和收获 1. 技术能力提升 2. 团队协作与沟通能力 3.领…

阿里微服务质量保障系列:异步通信模式以及测试分析

软件质量保障 所寫即所思|一个阿里质量人对测试的所感所悟。 1. 异步通信模式 最常见的方式就是异步消息通信。使用消息机制时,服务之间的通信采用异步交换消息的方式完成。基于消息机制的应 用程序通常使用消息代理,它充当服务之间的中介。另一种选择是使用无代理架构,通…

实验室自动测试系统产品化注意问题

在实验室开发的自动测试系统转向产品化时,需要综合考虑多个方面,以确保系统的稳定性、可靠性和可维护性。以下是一些关键问题和建议: 1. 硬件选择与兼容性 在实验室中,可能会使用一些专业的实验设备或定制的硬件,但在…

一文带你掌握C++模版

12. C模板 什么是模板 模板编程也可以叫做泛型编程,忽略数据类型的一种编程方式 //求最值问题 int Max(int a,int b) {return a>b?a:b; } double Max(int a,int b) {return a>b?a:b; } string Max(string a,string b) {return a>b?a:b; …

搭建Nginx正向代理服务器,轻松实现外部网络请求的转发

​ 本文将介绍如何使用Nginx搭建一个简单的正向代理服务器,实现外部网络请求的转发。通过设置正向代理,我们可以隐藏真实的服务器地址,提高访问速度,以及增强网络安全性 一、Nginx正向代理简介 正向代理(Forward Pro…

基于node的学生公寓管理系统-计算机毕设 附源码 06412

基于node的学生公寓管理系统 摘 要 本论文主要论述了如何使用Node.js框架和Express框架开发一个基于Node的学生公寓管理系统,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S结构,面向对象编程思想进行项目开发。在引言中&#xff0…

无人机环保行业解决方案-应急环境污染处理

无人机环境应急处理 传统环境应急的典型挑战 发生环境应急事件时,最重要的是快速获取前方信息。然而,有毒气体 和易燃易爆品多,存在二次爆炸风险,严重威胁人身安全。无人机可快 速赶到事故现场,查看周边环境、污染物…

免费开源的搜索工具,支持搜索文件内容,绿色免安装

dnGrep是一款功能强大的开源Windows搜索工具,旨在帮助用户高效地在各种文档和压缩文件中查找文本内容。它支持多种查询方式,包括文本、正则表达式(Regex)、XPath以及音序查询。 dnGrep主要功能: 多格式支持&#xff…

网络安全学习平台top10_网络安全训练平台

前言 1.Hack In The Box:http://www.hackinthebox.org/ 2.Hellbound Hackers:https://www.hellboundhackers.org/ 3.Exploit Database:https://www.exploit-database.net/ 4.Hacking-Tutorial:https://www.hacking-tutorial.c…

【Python实战】如何优雅地实现 PDF 去水印?

话接上篇,自动化处理 PDF 文档,完美实现 WPS 会员功能 小伙伴们更关心的是如何去除 PDF 中的水印~ 今天,就来分享一个超简单的 PDF 去水印方法~ 1. 原理介绍 在上一篇中,我们介绍了如何将 PDF 文档转换成图片,图片…

前端必知必会-html中input的type设置

文章目录 HTML type的设置输入类型文本输入类型密码输入类型提交输入类型重置输入类型单选按钮输入类型复选框输入类型按钮输入类型颜色输入类型日期输入类型 Datetime-local输入类型电子邮件输入类型图像输入类型 文件输入类型 隐藏输入类型 月份输入类型 数字输入类型范围输入…

更换收银系统时如何迁移会员数据

系统介绍 专门为零售行业的连锁店量身打造的收银系统,适用于常规超市、生鲜超市、水果店、便利店、零食专卖店、服装店、母婴用品、农贸市场等类型的门店使用。同时线上线下数据打通,线下收银的数据与小程序私域商城中的数据完全同步,如商品…

js 实现数组转树形数据(2024-08-01)

要将数组转换为树形结构,通常需要一个数组,其中每个元素都包含一个父节点的引用。以下是一个使用JavaScript实现的函数,假设每个元素都有一个唯一的 【id 】和一个指向其父元素的【pId】 /*** 数组转树形结构* param {array} list 被转换的数…