一句话概括,SepLLM证明了标点符号在LLM眼里是“段落精华浓缩液”,丢掉多余内容只留这些“小逗号大作用”,结果速度飞起性能不掉(原论文题目见文末,点击阅读原文可直接跳转至原文链接, Published on ICML on 16 December 2024, by HKUDS, HKU.)
近年来,大语言模型(LLM)的能力越来越强,但它们的“饭量”也越来越大。这个“饭量”主要体现在计算和内存上。当模型处理的文本越来越长时,一个叫做“自注意力(Self-Attention)”的核心机制会导致计算量呈平方级增长。这就像一个房间里的人开会,如果每个人都要和在场的其他所有人单独聊一遍,那么随着人数增加,总的对话次数会爆炸式增长。
这个巨大的开销,尤其是在推理(生成内容)时,会产生一个叫做 KV Cache 的东西,它会把之前所有内容的“关键信息”都存起来,导致内存占用非常大,处理速度变慢。
现有的一些解决方法,要么是彻底改变模型结构(比如用线性注意力),但这会让很多强大的预训练模型无法直接使用;要么是想办法压缩或丢弃一部分 KV Cache,但常常因为丢掉了重要信息而导致模型性能下降。
作者们在研究中发现了一个非常反直觉的现象:在模型进行注意力计算时,那些看起来“没啥意义”的标点符号(比如逗号、句号、换行符),获得的关注度(Attention Score)竟然异常地高,甚至超过了很多有实际语义的名词和动词。
这个发现就是这篇论文最核心的 Motivation。作者猜想:是不是这些标点符号(他们称之为“分隔符 Separator”)在无形中扮演了“信息枢纽”或“段落摘要”的角色?模型可能已经自发地学会了将一个句子或一个段落(Segment)的信息“压缩”并存储到它后面的那个分隔符里。如果这个猜想成立,那么只需要保留这些“摘要”性质的分隔符,就可以丢掉大量的中间内容,从而大大提高效率,同时又不会损失太多信息。
想象一下,你需要向一位新加入公司的董事汇报过去一整年的项目进展。这场汇报就是模型处理长文本的过程,而这位新董事就是模型当前需要生成下一个词的“决策者”。
新董事拿到这份“精华汇报包”,不再需要阅读海量的原始记录。他只需要看看开场白,听听当前的对话,然后快速翻阅每个季度的总结PPT,就能对全年进展了如指掌,并据此做出明智的决策(预测下一个词)。
这里的“信息压缩”就体现在:项目经理的总结PPT(分隔符)本身并不包含季度内所有的细节讨论,但它的存在和内容是整个季度工作的成果和体现。新董事通过查阅这份总结,就等效于理解了这个季度。
从比喻过渡到实际的技术和公式。SepLLM的核心是通过一个特殊的注意力掩码(Attention Mask)来实现的。
当模型要计算第 个token的输出时:
这个比喻非常贴切,但有一个细微的差别。在比喻中,项目经理是“主动地”去写总结。在LLM中,这个过程是“被动”且“涌现”的。模型并没有一个叫“总结模块”的东西,而是整个注意力网络在海量数据和稀疏注意力的约束下,自发形成的这种高效的信息处理模式。
以一个典型的应用场景——基于长篇文章的问答或摘要生成——为例,描述其详细工作流。
假设我们的输入是一段长文本,模型需要阅读它,然后回答一个问题(或者在自回归模式下,续写文本)。整个流程分为两个主要阶段:预填充(Pre-filling)阶段和生成(Generation)阶段。
输入:
第一步:预填充(Processing the Prompt)
此阶段的目标是让模型“阅读”并“理解”提供的长文本(Prompt),并构建一个初始的、稀疏的KV Cache。
第二步:生成(Autoregressive Generation)
现在,模型需要根据上文内容开始生成新的token。
文章来自于“Tensorlong 看天下”,作者“沈公子今天读什么”。
【开源免费】字节工作流产品扣子两大核心业务:Coze Studio(扣子开发平台)和 Coze Loop(扣子罗盘)全面开源,而且采用的是 Apache 2.0 许可证,支持商用!
项目地址:https://github.com/coze-dev/coze-studio
【开源免费】n8n是一个可以自定义工作流的AI项目,它提供了200个工作节点来帮助用户实现工作流的编排。
项目地址:https://github.com/n8n-io/n8n
在线使用:https://n8n.io/(付费)
【开源免费】DB-GPT是一个AI原生数据应用开发框架,它提供开发多模型管理(SMMF)、Text2SQL效果优化、RAG框架以及优化、Multi-Agents框架协作、AWEL(智能体工作流编排)等多种技术能力,让围绕数据库构建大模型应用更简单、更方便。
项目地址:https://github.com/eosphoros-ai/DB-GPT?tab=readme-ov-file
【开源免费】VectorVein是一个不需要任何编程基础,任何人都能用的AI工作流编辑工具。你可以将复杂的工作分解成多个步骤,并通过VectorVein固定并让AI依次完成。VectorVein是字节coze的平替产品。
项目地址:https://github.com/AndersonBY/vector-vein?tab=readme-ov-file
在线使用:https://vectorvein.ai/(付费)
【开源免费】graphrag是微软推出的RAG项目,与传统的通过 RAG 方法使用向量相似性作为搜索技术不同,GraphRAG是使用知识图谱在推理复杂信息时大幅提高问答性能。
项目地址:https://github.com/microsoft/graphrag
【开源免费】Dify是最早一批实现RAG,Agent,模型管理等一站式AI开发的工具平台,并且项目方一直持续维护。其中在任务编排方面相对领先对手,可以帮助研发实现像字节扣子那样的功能。
项目地址:https://github.com/langgenius/dify
【开源免费】RAGFlow是和Dify类似的开源项目,该项目在大文件解析方面做的更出色,拓展编排方面相对弱一些。
项目地址:https://github.com/infiniflow/ragflow/tree/main
【开源免费】phidata是一个可以实现将数据转化成向量存储,并通过AI实现RAG功能的项目
项目地址:https://github.com/phidatahq/phidata
【开源免费】TaskingAI 是一个提供RAG,Agent,大模型管理等AI项目开发的工具平台,比LangChain更强大的中间件AI平台工具。
项目地址:https://github.com/TaskingAI/TaskingAI
【开源免费】XTuner 是一个高效、灵活、全能的轻量化大模型微调工具库。它帮助开发者提供一个简单易用的平台,可以对大语言模型(LLM)和多模态图文模型(VLM)进行预训练和轻量级微调。XTuner 支持多种微调算法,如 QLoRA、LoRA 和全量参数微调。
项目地址:https://github.com/InternLM/xtuner
【开源免费】LangGPT 是一个通过结构化和模板化的方法,编写高质量的AI提示词的开源项目。它可以让任何非专业的用户轻松创建高水平的提示词,进而高质量的帮助用户通过AI解决问题。
项目地址:https://github.com/langgptai/LangGPT/blob/main/README_zh.md
在线使用:https://kimi.moonshot.cn/kimiplus/conpg00t7lagbbsfqkq0