今天是2024年10月15日,星期二,北京,天气阴。
我们来看两个工作,一个是Baichuan-Omni多模态模型,看看其技术报告,另一个是TurboRAG的以空间换时间的实现思路,有一些优缺点,我们可以跟进。
会有一些收获。
一、Baichuan-Omni多模态模型
Baichuan-Omni《BAICHUAN-OMNI TECHNICAL REPORT》(https://github.com/westlake-baichuan-mllm/bc-omni,https://arxiv.org/abs/2410.08565)是一个7B参数的模型,能够同时处理和分析图像、视频、音频和文本等多种模态的数据。
1、第一阶段:多模态对齐预训练
预训练和对齐过程包括图像-语言、视频-语言和音频-语言分支。
图像-语言分支使用视觉编码器处理图像,并经过三个阶段的训练,重点关注图像描述、视觉问题回答任务,并进一步增强与大型语言模型(LLM)的对齐。
视频-语言分支在图像-语言分支的基础上构建,使用相同的视觉编码器和视频投影器,并用图像-文本和视频-文本对进行训练。
音频-语言分支整合了Whisper-large-v3模型的音频编码器和一个新颖的卷积门控MLP投影器,取代了传统的池化方法,以保留更多的音频信息。
最后,多模态对齐阶段整合了所有分支,在高质量的多模态数据对上进行训练,以增强模型的多模态理解能力。
2、第二阶段:多模态监督微调
多模态监督微调过程旨在增强模型遵循各种任务中复杂指令的能力,使用超过600K对数据的跨多个模态的数据集。
仅限文本的数据涵盖了广泛的任务,强调复杂的多步骤指令。
对于图像理解,我们采用了vFLAN数据集,应用基于损失的过滤方法来提高数据质量,并将数据翻译成中文以获得更好的对齐。
视频理解部分来自VideoInstruct100K数据集,我们实施了语义去重和翻译来多样化指令。
在音频理解部分,使用文本转语音技术生成音频,通过转录验证确保质量,并补充以真人录制的样本来捕捉多样的方言。
一、TurboRAG以空间换时间的实现思路
最近的工作《TurboRAG: Accelerating Retrieval-Augmented Generation with Precomputed KV Caches for Chunked Text》,http://arxiv.org/pdf/2410.07590, https://github.com/MooreThreads/TurboRAG,这个工作介绍了一个名为TurboRAG的新型检索增强生成(RAG)系统,旨在通过预先计算和存储文档的键值(KV)缓存来加速检索增强生成的过程,从而显著减少首次token输出(TTFT)的延迟,,这对于对响应时间有严格要求的应用场景非常有用。
1、先说实现流程
流程如上,TurboRA的推理流程包括文档编码、文档预填充、查询编码、检索、上下 KV缓存形成、KV缓存预填充和响应生成等步骤,与标准RAG系统基本一致,易于使用。可以看看具体的流程,(见图 1b):
1)文档编码(离线):使用基于Transformer模型(如Bert)将文档编码成嵌入向量。这些文档嵌入被存储在向量索引中,以便于高效地进行相似性搜索。
2)文档预填充(离线):使用LLM进行离线预填充。它为每个文档计算KV缓存,并将它们保存在数据库中。
3)查询编码:使用相同的Bert模型将输入查询编码成向量。
4)检索:使用编码后的查询在向量数据库中执行相似性搜索,以检索最相关的文档。
5)上下文KV缓存形成(在线):检索与文档相对应的存储KV缓存,,合并后的KV缓存为查询形成一个全面的上下文。
6)KV缓存预填充(在线):LLM使用合并后的KV缓存处理输入查询的预填充。
7)响应生成(在线):预填充阶段完成后,LLM开始生成响应并返回给用户。
2、再说其基本实现思想
其基本思想在于:
1)预计算KV缓存:TurboRAG将文档的KV缓存预先计算并存储起来,这样在在线推理时可以直接使用这些缓存,避免了重复计算,从而减少在线计算KV缓存的开销。
2)处理注意力掩码和位置ID的技术:处理注意力掩码矩阵和位置ID的方法,以保持模型的准确性。这包括独立注意力掩码和重新排序的位置ID,以适应预计算的KV缓存的拼接。
如Figure2所示,TurboRAG系统中不同注意力掩码矩阵和位置ID设置下的注意力矩阵分布和查询到上下文片段的注意力分数分布。
首先是注意力矩阵分布:
a) 下三角因果注意力(Lower triangular casual attention):在这种设置下,整个上下文都被关注到。注意力矩阵的下三角部分为非零值,表示当前位置可以关注到之前的所有位置。
b) 独立注意力与复合位置(Independent Attention and Composite Positions):在这种设置下,每个片段使用原始的位置ID。注意力矩阵的非对角线部分可能包含非零值,表示不同片段之间可能存在交叉注意力。
c) 独立注意力与重新排序位置(Independent Attention and Reordered Positions):在这种设置下,每个文档只能关注到自身,并将片段中的位置ID重新排序为单调递增的数字。注意力矩阵的非对角线部分为零,表示不同片段之间没有交叉注意力。
其次是注意力分数分布:
a) 标准设置(Standard setting):在标准设置下,可以看到注意力分数在不同片段之间非常稀疏,每个文档主要关注其内部信息。此外,即使在不同片段之间的注意力被完全屏蔽的情况下,查询到文档的注意力分数分布也没有显著变化,仍然集中在包含相关信息的文档上。
b) 独立注意力与复合位置(Independent Attention and Composite Positions):在这种设置下,可以看到注意力分数在不同片段之间的分布情况。由于使用了复合位置ID,注意力分数的计算可能受到位置ID拼接的影响。
c) 独立注意力与重新排序位置(Independent Attention and Reordered Positions):在这种设置下,可以看到注意力分数在不同片段之间的分布情况。由于使用了重新排序的位置ID,注意力分数的计算不受位置ID拼接的影响,且不同片段之间的交叉注意力被完全屏蔽。
3、模型微调
为了使预训练的语言模型适应新的注意力掩码和位置 ID,TurboRAG 对模型进行了微调,使其能够在推理时处理新的设置,而不会导致问答任务的准确性下降。
4、优缺点
因此,可以对其优缺点做个总结:
在优点方面,
1)降低延迟:通过预计算和存储文档的KV缓存,TurboRAG大大减少了在线计算的需要,从而显著降低了时间到首个token(TTFT)的延迟。
2)提高效率:由于减少了在线计算,TurboRAG能够更高效地处理请求,这对于需要快速响应的应用场景(如实时聊天机器人或客户支持系统)非常有利。
3)保持准确性:论文中提到,通过适当的微调,TurboRAG能够保持与标准RAG系统相当的准确性,这意味着在提高效率的同时不会牺牲结果的质量。
4)易于集成:由于TurboRAG的推理流程与标准RAG系统基本一致,因此可以方便地集成到现有的系统中,无需对模型和推理系统进行大量修改。
5)减少资源消耗:在在线推理期间,TurboRAG减少了计算资源的使用,这可以降低运营成本,尤其是在需要处理大量请求的环境中。
6)提高吞吐量:由于减少了资源消耗,TurboRAG能够支持更大的批处理大小,从而提高了系统的吞吐量。
在局限性方面也很明显
1)预计算的开销:虽然TurboRAG减少了在线计算,但预计算KV缓存的过程可能需要显著的离线计算资源,这可能对一些资源有限的环境构成挑战。
2)存储需求:预计算的KV缓存需要存储,这可能会增加系统的存储需求,尤其是在处理大量文档时。
3)动态内容的挑战:对于经常更新或变化的内容,预计算的KV缓存可能需要频繁更新,这可能会增加维护的复杂性和成本。
4)特定类型的文档:对于某些类型的文档,如结构化数据或非常短的文本,预计算KV缓存可能不会带来太大的性能提升。
5)模型微调的复杂性:为了适应新的注意力掩码和位置ID,需要对模型进行微调,这可能需要额外的标注数据和训练时间。
6)泛化能力的未知:虽然论文中提到TurboRAG在特定基准测试中表现良好,但其在不同类型的任务和数据集上的泛化能力还需要进一步验证。
总的来说,TurboRAG在提高检索增强生成系统的效率和响应速度方面提供了显著的优势,但在实际部署时也需要考虑其局限性和额外的开销。
参考文献
1、http://arxiv.org/pdf/2410.07590
2、https://arxiv.org/abs/2410.08565
关于我们
老刘,NLP开源爱好者与践行者,主页:https://liuhuanyong.github.io。
对大模型&知识图谱&RAG&文档理解感兴趣,并对每日早报、老刘说NLP历史线上分享、心得交流等感兴趣的,欢迎加入社区,社区持续纳新。
加入会员方式:关注公众号,在后台菜单栏中点击会员社区->会员入群加入