我自己的原文哦~ https://blog.51cto.com/whaosoft/13877107
#PHYBench
北大物院200人合作,金牌得主超50人!PHYBench:大模型究竟能不能真的懂物理?
本项目由北京大学物理学院朱华星老师、曹庆宏副院长统筹指导。基准设计、项目管理以及数据整合的主要工作由学生核心团队完成,核心成员包括仇是、郭绍阳、宋卓洋、孙韫博、蔡则宇、卫家燊、罗天宇等。项目还得到了北京大学计算中心罗民兴院士和人工智能研究院张牧涵老师的鼎力支持。
PHYBench 项目汇聚了来自物理学院及兄弟院系的 200 余名学生,共同承担题目编写、审核及人类基准测试等工作。这支高水平的参与者团队中,包含至少 50 位全国中学生物理竞赛金牌得主,更有亚洲物理奥赛和国际物理奥赛的金牌获得者。这场大规模、高质量的协作,不仅充分展现了北大学子深厚的学术功底和卓越的组织协调能力,也为 PHYBench 产出高质量成果提供了坚实保障。
在大语言模型(LLMs)飞速发展的当下,模型的推理能力俨然成为模型能力的代名词。OpenAI 的 o 系列、DeepSeek R1 等前沿模型相继发布,这些大模型凭借强化学习技术的助力,在许多科学评测基准上频频刷新纪录,甚至声称 “超越人类专家”。
但是,随着模型能力和评测基准的军备竞赛白热化,越来越多的基准不得不转向生僻的知识点、或者抽象的数学竞赛题。这些题目虽然能 “区分” 模型,但是逐渐脱离实际场景,可能难以真正反映模型的实际表现。
近日,北京大学物理学院联合人工智能研究院等多个院系,推出了全新评测基准 PHYBench。PHYBench 包含 500 道经过精心设计的高质量物理题(如图 1),难度横跨高中物理、大学物理以及物理奥林匹克竞赛。这些题目以真实的物理场景为基础,对人类来说并不抽象,却把一众大模型考得七零八落。大模型在解决物理题时的思维链也暴露了它们在感知(Perception)和推理(Reasoning)能力上的缺陷。
- 论文链接:https://arxiv.org/abs/2504.16074
- 项目网址:https://phybench-official.github.io/phybench-demo/
- 数据集:https://huggingface.co/datasets/Eureka-Lab/PHYBench
也许,物理才是最适合考察 AI 推理能力的学科?PHYBench 的尝试为评估大模型真正有效的推理能力提供了全新的工具和视角。
图 1:题目样例与两种评估方法:表达式树编辑距离、正确率。
表 1:与现有 benchmark 对比,PHYBench 在高难度数据集中,有着相对大的规模,同时引入了创新的分数度量:表达式树编辑距离。
评测方法创新
表达式树编辑距离(EED Score)
传统基准通常依赖 Accuracy 这一单一指标:设置唯一正确答案,模型只有在完全匹配时才能得分。为了方便评分,问答题通常被改写成选择题或要求代入数值。这样会导致答案的信息量被严重压缩,而且给出过多条件可能导致模型 “根据选项猜过程”,或者缺乏使用解析表达式表达普适关系的能力。同时在高难度的样本上,0/1 打分会使得所有模型在分数层面都被归零,强弱差异无从体现。
EED Score(Expression‑tree Edit Distance)带来了更贴近人类阅卷的方案。它将数学表达式解析成表达式树,再计算模型答案与参考答案之间的编辑距离:树的结构越接近,得分越高。这一机制输出的是连续、细粒度的分数,能在更多题目上显示区分度,显著提高了统计效力。
实验表明,采用 EED Score 的 500 题,其区分能力相当于 1500 道使用 0/1 Accuracy 的题目。上图(图 1)展示了同一道题三种不同答案在 Accuracy 与 EED Score 下的对比:前者只能给出 “全错 / 全对” 的粗糙评价,而后者则定量刻画了模型解答与正确答案之间的 “距离”。
实验结果
前沿模型与人类专家的差距
PHYBench 团队招募了 81 名北大学子,在 3 小时时限内做 8 道题目,与最先进的 AI 模型展开了一场 "人机大战"。
结果显示,即使是最强的 Gemini 2.5 pro,也只能答对 36.9% 的题目,EED 评分 49.5%。而 “人类专家” 们则轻松碾压,平均正确率高达 61.9%,EED 评分高达 70.5%。 排名前 25% 的受试者更是达到了 71.4% 的正确率 —— 几乎是最强 AI 的两倍。其他模型与人类的差距则更为显著。这一显著差距揭示了现阶段 LLM 在在物理推理场景中的瓶颈。
PHYBench 对模型的能力也进行了细粒度的对比。可以看到,Gemini 2.5 pro、o3 等强推理模型虽然和人类还有较大差距,但是相比前代推理模型已经有了明显的进步。DeepSeek-V3 等基座模型虽未能超越主流推理模型,但也展现出了亮眼的成绩。QwQ-32B 和 DeepSeek32B 蒸馏模型等小型推理模型在 PHYBench 上的表现很令人失望,这可能归因于其物理感知能力的不足。
基于思维链的错因分析:PP × RR
PHYBench 团队对模型的错误进行了系统性总结分析,将模型的推理过程和推理能力划分为了两个关键模块:物理感知(Physical Perception,PP)和鲁棒推理(Robust Reasoning,RR):
- 物理感知(PP):在此阶段,模型进行密集的文字推理,模型需要识别问题相关的物理对象、变量和动力学关系,定性判断哪些物理效应是重要的,哪些可以忽略不计。若 PP 出错,后续整个推理都会偏离轨道。(示例 1 展示典型 PP 失误)
- 鲁棒推理(RR):在此阶段,模型写下大量的 “草稿”,一步步化简表达式,解方程。现阶段的推理模型在此阶段的推理效率尚不高,“草稿” 长度远长于人类,而且经常犯 “低级错误”。(示例 2 展示典型 RR 失误)
PP 和 RR 交替进行,组成了典型的物理解题思维链。
未来展望
推动 AI 的物理理解与推理能力发展
PHYBench 的愿景远不止于 “评测”,更在于 “引领” AI 探索物理世界的无限可能。
PHYBench 的发布,不仅为评估大语言模型在物理感知与推理方面的能力提供了一个全新且权威的基准,更为未来 AI 系统的发展指明了攻坚方向。我们精心设计的真实、复杂的物理场景,旨在深度激发并验证 AI 理解世界并进行可靠推理的能力,推动 AI 系统真正实现对世界的认知、融入与变革。
面向未来,PHYBench 团队将持续致力于数据集的拓展与创新,计划纳入更多前沿物理课题、跨学科交叉内容,甚至挑战人类尚未解开的科学谜题。我们相信,通过提供更具深度和广度的物理挑战,PHYBench 将有力催化 AI 向着突破认知边界、探索未知领域的 “智能伙伴” 或 “超级助手” 发展。
#DIFF Transformer
差分注意力机制引领变革,DIFF Transformer攻克长序列建模难题
近年来,Transformer 架构在自然语言处理领域取得了巨大成功,从机器翻译到文本生成,其强大的建模能力为语言理解与生成带来了前所未有的突破。
然而,随着模型规模的不断扩大和应用场景的日益复杂,传统 Transformer 架构逐渐暴露出缺陷,尤其是在处理长文本、关键信息检索以及对抗幻觉等任务时,Transformer 常常因过度关注无关上下文而陷入困境,导致模型表现受限。
为攻克这一难题,来自微软和清华的研究团队提出了 DIFF Transformer,一种基于差分注意力机制的创新基础模型架构。
- 论文标题:Differential Transformer
- 论文链接:https://openreview.net/pdf?id=OvoCm1gGhN
- 代码链接:https://aka.ms/Diff-Transformer
其核心思想是通过计算两组 Softmax 注意力图的差值来放大对关键上下文的关注,同时消除注意力噪声干扰。DIFF Transformer 具备以下显著优势:
在语言建模任务中,DIFF Transformer 在模型大小、训练 token 数量等方面展现出了卓越的可扩展性,仅需约 65% 的模型规模或训练 token 数量即可达到与传统 Transformer 相当的性能,大幅提升了语言模型通用表现。
在长文本建模、关键信息检索、数学推理、对抗幻觉、上下文学习、模型激活值量化等一系列任务中,DIFF Transformer 展现了独特优势,相比传统 Transformer 有显著提升。
DIFF Transformer 的特性使其在自然语言处理领域具有广阔的应用前景,有望成为推动语言模型发展的新动力。此外,已有跟进研究初步验证方法在视觉、多模态等领域中的有效性,显示出其跨模态通用的潜力。该研究已被 ICLR 2025 接收,并获选为 Oral 论文(入选比例 1.8%)。
方法
本文提出了一种名为 Differential Transformer(DIFF Transformer) 的基础模型架构,旨在解决传统 Transformer 在长文本建模中对无关上下文过度分配注意力的问题。该方法通过差分注意力机制(Differential Attention)放大对关键上下文的关注,同时消除注意力噪声,从而显著提升模型在多种任务中的性能。
差分注意力机制
传统 Transformer 的注意力机制通过 Softmax 函数对输入序列中的不同 token 进行加权,但 Softmax 的性质导致模型难以完全消除无关上下文的影响。为了克服这一问题,DIFF Transformer 引入了差分注意力机制。
具体而言,该机制将查询向量(Query)和键向量(Key)在注意力头(Head)维度分为两组,分别计算两组的 Softmax 注意力图,然后计算两者的差值作为最终的注意力分数。这一设计类似于电子工程中的差分放大器,以及降噪耳机,通过两组信号相减以消除共有噪声。
差分注意力的数学表达如下:
其中,
和
分别是两组查询和键向量,
是值向量,
是一个可学习的标量参数,用于调节两组注意力图的权重。计算过程如图 1 所示。
图 1. 差分注意力机制图示与伪代码
为了同步学习速率,将
重参数化为:
其中,
是可学习的向量,而
是用于初始化的常数。
多头差分注意力
为了进一步提升模型的表达能力,DIFF Transformer 采用了多头机制。每个注意力头独立计算差分注意力,并将多头输出拼接为最终结果。具体实现如下:
其中
是注意力头的数量,
是输出投影矩阵。为了保持与 Transformer 梯度一致,DIFF Transformer 在每个头的输出后应用了独立的归一化层,采用 RMSNorm 实现。
图 2. Transformer 与 DIFF Transformer 注意力分数分布可视化
图 2 展示了 DIFF Transformer 和传统 Transformer 在注意力分数分配上的显著差异。作者将一段关键信息插入大段不相关文本的中间位置,并对模型抽取关键信息时的注意力分数分配进行可视化。
传统 Transformer 的注意力分数被广泛分配到整个上下文中,只有极少分数分配至关键信息;而 DIFF Transformer 能够将更高的分数集中在目标答案上,并且几乎不向无关上下文分配注意力。
注意力分数分配的稀疏性与精准性也使得 DIFF Transformer 在处理长文本关键信息检索任务时显著优于 Transformer。
实验
作者通过一系列实验验证了 DIFF Transformer 在多个方面的卓越性能,证明了其在大语言模型中应用的独特潜力与优势。
语言建模
作者研究了 DIFF Transformer 在扩展模型规模和训练数据量时的性能,如图 3 所示。实验表明,DIFF Transformer 仅需约 65% 的参数规模或训练数据量即可达到与 Transformer 相当的语言建模性能。例如,6.8B 参数规模的 DIFF Transformer 在语言建模损失上与 11B 参数规模的 Transformer 相当。
图 3. 语言建模上的模型参数、训练数据量可扩展性实验
长文本建模
作者将模型扩展到 64K 上下文长度,并在长文本书籍数据上进行了评估。结果显示,考虑累积平均负对数似然(NLL)指标, DIFF Transformer 在不同序列位置上均优于 Transformer,能够更有效地利用长上下文信息。
图 4. 长文本书籍数据模型性能评估
关键信息检索
作者通过「多针检索」(Multi-Needle Retrieval)实验评估了模型从大量上下文中提取关键信息的能力,如图 5 所示。实验表明,DIFF Transformer 在不同上下文长度和答案深度下均表现出更高的准确率,尤其是在文本较长以及答案位于文本更靠前位置时,优势更为明显。例如,在 64K 上下文中,DIFF Transformer 在答案位于 25% 深度时的准确率比 Transformer 高出 76%。此外,统计信息显示,DIFF Transformer 在注意力分数分配上也表现出更高的聚焦能力,能够准确定位关键信息,并展现了更高的信噪比。
图 5. 多针检索评估
上下文学习
作者从两个角度评估了 DIFF Transformer 的上下文学习能力:多样本上下文学习和样本顺序鲁棒性测试。 如图 6 所示,在多样本上下文学习任务中,作者使用了 4 个不同的数据集(TREC、TREC-fine、Banking-77 和 Clinic-150),并逐步增加示例数量,直到总长度达到 64K tokens。结果显示,DIFF Transformer 在不同数据集上均优于 Transformer,平均准确率提升显著。
图 6. 多样本上下文学习
在鲁棒性测试中,作者通过打乱示例顺序的方式评估了模型的性能稳定性。如图 7 所示,DIFF Transformer 在不同示例排列下的性能方差显著低于 Transformer,表明其对输入顺序的敏感性更低,具有更强的鲁棒性。
图 7. 样本顺序鲁棒性测试
幻觉评测
作者利用文本摘要和问答任务作为两个典型的幻觉评测场景,评估了 DIFF Transformer 在降低大模型幻觉(hallucination)方面的表现。结果如图 8 所示,DIFF Transformer 在生成摘要和回答问题时显著提升了准确率,减少了幻觉现象。这是因为差分注意力机制能够准确定位重要文段,避免无关上下文对模型预测的干扰。
图 8. 利用文本摘要、问答任务进行幻觉评测
异常激活值分析
作者还发现 DIFF Transformer 能够显著减少模型激活中的异常值,这为模型激活值的量化提供了新的可能性。实验表明,DIFF Transformer 在注意力激活值(attention logits)和隐藏状态(hidden states)中的最大激活值显著低于 Transformer。例如,在注意力激活值的 Top-1 激活值上,DIFF Transformer 比 Transformer 低了近 8 倍。利用这一性质,DIFF Transformer 在注意力激活值的低比特量化下的性能也优于 Transformer,如图 9 所示。
图 9. 注意力激活值的低比特量化
数学推理能力
作者在数学推理任务上进一步验证了 DIFF Transformer 的性能。作者采用两阶段训练,在 3B 预训练模型的基础上进行有监督微调,并在 MATH 等 8 个数学数据集上评测模型性能。在第一阶段,采用 20B token 合成数学数据对模型进行微调,使模型获得基础数学能力,评测结果如图 10 所示。从 15B token 开始,DIFF Transformer 展现出了显著优于 Transformer 的数学能力,至 20B token 结束的时候,准确率的差距达到了 11% 左右。
图 10. 第一阶段数学合成数据微调
在第二阶段,作者利用 Deepseek-R1 输出所构造的数据集 OpenThoughts-114K-Math 对模型进行蒸馏,使模型更强大的深度推理能力。如图 11 所示,在 8 个数据集上,DIFF Transformer 相较 Transformer 均有不同程度的提升,平均准确率提升了 7.5%,这表明差分注意力机制更强大的上下文建模能力在推理任务中也至关重要。
图 11. 第二阶段深度推理能力评测
讨论与未来工作
DIFF Transformer 自发布以来获得了较大关注与讨论。作者在 Hugging Face 论文讨论平台、alphaXiv 平台上与社区开展了深入的探讨。在 X 平台(原 Twitter)上,Google DeepMind 高级研究科学家(Senior Staff Research Scientist)Petar Veličković 与作者就文章中的理论分析展开讨论,ViT 核心作者 Lucas Beyer 也在阅读文章后撰写了一篇深入的论文总结,相关发帖已获得数十万浏览。目前 DIFF Transformer 也已集成至 Hugging Face 的 transformers 库中。
- Hugging Face:https://huggingface.co/papers/2410.05258
- alphaXiv:https://www.alphaxiv.org/abs/2410.05258v1
- Petar Veličković:https://x.com/PetarV_93/status/1874820028975267866
- Lucas Beyer:https://x.com/giffmana/status/1873869654252544079
- transformers库:https://github.com/huggingface/transformers/tree/main/src/transformers/models/diffllama
未来工作方面,作者认为可以利用 DIFF Transformer 的性质设计低比特注意力算子,以及利用差分注意力的稀疏特性进行键值缓存(key-value cache)的剪枝。此外,将 DIFF Transformer 应用在除语言以外的其他模态上也值得探索。近期工作 DiffCLIP 将差分注意力扩展至视觉、多模态领域,揭示了 DIFF Transformer 在不同模态任务中的更多结构特性与应用潜力。
- DiffCLIP:https://arxiv.org/abs/2503.06626
总结
本文的贡献主要在两个方面:
(1)DIFF Transformer 通过创新的差分注意力机制,有效解决了传统 Transformer 在处理文本时受到噪声干扰、注意力分配不准确的问题;
(2)凭借对关键信息的关注和对噪声的抵御能力,DIFF Transformer 在语言建模、长文本建模、关键信息检索、数学推理、对抗幻觉、上下文学习、模型激活值量化等任务中表现出色,有望在自然语言处理、多模态等领域作为基础模型架构。
#LLM 工程师工具箱
120+大模型库全攻略!
为大语言模型(LLM)开发者整理了超过120个相关库,并按训练、推理、应用开发等14个类别进行分类,涵盖从数据提取到安全评估的全方位工具,助力开发者高效筛选和利用资源。
在大语言模型(LLM)迅速发展的今天,开发者们面临着海量的资源和工具选择。如何高效地筛选和利用这些资源,成为了每一个 LLM 开发者的关键任务。 今天,我们要介绍的 GitHub 仓库——LLM Engineer Toolkit,或许能成为你的得力助手!
https://github.com/KalyanKS-NLP/llm-engineer-toolkit
这个由 KalyanKS-NLP 创建的仓库,精心整理了超过 120 个 LLM 相关的库,并按照类别进行了分类。无论是训练、推理、应用开发,还是数据提取、安全评估,你都能在这里找到对应的工具。
大模型工具划分
- 🚀 LLM Training:专注于 LLM 训练和微调的工具,帮助你更快、更高效地优化模型。
- 🧱 LLM Application Development:从框架到多 API 接入,再到缓存和低代码开发,为应用开发提供全方位支持。
- 🩸 LLM RAG:Retrieval-Augmented Generation(检索增强生成)相关的库,提升模型的知识检索能力。
- 🟩 LLM Inference:推理加速和优化工具,让模型运行更流畅。
- 🚧 LLM Serving:模型部署和推理服务的解决方案。
- 📤 LLM Data Extraction:数据提取工具,帮助你从各种来源获取高质量数据。
- 🌠 LLM Data Generation:生成合成数据,丰富你的训练集。
- 💎 LLM Agents:构建智能代理,实现自动化任务和多代理协作。
- ⚖️ LLM Evaluation:评估工具,确保模型性能达到预期。
- 🔍 LLM Monitoring:监控模型运行状态,及时发现并解决问题。
- 📅 LLM Prompts:优化和管理提示词,提升模型输出质量。
- 📝 LLM Structured Outputs:生成结构化输出,让模型结果更易用。
- 🛑 LLM Safety and Security:保障模型的安全性和可靠性。
- 💠 LLM Embedding Models:提供先进的文本嵌入模型。
- ❇️ Others:其他实用工具,涵盖更多开发场景。
LLM Training and Fine-Tuning
Library | Description |
unsloth | Fine-tune LLMs faster with less memory. |
PEFT | State-of-the-art Parameter-Efficient Fine-Tuning library. |
TRL | Train transformer language models with reinforcement learning. |
Transformers | Transformers provides thousands of pretrained models to perform tasks on different modalities such as text, vision, and audio. |
Axolotl | Tool designed to streamline post-training for various AI models. |
LLMBox | A comprehensive library for implementing LLMs, including a unified training pipeline and comprehensive model evaluation. |
LitGPT | Train and fine-tune LLM lightning fast. |
Mergoo | A library for easily merging multiple LLM experts, and efficiently train the merged LLM. |
Llama-Factory | Easy and efficient LLM fine-tuning. |
Ludwig | Low-code framework for building custom LLMs, neural networks, and other AI models. |
Txtinstruct | A framework for training instruction-tuned models. |
Lamini | An integrated LLM inference and tuning platform. |
XTuring | xTuring provides fast, efficient and simple fine-tuning of open-source LLMs, such as Mistral, LLaMA, GPT-J, and more. |
RL4LMs | A modular RL library to fine-tune language models to human preferences. |
DeepSpeed | DeepSpeed is a deep learning optimization library that makes distributed training and inference easy, efficient, and effective. |
torchtune | A PyTorch-native library specifically designed for fine-tuning LLMs. |
PyTorch Lightning | A library that offers a high-level interface for pretraining and fine-tuning LLMs. |
LLM Application DevelopmentFrameworks
Library | Description |
LangChain | LangChain is a framework for developing applications powered by large language models (LLMs). |
Llama Index | LlamaIndex is a data framework for your LLM applications. |
HayStack | Haystack is an end-to-end LLM framework that allows you to build applications powered by LLMs, Transformer models, vector search and more. |
Prompt flow | A suite of development tools designed to streamline the end-to-end development cycle of LLM-based AI applications. |
Griptape | A modular Python framework for building AI-powered applications. |
Weave | Weave is a toolkit for developing Generative AI applications. |
Llama Stack | Build Llama Apps. |
Data Preparation
Library | Description |
Data Prep Kit | Data Prep Kit accelerates unstructured data preparation for LLM app developers. Developers can use Data Prep Kit to cleanse, transform, and enrich use case-specific unstructured data to pre-train LLMs, fine-tune LLMs, instruct-tune LLMs, or build RAG applications. |
Multi API Access
Library | Description |
LiteLLM | Library to call 100+ LLM APIs in OpenAI format. |
AI Gateway | A Blazing Fast AI Gateway with integrated Guardrails. Route to 200+ LLMs, 50+ AI Guardrails with 1 fast & friendly API. |
Routers
Library | Description |
RouteLLM | Framework for serving and evaluating LLM routers - save LLM costs without compromising quality. Drop-in replacement for OpenAI's client to route simpler queries to cheaper models. |
Memory
Library | Description |
mem0 | The Memory layer for your AI apps. |
Memoripy | An AI memory layer with short- and long-term storage, semantic clustering, and optional memory decay for context-aware applications. |
Letta (MemGPT) | An open-source framework for building stateful LLM applications with advanced reasoning capabilities and transparent long-term memory |
Memobase | A user profile-based memory system designed to bring long-term user memory to your Generative AI applications. |
Interface
Library | Description |
Streamlit | A faster way to build and share data apps. Streamlit lets you transform Python scripts into interactive web apps in minutes |
Gradio | Build and share delightful machine learning apps, all in Python. |
AI SDK UI | Build chat and generative user interfaces. |
AI-Gradio | Create AI apps powered by various AI providers. |
Simpleaichat | Python package for easily interfacing with chat apps, with robust features and minimal code complexity. |
Chainlit | Build production-ready Conversational AI applications in minutes. |
Low Code
Library | Description |
LangFlow | LangFlow is a low-code app builder for RAG and multi-agent AI applications. It’s Python-based and agnostic to any model, API, or database. |
Cache
Library | Description |
GPTCache | A Library for Creating Semantic Cache for LLM Queries. Slash Your LLM API Costs by 10x 💰, Boost Speed by 100x. Fully integrated with LangChain and LlamaIndex. |
LLM RAG
Library | Description |
FastGraph RAG | Streamlined and promptable Fast GraphRAG framework designed for interpretable, high-precision, agent-driven retrieval workflows. |
Chonkie | RAG chunking library that is lightweight, lightning-fast, and easy to use. |
RAGChecker | A Fine-grained Framework For Diagnosing RAG. |
RAG to Riches | Build, scale, and deploy state-of-the-art Retrieval-Augmented Generation applications. |
BeyondLLM | Beyond LLM offers an all-in-one toolkit for experimentation, evaluation, and deployment of Retrieval-Augmented Generation (RAG) systems. |
SQLite-Vec | A vector search SQLite extension that runs anywhere! |
fastRAG | fastRAG is a research framework for efficient and optimized retrieval-augmented generative pipelines, incorporating state-of-the-art LLMs and Information Retrieval. |
FlashRAG | A Python Toolkit for Efficient RAG Research. |
Llmware | Unified framework for building enterprise RAG pipelines with small, specialized models. |
Rerankers | A lightweight unified API for various reranking models. |
Vectara | Build Agentic RAG applications. |
LLM Inference
Library | Description |
LLM Compressor | Transformers-compatible library for applying various compression algorithms to LLMs for optimized deployment. |
LightLLM | Python-based LLM inference and serving framework, notable for its lightweight design, easy scalability, and high-speed performance. |
vLLM | High-throughput and memory-efficient inference and serving engine for LLMs. |
torchchat | Run PyTorch LLMs locally on servers, desktop, and mobile. |
TensorRT-LLM | TensorRT-LLM is a library for optimizing Large Language Model (LLM) inference. |
WebLLM | High-performance In-browser LLM Inference Engine. |
LLM Serving
Library | Description |
Langcorn | Serving LangChain LLM apps and agents automagically with FastAPI. |
LitServe | Lightning-fast serving engine for any AI model of any size. It augments FastAPI with features like batching, streaming, and GPU autoscaling. |
LLM Data Extraction
Library | Description |
Crawl4AI | Open-source LLM Friendly Web Crawler & Scraper. |
ScrapeGraphAI | A web scraping Python library that uses LLM and direct graph logic to create scraping pipelines for websites and local documents (XML, HTML, JSON, Markdown, etc.). |
Docling | Docling parses documents and exports them to the desired format with ease and speed. |
Llama Parse | GenAI-native document parser that can parse complex document data for any downstream LLM use case (RAG, agents). |
PyMuPDF4LLM | PyMuPDF4LLM library makes it easier to extract PDF content in the format you need for LLM & RAG environments. |
Crawlee | A web scraping and browser automation library. |
MegaParse | Parser for every type of document. |
ExtractThinker | Document Intelligence library for LLMs. |
LLM Data Generation
Library | Description |
DataDreamer | DataDreamer is a powerful open-source Python library for prompting, synthetic data generation, and training workflows. |
fabricator | A flexible open-source framework to generate datasets with large language models. |
Promptwright | Synthetic Dataset Generation Library. |
EasyInstruct | An Easy-to-use Instruction Processing Framework for Large Language Models. |
LLM Agents
Library | Description |
CrewAI | Framework for orchestrating role-playing, autonomous AI agents. |
LangGraph | Build resilient language agents as graphs. |
Agno | Build AI Agents with memory, knowledge, tools, and reasoning. Chat with them using a beautiful Agent UI. |
Agents SDK | Build agentic apps using LLMs with context, tools, hand off to other specialized agents. |
AutoGen | An open-source framework for building AI agent systems. |
Smolagents | Library to build powerful agents in a few lines of code. |
Pydantic AI | Python agent framework to build production grade applications with Generative AI. |
BeeAI | Build production-ready multi-agent systems in Python. |
gradio-tools | A Python library for converting Gradio apps into tools that can be leveraged by an LLM-based agent to complete its task. |
Composio | Production Ready Toolset for AI Agents. |
Atomic Agents | Building AI agents, atomically. |
Memary | Open Source Memory Layer For Autonomous Agents. |
Browser Use | Make websites accessible for AI agents. |
OpenWebAgent | An Open Toolkit to Enable Web Agents on Large Language Models. |
Lagent | A lightweight framework for building LLM-based agents. |
LazyLLM | A Low-code Development Tool For Building Multi-agent LLMs Applications. |
Swarms | The Enterprise-Grade Production-Ready Multi-Agent Orchestration Framework. |
ChatArena | ChatArena is a library that provides multi-agent language game environments and facilitates research about autonomous LLM agents and their social interactions. |
Swarm | Educational framework exploring ergonomic, lightweight multi-agent orchestration. |
AgentStack | The fastest way to build robust AI agents. |
Archgw | Intelligent gateway for Agents. |
Flow | A lightweight task engine for building AI agents. |
AgentOps | Python SDK for AI agent monitoring. |
Langroid | Multi-Agent framework. |
Agentarium | Framework for creating and managing simulations populated with AI-powered agents. |
Upsonic | Reliable AI agent framework that supports MCP. |
LLM Evaluation
Library | Description |
Ragas | Ragas is your ultimate toolkit for evaluating and optimizing Large Language Model (LLM) applications. |
Giskard | Open-Source Evaluation & Testing for ML & LLM systems. |
DeepEval | LLM Evaluation Framework |
Lighteval | All-in-one toolkit for evaluating LLMs. |
Trulens | Evaluation and Tracking for LLM Experiments |
PromptBench | A unified evaluation framework for large language models. |
LangTest | Deliver Safe & Effective Language Models. 60+ Test Types for Comparing LLM & NLP Models on Accuracy, Bias, Fairness, Robustness & More. |
EvalPlus | A rigorous evaluation framework for LLM4Code. |
FastChat | An open platform for training, serving, and evaluating large language model-based chatbots. |
judges | A small library of LLM judges. |
Evals | Evals is a framework for evaluating LLMs and LLM systems, and an open-source registry of benchmarks. |
AgentEvals | Evaluators and utilities for evaluating the performance of your agents. |
LLMBox | A comprehensive library for implementing LLMs, including a unified training pipeline and comprehensive model evaluation. |
Opik | An open-source end-to-end LLM Development Platform which also includes LLM evaluation. |
LLM Monitoring
Library | Description |
MLflow | An open-source end-to-end MLOps/LLMOps Platform for tracking, evaluating, and monitoring LLM applications. |
Opik | An open-source end-to-end LLM Development Platform which also includes LLM monitoring. |
LangSmith | Provides tools for logging, monitoring, and improving your LLM applications. |
Weights & Biases (W&B) | W&B provides features for tracking LLM performance. |
Helicone | Open source LLM-Observability Platform for Developers. One-line integration for monitoring, metrics, evals, agent tracing, prompt management, playground, etc. |
Evidently | An open-source ML and LLM observability framework. |
Phoenix | An open-source AI observability platform designed for experimentation, evaluation, and troubleshooting. |
Observers | A Lightweight Library for AI Observability. |
LLM Prompts
Library | Description |
PCToolkit | A Unified Plug-and-Play Prompt Compression Toolkit of Large Language Models. |
Selective Context | Selective Context compresses your prompt and context to allow LLMs (such as ChatGPT) to process 2x more content. |
LLMLingua | Library for compressing prompts to accelerate LLM inference. |
betterprompt | Test suite for LLM prompts before pushing them to production. |
Promptify | Solve NLP Problems with LLMs & easily generate different NLP Task prompts for popular generative models like GPT, PaLM, and more with Promptify. |
PromptSource | PromptSource is a toolkit for creating, sharing, and using natural language prompts. |
DSPy | DSPy is the open-source framework for programming—rather than prompting—language models. |
Py-priompt | Prompt design library. |
Promptimizer | Prompt optimization library. |
LLM Structured Outputs
Library | Description |
Instructor | Python library for working with structured outputs from large language models (LLMs). Built on top of Pydantic, it provides a simple, transparent, and user-friendly API. |
XGrammar | An open-source library for efficient, flexible, and portable structured generation. |
Outlines | Robust (structured) text generation |
Guidance | Guidance is an efficient programming paradigm for steering language models. |
LMQL | A language for constraint-guided and efficient LLM programming. |
Jsonformer | A Bulletproof Way to Generate Structured JSON from Language Models. |
LLM Safety and Security
Library | Description |
JailbreakEval | A collection of automated evaluators for assessing jailbreak attempts. |
EasyJailbreak | An easy-to-use Python framework to generate adversarial jailbreak prompts. |
Guardrails | Adding guardrails to large language models. |
LLM Guard | The Security Toolkit for LLM Interactions. |
AuditNLG | AuditNLG is an open-source library that can help reduce the risks associated with using generative AI systems for language. |
NeMo Guardrails | NeMo Guardrails is an open-source toolkit for easily adding programmable guardrails to LLM-based conversational systems. |
Garak | LLM vulnerability scanner |
DeepTeam | The LLM Red Teaming Framework |
LLM Embedding Models
Library | Description |
Sentence-Transformers | State-of-the-Art Text Embeddings |
Model2Vec | Fast State-of-the-Art Static Embeddings |
Text Embedding Inference | A blazing fast inference solution for text embeddings models. TEI enables high-performance extraction for the most popular models, including FlagEmbedding, Ember, GTE and E5. |
Others
Library | Description |
Text Machina | A modular and extensible Python framework, designed to aid in the creation of high-quality, unbiased datasets to build robust models for MGT-related tasks such as detection, attribution, and boundary detection. |
LLM Reasoners | A library for advanced large language model reasoning. |
EasyEdit | An Easy-to-use Knowledge Editing Framework for Large Language Models. |
CodeTF | CodeTF: One-stop Transformer Library for State-of-the-art Code LLM. |
spacy-llm | This package integrates Large Language Models (LLMs) into spaCy, featuring a modular system for fast prototyping and prompting, and turning unstructured responses into robust outputs for various NLP tasks. |
pandas-ai | Chat with your database (SQL, CSV, pandas, polars, MongoDB, NoSQL, etc.). |
LLM Transparency Tool | An open-source interactive toolkit for analyzing internal workings of Transformer-based language models. |
Vanna | Chat with your SQL database. Accurate Text-to-SQL Generation via LLMs using RAG. |
mergekit | Tools for merging pretrained large language models. |
MarkLLM | An Open-Source Toolkit for LLM Watermarking. |
LLMSanitize | An open-source library for contamination detection in NLP datasets and Large Language Models (LLMs). |
Annotateai | Automatically annotate papers using LLMs. |
LLM Reasoner | Make any LLM think like OpenAI o1 and DeepSeek R1. |
#注意力黑洞
大模型为何「死盯」首个 token?
之前就有研究指出,LLM 中存在「注意力黑洞」(Attention Sink)现象:即 LLM 似乎会把大量的注意力放在序列的第一个符号(通常是 <bos>
符号)上,即使这个符号本身可能没什么实际意义。这篇论文与以往研究关注如何利用或缓解该现象不同,而是从功能性角度出发,提出注意力黑洞并非无用的副产品,而是一种重要的、由模型学习到的机制。
- 论文提出,这种机制可以有效防止信息在深层 Transformer 结构中过度混合(over-mixing)。
- 通过理论分析(连接秩坍塌、表示坍塌和过压缩等概念)和实证研究(包括对 Gemma 7B 的扰动分析、不同上下文长度和模型规模的训练实验,以及 LLaMa 3.1 家族模型的分析),作者们论证了注意力黑洞有助于维持模型内部表示的稳定性和区分度,尤其是在处理长序列和深层网络时。
PS:Sink 这个词,一时没有找到特别恰当的翻译方法,「沉降点」、「坍缩点」似乎更拗口,所以选用了「黑洞」这个不准确但比较直观的词。
论文: [2504.02732] Why do LLMs attend to the first token?
主要内容
1. 作者和团队信息
- 主要作者: Federico Barbero 和 Álvaro Arroyo (共同一作),来自牛津大学。还有来自新加坡国立大学 (NUS) 的 Xiangming Gu,以及 Google DeepMind 的 Christos Perivolaropoulos, Petar Veličković, 和 Razvan Pascanu。
- 知名学者/机构:
- Google DeepMind: 是人工智能领域的顶尖研究机构,在大型语言模型、强化学习等方面有众多开创性成果。Petar Veličković 是图神经网络(GNNs)领域的知名学者(如图注意力网络 GAT 的作者),近年来也在 Transformer 和几何深度学习领域有重要贡献。Razvan Pascanu 是深度学习理论方面的专家,尤其在循环神经网络(RNNs)和 Transformer 的理解上有深入研究。
- Michael Bronstein (牛津大学): 几何深度学习领域的领军人物之一。
- Xiangming Gu (NUS): 他之前的一篇关于注意力黑洞何时出现的实证研究(Gu et al., 2025)被本文多次引用,是该领域的重要贡献者。
2. 背景和动机
- 发表时间 2025 年 4 月
- 研究的问题: 为什么大型语言模型(LLMs)中的注意力头(Attention Heads)经常将大量注意力分配给序列中的第一个符号(token),通常是
⟨bos⟩
(beginning of sequence) 符号?这种现象被称为「注意力黑洞」(Attention Sink)。 - 问题背景:
- 举例: 比如输入序列是
⟨bos⟩ The cat sat on the mat
。在处理 mat
这个词时,某个注意力头可能计算出的权重是:⟨bos⟩: 0.8
, The: 0.05
, cat: 0.05
, sat: 0.05
, on: 0.03
, the: 0.02
。大量的注意力(80%)流向了 ⟨bos⟩
。 - 安全问题 (Security vulnerabilities): 可能被利用来注入恶意指令或探测模型行为。
- LLMs 和 Transformer: 现代 LLMs(如 GPT 系列、LLaMa、Gemma)大多基于 Transformer 架构。Transformer 的核心是自注意力机制(Self-Attention Mechanism),它允许模型在处理一个词时,计算这个词与序列中其他所有词(在 decoder-only 模型中是当前词及之前的词)的相关性(注意力权重),然后根据这些权重加权聚合其他词的信息来更新当前词的表示。
- 注意力黑洞现象: 研究者发现,很多注意力头会把大部分权重(比如超过 30% 甚至 80%)分配给第一个符号
⟨bos⟩
,即使这个符号本身通常只表示序列开始,没有太多语义信息。这看起来像是「浪费」了注意力。 - 动机: 既然注意力黑洞如此普遍,并且是通过梯度下降自然学习到的,那么它很可能对模型处理上下文信息起到了某种有益的作用。之前的研究大多关注如何利用或消除它,而本文想搞清楚:注意力黑洞为什么有用?模型是如何利用它的?
3. 相关研究
分类 | 研究方向 | 关键论文/学者 | 核心发现或理论 | 与本文的联系 |
前期工作 | 现象观察与命名 | Xiao et al. (2024) | 首次提出「Attention Sink」术语,发现保留黑洞符号对流式 LLM 性能至关重要。 | 本文基于此现象,进一步探究其功能性原因(而不仅是现象描述)。 |
出现条件分析 | Gu et al. (2025) | 通过预训练实验证明数据打包方式(如 | 本文扩展其发现,验证上下文长度和模型规模对黑洞的影响。 | |
形成机制 | Cancedda (2024) | 谱分析视角:特定子空间驱动黑洞形成。 | 本文不聚焦「如何形成」,而是「为何有用」,形成互补。 | |
Sun et al. (2024) | 归因于异常巨大的激活值(Massive Activations)。 | 本文指出范数 Value 是黑洞实现「近似空操作」的关键。 | ||
Barbero et al. (2025) | 逆向工程发现:Query/Key 的高范数带状结构促成黑洞。 | 本文引用其方法,分析 Gemma 7B 的「撇号头」(Section 3.2)。 | ||
理论背景 | 秩坍塌 (Rank Collapse) | Dong et al. (2021) | 深层线性 Transformer 中,重复注意力混合导致表示空间秩坍缩至 1(所有向量趋同)。 | 本文 Proposition 3.1 证明秩坍塌比表示坍塌更强,黑洞是缓解手段。 |
表示坍塌 | Barbero et al. (2024) | Decoder-only 模型在长序列末尾的相邻符号表示难以区分。 | 黑洞通过减少混合延缓坍塌,实验验证(图 9)。 | |
过压缩 (Over-squashing) | Barbero et al. (2024) | 因果掩码导致早期符号信息被压缩,影响后期符号建模(类似 GNN 瓶颈效应)。 | 本文 Theorem 3.2 扩展多头过压缩边界,解释黑洞如何降低敏感度(图 1-2)。 | |
信息传播限制 | Veličković et al. (2024) | 长上下文推理中,注意力矩阵难以保持稀疏性,必然趋向完全混合。 | 黑洞是模型对抗此限制的「内生解决方案」。 |
- 核心思路
- 核心论点: 注意力黑洞是一种有用的机制,帮助 Transformer 避免信息过度混合 (over-mixing)。
- 机制解释:
- Transformer 层通过注意力机制混合(mix)来自不同符号的信息。
- 当模型层数很深 (deep) 或处理的上下文很长 (long context) 时,反复的混合可能导致灾难性的后果,即前面提到的秩坍塌、表示坍塌或过平滑,使得符号表示失去区分性。
- 注意力黑洞提供了一种 控制混合速率 的方法。当一个注意力头将大量注意力分配给第一个(通常是
⟨bos⟩
)符号时,它实际上减少了分配给序列中其他符号的注意力。 - 如果这个黑洞符号(如
⟨bos⟩
)的 Value 向量范数很小(如下图 b 所示),那么即使分配了很高的注意力权重,它对输出的贡献也很小。这使得该注意力头在某种程度上变得 「不活跃」 (inactive) 或近似于一个 「空操作」 (approximate no-op) ,从而减缓了信息的混合。 - 类比: 想象一条信息高速公路(Transformer 层),车流(信息)过大容易造成拥堵(过度混合)。注意力黑洞就像在某些匝道口(注意力头)设置了一个收费站,并将大部分车辆引导到一个几乎没有出口的停车场(
⟨bos⟩
token with small value norm),从而减少了主路上的车流量,防止了拥堵。
- 灵感来源: 将观察到的注意力黑洞现象与已知的深度网络信息传播理论(秩坍塌、过平滑、过压缩)联系起来,认为前者是后者问题的一种自然解决方案。
5. 方案与技术
本文采用了理论分析和实验验证相结合的方法:
理论分析:
- 核心问题:研究为什么 Transformer 模型会把大量注意力集中在第一个 token(如
<bos>
)上,即使它没有实际语义。 - 秩坍塌 vs 表示坍塌:
- 秩坍塌(所有 token 表示趋同)比表示坍塌(相邻 token 难区分)更严重
- 都源于信息过度混合(over-mixing)
- 过压缩边界公式:
路径层路径权重
- 说明:
- 每条路径的强度 = 各层注意力权重的乘积
- 注意力权重 α 越小 → 信息传播越弱
- 黑洞机制通过增大 α,减小其他 α,从而降低敏感度,减少有效路径数量
- 理论预测 :模型越深(L↑)、上下文越长 → 越需要黑洞来抑制过度混合
实验设计逻辑:
实验类型 | 具体方法 | 关键发现 |
扰动分析 | 替换单个词(如 "greatest"→"best") | 有 |
注意力头分析 | 研究 Gemma 7B 的 " 撇号头 " | 默认状态:关注 |
预训练实验 | 训练 120M 小模型: | 上下文越长 → 黑洞越强 |
大模型分析 | 测试 LLaMA 3.1 系列(8B→405B) | 模型越大 → 黑洞头比例越高 |
6. 实验与结论
更细致的实验结论:
实验类型 | 关键设置 | 主要结果 | 理论支持 |
1. 扰动传播分析 | • 对比有/无 | • 无 | 黑洞降低 ,抑制过度混合 |
2. 近似空操作机制 | • 分析特定注意力头的两种模式: | • | 黑洞实现动态计算分配 |
3. 上下文长度影响 | • 固定总 token 数 | • 上下文长度↑ → Sink Metric↑ | 长上下文需要更强混合控制 |
4. 模型规模影响 | • 同 prompt 测试不同规模模型 | • 黑洞头比例: | 深度↑需更强抗坍塌机制 |
5. | • 对比训练策略: | • 固定 | 黑洞依赖位置而非符号 |
- 贡献
- 新颖视角: 首次系统性地论证了注意力黑洞是一种功能上有益的机制,而非简单的模型缺陷或副产品。将其解释为对抗「过度混合」的一种策略。
- 理论连接: 将注意力黑洞现象与秩坍塌、表示坍塌、过压缩等深度学习理论建立了明确联系,深化了对 Transformer 内部信息流动的理解。
- 实证支持: 通过多样化的实验(扰动分析、受控训练、大规模模型分析)为核心假设提供了有力的证据。
- 解释位置偏好: 合理地解释了为什么黑洞通常发生在第一个符号位置。
- 揭示训练影响: 阐明了预训练中的数据打包策略(尤其是
⟨bos⟩
的使用方式)如何影响模型实现黑洞的具体方式。
8. 不足
- 机制细节: 虽然解释了「为什么」需要黑洞(防过混合)以及「它做了什么」(近似空操作,减缓混合),但对于注意力头「如何」精确地学习到对第一个符号产生如此高偏好的具体神经计算过程,着墨相对较少,更多依赖参考文献。例如,高范数 Q/K 向量的具体作用机制未在此文中详述。
- 理论简化: 过压缩边界的推导为了简化,假设了 Query/Key 与 Value 相互独立,这在实际 Transformer 中不完全成立(它们都源于同一输入表示)。虽然结论可能仍然方向正确,但精确的数学关系可能更复杂。
- 焦点局限: 主要关注发生在第一个符号(特别是
⟨bos⟩
)上的黑洞,对于可能发生在其他位置的(虽然较少见)黑洞现象讨论不多。 - 替代解释: 是否存在其他或共同导致注意力黑洞的原因?例如,第一个位置的特殊位置编码是否也有影响?或者这仅仅是模型找到的一个「容易学习」的默认状态?论文虽然论证充分,但未完全排除所有其他可能性。
- 量化关系: 论文展示了模型深度/上下文长度与黑洞强度的正相关性,但未能提供一个精确的量化模型来预测特定架构需要多大强度的黑洞才能最优地平衡信息混合与表示区分度。
- 实验设置: 扰动实验只用了一个词的替换,更复杂的扰动或任务上的影响可能需要进一步研究。
QA
Q1: 为什么注意力黑洞偏偏发生在第一个符号(⟨bos⟩
)上,而不是序列末尾或者中间某个特定符号呢?
论文的核心观点是注意力黑洞用于控制信息混合。
- 全局控制点: 在 Decoder-only Transformer 中,信息是单向流动的(从前到后)。第一个符号是所有后续符号在计算注意力时都能「看到」的最早的符号。因此,如果模型想对整个序列后续部分的混合程度施加一个全局性的「刹车」,将注意力集中在第一个符号上是最有效的位置。它可以影响所有后续符号的信息接收过程。
-
⟨bos⟩
的便利性: ⟨bos⟩
符号通常在预训练时被固定地放在每个序列或文档的开头,它提供了一个稳定、可预测的「锚点」,模型很容易学会利用它来实现这种全局控制机制。但正如实验所示 (Table 2),如果 ⟨bos⟩
不固定在开头,模型也会利用实际出现在第一个位置的符号来达到类似目的。所以,关键是位置,而 ⟨bos⟩
只是最常用的那个「占位符」。
Q2: 如何区分「有效混合」和「过度混合」?
- 混合是必要的: 注意力机制的核心价值在于让模型能够根据需要混合来自不同位置的信息,捕捉上下文依赖关系,这是模型理解语言的基础。
- 过度混合是有害的: 但是,当模型非常深(经过很多层处理)或者上下文非常长时,无节制地反复混合信息,就像你反复搅拌颜料,最终所有颜色都会糊在一起变成棕色,失去了各自的特征。在模型里,这就表现为所有符号的表示向量变得越来越相似(秩坍塌、表示坍塌、过平滑),模型就无法区分不同位置或不同语义的信息了,性能会下降。
- 黑洞的作用是「调控」而非「禁止」: 注意力黑洞并不是完全禁止信息混合。首先,它通常只发生在一部分注意力头中(虽然在大模型里比例很高)。其次,即使在黑洞头中,它也只是将大部分注意力引开,仍有少量注意力分配给其他符号。更重要的是,这种机制使得模型可以动态地、有选择地进行混合。就像论文中分析的那个「撇号头」,它在大部分时间里通过黑洞保持「安静」(低混合),只在特定条件下才「激活」,进行有效的信息混合。
Q3: 如果注意力黑洞使得一些注意力头近似于「空操作」(no-op),这不就意味着这些计算资源被浪费了吗?为什么模型不直接学习跳过这些层或者减少头的数量呢?
- 条件性计算 vs 静态跳过: 注意力黑洞实现的「空操作」通常是动态的、条件性的。一个头可能在大多数情况下关注黑洞符号(近似空操作),但在检测到特定模式或需要整合特定信息时,它会切换注意力焦点,变得活跃起来。这种按需激活的能力可能比完全移除该头或层更有价值,因为它保留了处理特定情况的潜力。
- 灵活性和冗余: 拥有大量的头(包括一些经常「黑洞」的头)可能提供了模型的冗余性和灵活性。不同的头可能专精于不同的模式或功能,一些头负责「刹车」(黑洞),另一些负责「油门」(混合)。这种分工合作可能比一个更小的、所有头都必须一直活跃的网络更易于学习和优化。
- 学习的复杂性: 模型通过梯度下降学习参数,可能学习出一个带有黑洞的复杂网络比直接学习出一个最优的、更小型的、没有黑洞的网络更容易。黑洞可能是一个在现有架构约束下,模型自然演化出的解决过度混合问题的「捷径」。
- 与 Mixture-of-Depths 的联系: 你的想法与最近提出的「Mixture-of-Depths」 (Raposo et al., 2024) 等动态计算分配技术不谋而合。这些技术试图显式地让模型学习跳过某些计算块(如整个 Transformer block)来节省计算。论文在附录 B 中也提到了这种联系,认为注意力黑洞在功能上类似于 Mixture-of-Depths,但没有后者通过门控实现的计算效率增益。这暗示着未来的模型设计可能会更明确地利用这种动态跳过的思想。
Q4: 注意力黑洞减少了信息混合,这会不会限制模型整合长距离上下文信息的能力?
- 权衡:信息保真度 vs. 上下文整合能力:
- 减少混合的好处: 防止表示坍塌,保持符号表示的区分度和保真度,提高对输入的鲁棒性。这对于需要精确细节的任务可能很重要。
- 减少混合的坏处: 可能限制模型充分整合来自广泛上下文的信息的能力。如果太多注意力头都倾向于黑洞,模型可能难以捕捉需要跨越很长距离的复杂依赖关系。
- 模型如何平衡?
- 并非所有头都黑洞: 模型中通常仍有许多注意力头是活跃的,负责进行信息混合和长距离依赖捕捉。
- 条件性激活: 如前所述,黑洞头也可能在特定条件下变得活跃。
- 深度和宽度: 更深、更宽的模型拥有更多的层和头,这可能允许它们在不同的层/头之间进行更精细的分工:一些负责保持信息(黑洞),另一些负责整合信息(混合)。这也是为什么大模型(如 LLaMa 405B)能支持更强黑洞的同时仍然表现出强大的长上下文能力。
- 最优平衡点: 这个权衡的最优平衡点可能取决于具体的任务、模型架构和训练数据。模型通过训练学习到的黑洞程度,可以看作是试图在这个权衡空间中找到一个较好的解决方案。
- 研究方向: 理解和控制这种权衡是未来研究的一个重要方向。也许可以通过正则化、架构设计或特定的训练策略来引导模型达到更理想的平衡状态。
伪代码
import torch
import torch.nn as nn
import torch.nn.functional as F
import math
import matplotlib.pyplot as plt
from tqdm import tqdm# ======================
# 1. 实现带注意力黑洞的Transformer层
# ======================class AttentionSinkTransformerLayer(nn.Module):"""实现带有注意力黑洞机制的Transformer层"""def __init__(self, d_model=512, n_heads=8):super().__init__()self.d_model = d_modelself.n_heads = n_headsself.head_dim = d_model // n_heads# 多头注意力的QKV投影self.q_proj = nn.Linear(d_model, d_model)self.k_proj = nn.Linear(d_model, d_model)self.v_proj = nn.Linear(d_model, d_model)# 输出投影和FFNself.out_proj = nn.Linear(d_model, d_model)self.ffn = nn.Sequential(nn.Linear(d_model, 4*d_model),nn.GELU(),nn.Linear(4*d_model, d_model))# 层归一化self.norm1 = nn.LayerNorm(d_model)self.norm2 = nn.LayerNorm(d_model)def forward(self, x, sink_strength=0.7):"""参数:x: 输入序列 [batch_size, seq_len, d_model]sink_strength: 黑洞强度(0-1),控制多少注意力流向第一个token"""batch_size, seq_len, _ = x.shaperesidual = x# 1. 多头注意力计算q = self.q_proj(x).view(batch_size, seq_len, self.n_heads, self.head_dim).transpose(1, 2) # [B, H, L, D/H]k = self.k_proj(x).view(batch_size, seq_len, self.n_heads, self.head_dim).transpose(1, 2)v = self.v_proj(x).view(batch_size, seq_len, self.n_heads, self.head_dim).transpose(1, 2)# 2. 计算注意力分数 (缩放点积)attn_scores = (q @ k.transpose(-2, -1)) / math.sqrt(self.head_dim) # [B, H, L, L]# 3. 应用因果掩码 (decoder-only)mask = torch.triu(torch.ones(seq_len, seq_len), diagonal=1).bool().to(x.device)attn_scores = attn_scores.masked_fill(mask, float('-inf'))# 4. 注入注意力黑洞 (核心实现)if sink_strength > 0:# 对每个查询token,增加对第一个token的注意力偏好sink_bias = torch.zeros_like(attn_scores)sink_bias[…, 0] = sink_strength * 10 # 放大偏置以便softmax后仍有显著影响attn_scores = attn_scores + sink_bias# 5. Softmax归一化attn_weights = F.softmax(attn_scores, dim=-1) # [B, H, L, L]# 6. 加权求和output = attn_weights @ v # [B, H, L, D/H]output = output.transpose(1, 2).reshape(batch_size, seq_len, self.d_model)output = self.out_proj(output)# 7. 残差连接和层归一化x = self.norm1(residual + output)# 8. FFN部分residual = xx = self.ffn(x)x = self.norm2(residual + x)return x, attn_weights.detach()# ======================
# 2. 实现完整Transformer模型
# ======================class SinkTransformer(nn.Module):"""实现完整Transformer模型,支持不同层使用不同黑洞强度"""def __init__(self, n_layers=6, d_model=512, n_heads=8):super().__init__()self.layers = nn.ModuleList([AttentionSinkTransformerLayer(d_model, n_heads) for _ in range(n_layers)])# 可以每层设置不同黑洞强度,这里简化为统一强度self.sink_strengths = [0.7] * n_layers def forward(self, x):all_attn_weights = []for layer, strength in zip(self.layers, self.sink_strengths):x, attn_weights = layer(x, strength)all_attn_weights.append(attn_weights)return x, all_attn_weights# ======================
# 3. 扰动分析实验 (对应论文Section 3.2)
# ======================def perturbation_experiment():"""实现论文中的扰动分析实验"""device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')model = SinkTransformer(n_layers=6).to(device)# 模拟输入序列 (batch_size=1, seq_len=10, d_model=512)original_input = torch.randn(1, 10, 512).to(device)# 创建扰动输入 (改变第2个token的嵌入)perturbed_input = original_input.clone()perturbed_input[0, 1] += 0.5 # 添加小扰动# 情况1: 有注意力黑洞 (默认)print("=== 有注意力黑洞的情况 ===")model.sink_strengths = [0.7] * 6 # 设置黑洞强度analyze_perturbation(model, original_input, perturbed_input)# 情况2: 无注意力黑洞 print("\n=== 无注意力黑洞的情况 ===")model.sink_strengths = [0.0] * 6 # 关闭黑洞analyze_perturbation(model, original_input, perturbed_input)def analyze_perturbation(model, original, perturbed):"""分析扰动传播"""# 前向传播获取各层表示with torch.no_grad():orig_output, _ = model(original)perturb_output, _ = model(perturbed)# 计算每层的表示差异 (L2距离)layer_diffs = []for i in range(len(model.layers)):# 计算该层输出的差异diff = torch.norm(orig_output[0] - perturb_output[0], dim=1) # [seq_len]layer_diffs.append(diff.cpu().numpy())# 可视化结果 (模拟论文图2)plt.figure(figsize=(10, 6))for i, diff in enumerate(layer_diffs):plt.plot(diff, label=f'Layer {i+1}')plt.xlabel('Token Position')plt.ylabel('Perturbation Effect (L2 Distance)')plt.title('Perturbation Propagation with/without Sink')plt.legend()plt.show()# ======================
# 4. 注意力黑洞指标计算 (对应论文Section 4)
# ======================def calculate_sink_rate(attn_weights, epsilon=0.3):"""计算注意力黑洞指标 (公式1)参数:attn_weights: 注意力权重列表,每个元素形状为 [B, H, L, L]epsilon: 阈值,论文中设为0.3返回:sink_rate: 黑洞头的比例"""total_heads = 0sink_heads = 0for layer_attn in attn_weights: # 遍历每一层batch_size, n_heads, seq_len, _ = layer_attn.shapefor head_idx in range(n_heads): # 遍历每个头# 计算该头对第一个token的平均注意力avg_attention = layer_attn[0, head_idx, :, 0].mean().item()if avg_attention > epsilon:sink_heads += 1total_heads += 1return sink_heads / total_heads# ======================
# 5. 模拟预训练实验 (对应论文Section 4.1)
# ======================def simulate_pretraining():"""模拟不同上下文长度对黑洞形成的影响"""context_lengths = [128, 256, 512, 1024, 2048]sink_rates = []for ctx_len in context_lengths:print(f"\nSimulating context length: {ctx_len}")# 模拟训练过程 (简化版)model = SinkTransformer(n_layers=6).to('cuda')optimizer = torch.optim.Adam(model.parameters(), lr=1e-4)# 模拟训练100步 (实际论文中训练了5B tokens)for step in tqdm(range(100)):# 生成随机输入 (模拟不同长度的序列)inputs = torch.randn(1, ctx_len, 512).to('cuda')# 模拟损失计算 (这里简化)outputs, attn_weights = model(inputs)loss = outputs.mean() # 实际应为语言模型损失optimizer.zero_grad()loss.backward()optimizer.step()# 计算黑洞指标with torch.no_grad():test_input = torch.randn(1, ctx_len, 512).to('cuda')_, attn_weights = model(test_input)sink_rate = calculate_sink_rate(attn_weights)sink_rates.append(sink_rate)print(f"Sink Rate: {sink_rate:f}")# 绘制结果 (模拟论文图5a)plt.figure(figsize=(8, 5))plt.plot(context_lengths, sink_rates, marker='o')plt.xlabel('Context Length')plt.ylabel('Sink Rate')plt.title('Effect of Context Length on Sink Formation')plt.grid(True)plt.show()# ======================
# 6. 主执行函数
# ======================if __name__ == "__main__":# 运行扰动分析实验print("Running Perturbation Experiment…")perturbation_experiment()# 运行模拟预训练实验print("\nRunning Pretraining Simulation…")simulate_pretraining()
#阿里Qwen3
猛击OpenAI o1、DeepSeek-R1!刚刚,阿里Qwen3登顶全球开源模型王座,深夜爆火
今天凌晨,从昨晚开始预热、备受全球 AI 圈关注的 Qwen3 系列模型终于正式亮相了!
Qwen3 模型依旧采用宽松的 Apache2.0 协议开源,全球开发者、研究机构和企业均可免费在 HuggingFace、魔搭社区等平台下载模型并商用,也可以通过阿里云百炼调用 Qwen3 的 API 服务。
- HuggingFace 地址:https://huggingface.co/collections/Qwen/qwen3-67dd247413f0e2e4f653967f
- Modelscope 地址:https://modelscope.cn/collections/Qwen3-9743180bdc6b48
- GitHub 地址:https://github.com/QwenLM/Qwen3
- 博客地址:https://qwenlm.github.io/blog/qwen3/
- 试用地址:https://chat.qwen.ai/
具体来讲,Qwen3 系列模型包含两款 MoE 模型以及六款密集模型,其中每一款又包含更多细分版本(比如基础版和量化版):
- MoE 模型:Qwen3-235B-A22B 和 Qwen3-30B-A3B;其中 235B 和 30B 分别是总参数量,22B 和 3B 分别是激活参数量。
- 密集模型:Qwen3-32B、Qwen3-14B、Qwen3-8B、Qwen3-4B、Qwen3-1.7B 和 Qwen3-0.6B。
下表展示了这些模型的详细参数:
Hugging Face 已经上线了 22 个不同的 Qwen3 系列模型
目前,Qwen3 系列中较大的三款模型也已经上线了 Qwen Chat 网页版和手机 App。
性能方面,在代码、数学、通用能力等基准测试中,旗舰模型 Qwen3-235B-A22B 与 DeepSeek-R1、o1、o3-mini、Grok-3 和 Gemini-2.5-Pro 等顶级模型表现相当。
此外,小型 MoE 模型 Qwen3-30B-A3B 的激活参数数量是 QwQ-32B 的 10%,表现却更胜一筹。甚至像 Qwen3-4B 这样的小模型也能匹敌 Qwen2.5-72B-Instruct 的性能。
性能大幅提升的同时,Qwen3 的部署成本还大幅下降,仅需 4 张 H20 即可部署满血版,显存占用仅为性能相近模型的三分之一。
开发团队也在博客中给出了一些推荐设置:「对于部署,我们推荐使用 SGLang 和 vLLM 等框架;而对于本地使用,像 Ollama、LMStudio、MLX、llama.cpp 和 KTransformers 这样的工具也非常值得推荐。这些选项确保用户可以轻松将 Qwen3 集成到他们的工作流程中,无论是用于研究、开发还是生产环境。」
该团队表示:「Qwen3 的发布和开源将极大地推动大型基础模型的研究与开发。我们的目标是为全球的研究人员、开发者和组织赋能,帮助他们利用这些前沿模型构建创新解决方案。」
Qwen 团队技术负责人林俊旸(Junyang Lin)进一步分享了 Qwen3 模型开发的细节,他称团队成员花了一些时间来找方法解决一些并不花哨的问题,比如如何通过稳定的训练来扩展强化学习、如何平衡来自不同领域的数据、如何增强对更多语言的支持等。他希望用户能够喜欢 Qwen3 模型并从中发现一些有趣的东西。他还表示,团队正迈向下一个阶段,即训练 Agent 来扩展长程推理,同时更多地关注现实世界的任务。
当然,未来开发团队也将放出 Qwen3 模型的技术报告或训练配方。
网友反馈与上手实测
和前一代 Qwen 系列模型一样,Qwen3 的发布同样吸引了全球 AI 和开源社区的关注,我们看到的也是满屏的好评。
究竟表现如何?也做了点简单的尝试。
首先来个简单的推理测试题,Qwen3-235B-A22B 不出意料地能轻松应对。
2 倍速动图
接下来,我们尝试了一个更加复杂的编程任务:编写一个贪吃蛇游戏,采用像素风格。同时有另一个需求,游戏中有一个平头哥在追赶我们控制的蛇,一旦被咬中,蛇的长度就会丢失一半。当蛇撞墙或咬到自己或长度低于 2 时,游戏结束。
,时长03:10
视频未加速
Qwen3-235B-A22B 大概使用了 3 分钟解决这个任务。简单试玩一下,发现基本上可玩,但也有些 bug,比如平头哥的速度过快了。但考虑到这是 Qwen3-235B-A22B 在简单提示词下给出的 One-shot 结果,也就完全可以接受了。相信更精细的提示工程和迭代优化可以得到更好的结果。
我们也通过 Ollama 简单尝试了 Qwen3 系列中最小的模型 Qwen 0.6B。
看起来,这个完全可以在一台普通手机上流畅运行的小模型不仅速度很快,也足以完成很多日常的推理任务。
经过后训练的模型,例如 Qwen3-30B-A3B,以及它们的预训练基座模型(如 Qwen3-30B-A3B-Base),现已在 Hugging Face、ModelScope 和 Kaggle 等平台上开放使用。对于部署,我们推荐使用 SGLang 和 vLLM 等框架;而对于本地使用,像 Ollama、LMStudio、MLX、llama.cpp 和 KTransformers 这样的工具也非常值得推荐。这些选项确保用户可以轻松将 Qwen3 集成到他们的工作流程中,无论是用于研究、开发还是生产环境。
三大核心亮点
此次,Qwen3 模型在多个方面实现了增强。
一是,支持两种思考模式,分别如下:
- 思考模式,模型逐步推理,经过深思熟虑后给出最终答案,尤其适合需要深入思考的复杂问题。
- 非思考模式,模型提供快速、近乎即时的响应,适用于那些对速度要求高于深度的简单问题。
这种灵活性使用户能够根据具体任务控制模型进行「思考」的程度。例如,复杂的问题可以通过扩展推理步骤来解决,而简单的问题则可以直接快速作答,无需延迟。
至关重要的是,这两种模式的结合大大增强了模型实现稳定且高效的「思考预算」控制能力。Qwen3 展现出的可扩展且平滑的性能提升,就与分配的计算推理预算直接相关。可以预见,这样的设计让用户能够更轻松地为不同任务配置特定的预算,在成本效益和推理质量之间实现更优的平衡。
下图为在 AIME24、AIME25、LiveCodeBech(v5)和 GPQA Diamond 等基准测试集中,非思考模式与思考模式的思考预算变化趋势。
二是,支持更多语言。
目前,Qwen3 模型支持 119 种语言和方言。增强的多语言能力为国际应用开辟了新的可能性,可以让更广泛的全球用户体验到模型的强大能力。这些语言具体包括如下:
三是,Agent 能力增强。
如今,Agent 已经是大模型领域重点关注的能力之一,尤其是最近 MCP 模型上下文协议的引入更是大大增强了 Agent 的适用性和灵活性,大大拓宽了应用场景。
此次,Qwen3 模型的 Agent 和 代码能力得到增强,包括加强了对 MCP 的支持。我们可以看下面一个示例(提取 QwenLM 库的 markdown 内容,然后绘制显示项目 stars 数量的条形图),展示了 Qwen3 如何思考并与环境进行交互:
,时长00:55
预训练数据量达 36 万亿 token
后训练实现混合推理
在预训练方面,Qwen3 的数据集相比 Qwen2.5 有了显著扩展。Qwen2.5 是在 18 万亿个 token 上进行预训练的,而 Qwen3 使用的数据量几乎是其两倍,达到了约 36 万亿个 token,涵盖了 119 种语言和方言。
为了构建庞大的数据集,开发团队不仅从网络上收集数据,还从 PDF 文档中提取信息。他们使用 Qwen2.5-VL 从这些文档中提取文本,并用 Qwen2.5 改进提取内容的质量。
另外,为了增加数学和代码数据的数量,开发团队利用 Qwen2.5-Math 和 Qwen2.5-Coder 这两个数学和代码领域的专家模型合成数据,合成了包括教科书、问答对以及代码片段等多种形式的数据。
具体而言,预训练过程分为了以下三个阶段:
- 在第一阶段(S1),模型在超过 30 万亿个 token 上进行了预训练,上下文长度为 4K token。这一阶段为模型提供了基本的语言技能和通用知识。
- 在第二阶段(S2),通过增加知识密集型数据(如 STEM、编程和推理任务)的比例来改进数据集,随后模型又在额外的 5 万亿个 token 上进行了预训练。
- 在最后阶段,使用高质量的长上下文数据将上下文长度扩展到 32K token,确保模型能够有效地处理更长的输入。
得益于模型架构的改进、训练数据的增加以及更有效的训练方法,Qwen3 Dense 基础模型的整体性能与参数更多的 Qwen2.5 基础模型相当,例如 Qwen3-1.7B/4B/8B/14B/32B-Base 分别与 Qwen2.5-3B/7B/14B/32B/72B-Base 表现相当。
特别是在 STEM、编码和推理等领域,Qwen3 Dense 基础模型的表现甚至超过了更大规模的 Qwen2.5 模型。可以看到,Qwen3 MoE 基础模型在仅使用 10% 激活参数的情况下达到了与 Qwen2.5 Dense 基础模型相似的性能,由此带来了训练和推理成本的显著节省。
与此同时,Qwen3 在后训练阶段同样进行了优化。
为了开发能够同时具备思考推理和快速响应能力的混合模型,开发团队实施了一个四阶段的训练流程,包括:(1)长思维链冷启动,(2)长思维链强化学习,(3)思维模式融合,以及(4)通用强化学习。
在第一阶段,使用多样的的长思维链数据对模型进行了微调,涵盖了数学、代码、逻辑推理和 STEM 问题等多种任务和领域。这一过程旨在为模型配备基本的推理能力。
第二阶段的重点是大规模强化学习,利用基于规则的奖励来增强模型的探索和钻研能力。
在第三阶段,在一份包括长思维链数据和常用的指令微调数据的组合数据上对模型进行微调,将非思考模式整合到思考模型中,确保了推理和快速响应能力的无缝结合。
在第四阶段,在包括指令遵循、格式遵循和 Agent 能力等在内的 20 多个通用领域的任务上应用了强化学习,进一步增强模型的通用能力并纠正不良行为。
Qwen 已成全球第一开源模型
Qwen3 的发布是阿里通义千问的又一里程碑,再对比一下 Llama 4 系列模型得到的社区反馈,Qwen 系列无疑已经成为全球第一的开源模型 —— 这一论断也有数据支持。据了解,阿里通义已开源了 200 余个模型,全球下载量超 3 亿次,Qwen 衍生模型数超 10 万个,已超越 Llama,成为全球最大的开源模型族群。
Qwen、Llama、Mistral 系列开源模型的衍生模型数量随时间的增加情况
在全球 AI 技术竞争日益激烈的背景下,阿里通义千问通过持续的技术创新和开放合作,推动了 AI 技术的普及与发展,展现了中国科技企业在全球开源 AI 生态中的强大影响力。
参考链接:https://x.com/Alibaba_Qwen/status/1916962087676612998
#语音领域ISCA Fellow 2025公布
上海交大俞凯、台大李宏毅等三位华人入选
近日,ISCA Fellow 2025 入选结果揭晓!
ISCA Fellow 是由国际语音通讯协会(International Speech Communication Association,ISCA)设立的荣誉称号,旨在表彰在语音通信科学与技术领域做出杰出贡献的会员,包括研究人员、工程师和学者。
该奖项设立于 2007 年,每年新晋 Fellow 不超过当年 ISCA 会员总数的千分之三,确保稀有性和权威性。
自设立以来,ISCA Fellow 人数已经超过 100 人。ISCA Fellow 2025 入选者共有 8 位,包括以下三位华人学者:
- 思必驰联合创始人、首席科学家,上海交通大学特聘教授 —— 俞凯(内地首位);
- 中国台湾大学教授 —— 李宏毅;
- A*STAR 旗下 I2R 生成式 AI 小组和 AI for Education 项目负责人 ——Nancy Chen。
华人入选者
俞凯
入选理由:对语音识别、口语对话系统以及口语技术在真实世界的部署做出贡献。
个人简介:俞凯,思必驰联合创始人、首席科学家,上海交通大学特聘教授,清华大学本科、硕士,剑桥大学博士。入选国家级重大人才工程,国家自然科学基金委优青,上海市「东方学者」特 聘 教 授 。IEEE 信号处理学会会议理事会 (Conference Board) 和会员理事会 (Membership Board) 理事,IEEE Speech and Language Processing Technical Committee 委员 (2017-2019),中国计算机学会 (CCF) 杰出会员,CCF 语音对话听觉专业委员会主任、大模型论坛首届常务委员,中国人工智能产业发展联盟学术和知识产权组组长,中国语音产业联盟技术工作组副组长。世界顶尖科学家论坛(World Laureates Forum)青年科学家委员会委员,全国信标委用户界面分委会委员。
他发表了 200 余篇国际会议期刊论文,获得多个国际研究挑战赛冠军,担任 Inter Speech、ICMI 等国际会议程序委员会主席,全国人机语音通讯会议大会主席和 ACL、NAACL、EMNLP 等国际会议对话交互领域主席。多次获得国际权威期刊和会议优秀论文奖,以及多个国际公开研究评测竞赛冠军。曾获中国人工智能学会吴文俊人工智能科学进步奖,中国计算机学会青竹奖,2016 年《科学中国人》年度人物等。
李宏毅
入选理由:对语音自监督学习(speech self-supervised learning,SSL)以及构建用于评估语音 SSL 技术的社区基准做出开创性贡献。
个人简介:李宏毅,中国台湾大学计算机科学与信息工程系教授。2010 年和 2012 年分别获得中国台湾大学硕士和博士学位,2012 年 9 月到 2013 年 8 月继续从事博士后研究,2013 年 9 月到 2014 年 7 月在 MIT CSAIL 口语系统组担任访问学者。
李宏毅最为人所熟知的是他开设了一系列网络课程,主题包括深度学习、深度强化学习、生成对抗网络以及机器学习等。由于李宏毅经常在机器学习课程中加入精灵宝可梦、凉宫春日等动漫元素,他还有「「精灵宝可梦大师」的称号。B 站上有关李宏毅机器学习课程的视频非常多、也非常火。
Nancy Chen
入选理由:对多语言语音处理、多模态人机通信和人工智能技术部署做出重大贡献并展现出技术领导力。
个人简介:Nancy Chen,她是新加坡科技研究局(A*STAR)旗下资讯通信研究所(I2R)生成式 AI 小组和 AI for Education 项目负责人。她的团队致力于多模态、多语言大模型的研究,目标应用领域包括教育、医疗保健和国防等。
她获得了 MIT 和哈佛大学的博士学位,期间曾在 MIT 的林肯实验室从事多语言语音处理研究。她曾担任 ICLR 2023 的程序主席、2023 年 IEEE SPS 杰出讲师、IEEE/ACM 音频、语音和语言处理学报以及计算机语音和语言学报的副主编,IEEE 信号处理快报的高级编辑。
其他五位入选者包括如下:
- 法国国家科学研究中心(CNRS)等机构的研究总监 ——Alex Cristia
- 认知科学与心理语言学实验室(LSCP)主任(曾)——Emmanuel Dupoux
- 约翰霍普金斯大学电气与计算机工程系副教授 ——Sanjeev Khundapur
- MIT 林肯实验室人类健康和绩效系统组资深成员和技术人员 ——Thomas Quatieri
- 俄勒冈健康与科学大学名誉教授 ——Jan van Santen
官网地址:https://isca-speech.org/Latest-News/13490786
#MILLION
上交大等探索键值压缩的边界:MILLION开源框架定义模型量化推理新范式,入选顶会
本篇工作已被电子设计自动化领域顶级会议 DAC 2025 接收,由上海交大计算机学院蒋力教授与刘方鑫助理教授带领的 IMPACT 课题组完成,同时也获得了华为 2012 实验室和上海期智研究院的支持。第一作者是博士生汪宗武与硕士生许鹏。
在通用人工智能的黎明时刻,大语言模型被越来越多地应用到复杂任务中,虽然展现出了巨大的潜力和价值,但对计算和存储资源也提出了前所未有的挑战。在以 transformer 模型为基础的大模型中,键值缓存虽然用以存代算的思想显著加速了推理速度,但在长上下文场景中成为了存储瓶颈。例如,半精度的 LLaMA-2-7B 模型权重约 14GB,在上下文长度为 128K 时键值缓存占据 64GB,总和已经接近高端卡 NVIDIA A100 的 80GB 显存容量上限。键值量化可被用于压缩缓存,但往往受到异常值的干扰,导致模型性能的显著下降。为此,本文的研究者提出了 MILLION,一种基于乘积量化的键值缓存压缩和推理加速设计。
- arxiv 链接:https://arxiv.org/abs/2504.03661
- 开源链接:https://github.com/ZongwuWang/MILLION
整型量化的软肋:异常值
图 1:矩阵量化可视化。红色代表的异常值显著大于其他值,导致均匀量化后高位编码被浪费。
量化中受到广泛使用的整型均匀量化受到异常值的影响较为显著。图 1 展示了矩阵中的量化。在一组分布较为集中的数据中,一个显著偏离其他值的异常值会导致其他值的量化结果全部落在较低区间,浪费了高位编码的表示能力。
图 2:图中使用 「通道熵」 定量比较不同方案的量化效果,越大表明越有效地利用了通道容量,即整型的宽度。沿通道量化只能解决沿该方向分布的异常值,而在面对另一方向异常值时效果不佳。
在实际的键值量化中,为了更好的表示能力,通常对于每个通道(即键值向量的维度)或每个 token 采取不同的量化参数,这种方法被称为沿通道量化(channel-wise quantization)或沿词元量化(token-wise quantization)。然而,如图 2 所示,沿特定方向量化只能解决沿该方向分布的异常值。
图 3:实际采样获得的键值缓存分布。在 llama-2-7b-wikitext-103-v1-layer10-value 中,异常值并不遵循简单的沿通道分布,而是呈现为较复杂的点状和团状。
研究团队通过实际采样数据发现,在键值缓存中,沿通道方向分布的异常值占多数,但也存在并不明显的情况,如图 3 所示。这表明,上述量化方案并不是一劳永逸的解决方式,仍然存在优化空间。
异常值的解决方案:乘积量化
图 4:数轴上的均匀和非均匀量化对比。在对 8 个数据点进行 2 比特量化过程中,均匀量化浪费了 10 编码。而基于聚类的非均匀量化则编码更合理。
如图 4 所示,非均匀量化通过聚类的方式允许量化区间不等长,从而更合理地分配编码,提升量化效率。研究团队观察到,由于通道间的数据分布可能存在关联(即互信息非负),将通道融合后在向量空间中聚类,效果一定不亚于独立通道的量化,如图 5 所示。
图 5:左图为两个通道独立进行 1 比特量化,右图为在通道融合后进行 4 分类的 KMeans 聚类。融合通道量化的通道熵更加接近 2 比特的容量极限,展示出更好的量化效果。
由于高维空间中聚类较为困难,因此将整个向量空间划分为多个低维子空间的笛卡尔积,可以平衡聚类复杂度和量化效果。这与最近邻搜索中使用的乘积量化思想一致。研究团队通过实验发现,子空间维度为 2 或 4 是较好的平衡点。
推理加速手段:高效的系统和算子实现
图 6:三阶段的推理系统设计
图 7:分块注意力机制使得批量延迟量化成为可能
图 6 展示了离线训练、在线预填充、在线解码三阶段的量化推理系统设计。其中,码本训练(量化校准)属于秒级轻量化任务,并且离线进行,不影响运行时开销;在线预填充阶段使用训练好的码本对键值缓存进行量化压缩,达到节省显存的目的;在线解码阶段采用分块注意力机制的方法,将预填充阶段的历史注意力和生成 token 的自注意力分开计算(如图 7 所示),达成批量延迟量化的目的,掩藏了在线量化的开销,确保模型输出的高速性。并且,在历史注意力阶段,由于历史键值对数远大于码本长度,因此先用查询向量与码本计算好非对称距离查找表(ad-LUT),可以大大减少内积距离计算量,达到加速计算的目的。
图 8:向量化加载可有效使带宽饱和
在算子优化方面,研究团队在 flash decoding 的基础上使用了宽数据(如 float4)向量化加载的方式,将多个乘积量化编码打包为宽数据,有效使带宽饱和(如图 8 所示)。同时,在表查找阶段,子空间之间的表具有独立性,并且可以被放入少量缓存行中,研究团队利用这一空间局部性极大提高了表查找的 L2 缓存命中率。此外,研究团队还仔细扫描了不同上下文长度下可能的内核参数,找到最优配置,形成了细粒度的预设,在实际运行时动态调整,充分利用 GPU 的计算资源。具体实现可以在开源仓库中找到。
实验结果
实验设置
图 9:实验设置
实验采用了不同位置编码、不同上下文长度的多种模型进行了详细的评估。在模型性能方面,采用困惑度(Perplexity,PPL)和 Longbench 两种指标;在系统性能方面,采用每词元输出间隔(Time Per Output Token, TPOT)定量分析,并给出了注意力层详细的剖析。对比采用方案和乘积量化参数如图 9 所示。
模型性能
图 10:困惑度指标。其中 「-1%」 表示该方法额外存储 1% 的异常值不参与量化。
困惑度越小表明模型输出质量越高。实验结果表明,MILLION 与额外处理了异常值的 SOTA 方案输出质量保持一致,展现出对异常值良好的鲁棒性。而 SOTA 方案在不处理异常值的情况下可能会遭遇严重的输出质量损失。
图 11:Longbench 问答数据集得分展示
在长对话问答任务中,不同模型在各种数据集上的得分均表明,MILLION 方案能够在 4 倍键值缓存压缩效率下保持几乎无损的表现。
系统性能
图 12:每词元输出时间。对比其他方案,MILLION 的优势持续增长,在 32K 上下文时达到 2 倍加速比。
图 13:注意力层时间剖析
在 TPOT 评估中,MILLION 能够在 32K 上下文语境下同时达成 4 倍键值缓存压缩比和 2 倍端到端加速比。注意力层的深入分析表明,MILLION 在访存和内核函数方面对比 baseline 取得显著优势。
总结
MILLION 的主要贡献在于:(1)深入分析键值缓存分布;(2)提出基于乘积量化的非均匀量化算法;(3)设计高效的推理系统及内核。研究团队首先证实了键值缓存中异常值存在的普遍性,并指出异常值的不同分布是当前主流的量化方案精度不足的根本原因;然后提出通过将高维向量空间分解为多个子空间,并在每个子空间内独立进行向量量化的方法,更有效地利用了通道间的互信息,并且对异常值展现出极强的鲁棒性;接着通过 CUDA 异步流和高效的算子设计,充分利用了 GPU 的并行计算能力和内存层次结构,以支持乘积量化的高效执行。实验表明,对比主流框架 transformers 的半精度实现,MILLION 在 32K 上下文场景中同时达成 4 倍压缩率和 2 倍加速比,并且在多种语言任务中精度表现几乎无损。
#Dynamic-LLaVA
首个动态视觉-文本稀疏化框架来了,计算开销直降50%-75%
本文由华东师范大学和小红书联合完成,共同第一作者是华东师范大学在读硕士、小红书 NLP 团队实习生黄文轩和翟子杰,通讯作者是小红书 NLP 团队负责人曹绍升,以及华东师范大学林绍辉研究员。
多模态大模型(MLLMs)在视觉理解与推理等领域取得了显著成就。然而,随着解码(decoding)阶段不断生成新的 token,推理过程的计算复杂度和 GPU 显存占用逐渐增加,这导致了多模态大模型推理效率的降低。现有的方法通过减少预填充(prefill)阶段的视觉 token 冗余来实现推理加速。遗憾的是,这种在预填充阶段实现的视觉 token 稀疏化所带来的加速优势,在解码阶段会逐渐减弱。当解码输出的文本 token 数量增多时,这些方法仍然会遇到性能瓶颈。
为了解决上述问题,团队创新性地提出了一个全新的动态视觉 - 文本上下文稀疏化推理加速框架 ——Dynamic-LLaVA。该框架针对多模态大模型在不同推理模式下(包括预填充阶段以及有无 KV Cache 的解码阶段),设计了定制化的稀疏化推理方案,以实现多模态大模型的高效推理。实验结果表明,Dynamic-LLaVA 在几乎不损失视觉理解和生成能力的前提下,能够将预填充阶段的计算开销减少约 75%;在无 KV Cache 的解码阶段,计算开销减少约 50%;在有 KV Cache 的解码阶段,GPU 显存占用减少约 50%。Dynamic-LLaVA 为多模态大模型推理加速领域树立了新的标杆。
- 论文标题:Dynamic-LLaVA: Efficient Multimodal Large Language Models via Dynamic Vision-language Context Sparsification
- 论文 GitHub 仓库:https://github.com/Osilly/dynamic_llava
- 论文链接:https://arxiv.org/abs/2412.00876
- 研究团队:华东师范大学、小红书 NLP 团队
1 引言
1.1 前置信息:预填充与解码
本文主要围绕以 LLaVA 为范式的多模态大模型展开研究。一个多模态大模型的推理过程可以分为预填充和解码两个阶段:
在预填充阶段,不同模态的特征被映射到与大语言模型(LLM)输入 embedding 相同的特征分布空间中。这些多模态特征与文本 token 会一起被大语言模型处理,以生成初始输出文本 token。以图片理解场景为例,该阶段主要处理输入的图片和文本格式的问题。
在随后的解码阶段,预填充阶段生成的所有 token 以及后续生成的所有输出文本 token,将被用于自回归生成,从而产生完整的输出。同样以图片理解场景为例,该阶段生成针对整个问题的完整回答。
1.2 多模态大模型推理加速困境
图 1:多模态大模型生成过程(有 / 无 KV Cache)中 FLOPs(计算复杂度)和 GPU 显存开销的增长趋势
现有的多模态大模型大多以基于解码器架构的大语言模型(LLM)为核心,这些模型通常拥有庞大的参数规模。在生成输出文本 token 的过程中,模型计算负担会逐渐加重,导致对计算资源的巨大消耗。为了提升推理速度,现有模型通常会在解码过程中运用 KV Cache 技术,通过存储并复用之前计算的 KV 激活值来减少重复计算。然而,如图 1 (B) 所示,即使使用了 KV Cache,LLaVA 在输出 token 不断增加时,仍会迅速面临 GPU 显存耗尽的问题。
与文本不同,视觉信息往往包含大量冗余。因此,许多方法尝试通过减少视觉上下文来加速多模态大模型的推理,即对预填充阶段的视觉 token 进行剪枝处理。但这种方法存在局限性:其主要提升了多模态大语言模型在预填充阶段的推理效率,而在解码阶段,其效率提升会逐渐减弱。
如图 1 (B) 和 (C) 所示,FastV 这种针对视觉 token 剪枝的方法,虽然相较于原始的 LLaVA 能够节省一定的 GPU 显存和计算开销(FLOPs),但当输出 token 数接近 5K 时,它仍然会遭遇计算资源瓶颈。此外,FastV 和原始 LLaVA 的曲线斜率基本一致,这表明在长输出的解码阶段,这类方法并没有显著的推理效率优势。因此,仅通过减少预填充阶段的视觉 token,在输出文本 token 数量远超视觉 token 时,难以实现整个推理效率的显著提升。
1.3 迈向全阶段推理加速:Dynamic-LLaVA
针对上述问题,我们认为:为了实现真正的全阶段推理加速,不仅需要对预填充阶段的视觉 token 进行剪枝,还必须对解码阶段输出的文本 token 进行稀疏化处理,限制参与自回归运算的 token 数量。为此,我们提出了 Dynamic-LLaVA,针对多模态大模型的视觉 - 语言上下文稀疏化推理加速框架。该框架能够集成到多模态大模型推理的不同阶段中,实现以下目标:
- 显著降低预填充阶段计算开销:通过优化视觉 token 的处理方式,减少不必要的计算。
- 提升解码阶段的推理效率:无论是否使用 KV Cache,都能减少计算开销,提高推理速度。
- 保持性能优势:在视觉理解任务上几乎不损失性能;在长文本输出场景中,生成能力也几乎不受影响。
通过这些创新,Dynamic-LLaVA 为多模态大模型的高效推理提供了一种全新的解决方案。
2 方法
图 2:Dynamic-LLaVA 整体框架
如图 2 所示,Dynamic-LLaVA 可以集成到多模态大模型推理流程中的不同阶段。具体而言,在预填充阶段,该框架对视觉 token 执行精准剪枝操作,剔除冗余信息;在不使用 KV Cache 的解码阶段,限制参与自回归运算的视觉与输出文本 token 数量,避免不必要的计算负担;而在使用 KV Cache 的解码阶段,Dynamic-LLaVA 则动态调控 KV Cache,自适应判断是否将当前输出文本 token 的 KV 激活值纳入 KV Cache,优化资源利用效率。为了使模型适应这种全新的稀疏化推理模式,Dynamic-LLaVA 在预训练的 LLaVA-1.5 基础上进行了 1 个 epoch 的监督微调(SFT),确保模型能够高效地运行在稀疏化的推理路径上。
2.1 预填充阶段
在预填充阶段,我们对输入的视觉 token 进行稀疏化操作。如图 2 左侧部分所示,我们引入一个可训练的轻量化的图像预测器(Image Predictor),来判断应当丢弃哪些视觉 token。该图像预测器的结构如下图:
图 3:图像预测器的结构示意图
图像预测器会对每个视觉 token 产生 “决策分数”,以决定对哪些视觉 token 进行保留。在端到端训练中,视觉 token 的剪枝通过 0-1 二值化的掩码操作实现(具体过程见 2.4 节)。在实际推理阶段中,通过保留 “决策分数” 前 k 大的视觉 token(即图 2 左侧部分的 “Yes” 分支),实现视觉 token 数量减少,以实现推理加速。
2.2 解码阶段
不使用 KV Cache 的解码过程:
对于视觉 token,采用和上一小节相同的做法,进行稀疏化处理。
对于输出的文本 token,分两类进行处理:
- 最后一个输出的文本 token(即图 2 中间部分的 “Last output text token”),不进行任何处理,完整输入 LLM 的 decoder 层进行计算。这样做的目的是保证模型的输出内容是连贯的,产生新的输出文本 token 时,始终保证自回归运算包含上一个输出文本 token。
- 对其他历史的输出文本 token 进行稀疏化操作,其形式类似于对视觉 token 的处理。引入一个结构如下图的输出预测器(Output Predictor),给出每个输出文本 token 的 “决策分数”,以决定当前产生新的输出内容时,应当包括哪些文本 token 进行自回归运算。图 2 中间部分的 “Yes” 分支,表明保留的输出文本 token。
图 4:输出预测器的结构示意图
使用 KV Cache 的解码过程:
KV Cache 是节省冗余计算的一个关键推理加速技术,其思想是 “用 GPU 显存的空间换计算时间”。显而易见的是,KV Cache 也并非无限大,在长输出情况下,必须丢弃一些 KV Cache 以适应有限的 GPU 显存。目前在 LLM 领域已有大量的 KV Cache 压缩方案,以 方法为代表,这一类方法一般基于当前 token 和历史 KV Cache 进行重要性分数计算,以压缩历史 KV Cache。
与上述方法不同的是,我们对有 KV Cache 的解码阶段的设计,核心在于 “仅判断当前新 token 的 KV 激活是否需要加入 KV Cache 中”。如图 2 右侧所示,对于当前正在处理的新 token(Last output text token),使用和上一部分结构相同的输出预测器,以决定是否加入 KV Cache 集合中。这种 “Online KV Cache 压缩” 方法,判断是否保留 KV Cache 的过程计算复杂度更低,也更加适应多模态场景。在论文附录中,我们详细讨论了我们的方法和现有的 LLM KV Cache 压缩方法的区别。
需要特别说明的是,和不使用 KV Cache 的解码阶段相同,无论当前处理的 token 是否加入 KV Cache,其都会输入 LLM decoder 层进行计算,以保证输出的连贯性。
2.3 端到端训练
图 5:Dynamic-LLaVA 在端到端训练过程中的示意图
Dynamic-LLaVA 是一个需要训练的多模态大模型推理加速框架。我们基于 LLaVA 进行了一个 epoch 的指令微调,以实现对 token 动态选择的稳定性,保证最终的性能。为了保证端到端训练,在训练阶段的稀疏化操作通过 0-1 二值化掩码实现(在推理中的实现是直接从历史 token 序列中丢弃 token)。如图 5 所示,上半部分表示训练中进行 mask 的过程,在得到整个 token 序列的重要性分数后,我们选取前 k 重要的 token 进行保留,相对应的生成掩码向量,其中 0 对应丢弃的冗余 token(不参与注意力过程的计算),1 对应保留的重要 token,进一步基于掩码向量生成注意力过程的掩码矩阵。掩码矩阵用来对多头注意力机制进行掩码操作,以确保丢弃的 token 不参与注意力过程的计算。由于二值化操作会导致不可微问题,所以我们借助了 GumbalSoftmax 和梯度直通估计器(Straight Through Estimator, STE)来保证梯度流的正确传播,以进行端到端的训练,如图 5 下半部分所示。
3 实验
Dynamic-LLaVA 基于 LLaVA-1.5-7B 和 13B 的两个版本进行了 1 个 epoch 的指令微调,训练使用的数据和 LLaVA-1.5 相同。
3.1 视觉理解能力
我们首先评估了 Dynamic-LLaVA 在主要的视觉理解基准的性能,选取了目前主流的多模态大模型推理加速方法进行比较。
表 1:视觉理解基准效果对比。其中,Free 表示方法是否是 Training-Free 的。Dynamic-LLaVA 的下标 "I" 和 "I | T" 分别表示仅对视觉 token 做稀疏化和同时对视觉和文本 token 都做稀疏化(该标识适用于下文所有的表格)
如表 1 所示,Dynamic-LLaVA 在大部分视觉理解任务上取得了优越的性能。和其他对视觉内容稀疏化的方法相比,Dynamic-LLaVA 在能大幅减小计算复杂度的同时,能够实现相比原始的 LLaVA-1.5 性能几乎不下降。此外,在 SciQA、POPE、MME 和 MMBench 上,Dynamic-LLaVA 相比 LLaVA-1.5 甚至有一定的性能提升。例如,在 SciQA 任务上,Dynamic-LLaVA 的 7B 和 13B 版本,相较于 LLaVA-1.5 实现了 2.3% 和 0.8% 的性能提升。
表 2:与其他高效视觉 projector 的 SOTA 方法对比
值得一提的是,Dynamic-LLaVA 并没有对 LLaVA-1.5 的视觉 projector 进行修改,就可以实现大幅降低预填充阶段计算复杂度,同时维持模型性能。在表 2 中,和其他针对视觉 projector 做高效设计(以提高推理效率)的 SOTA 方法进行了对比。相较于其他使用了高效的视觉 projector 的方法,Dynamic-LLaVA 使用和 LLaVA-1.5 相同的 MLP 结构作为视觉 projector,实现了更好的性能,同时也大幅降低了预填充阶段的计算复杂度。此外,Dynamic-LLaVA 也可以和其他使用高效视觉 projector 的方法集成。例如,表 2 中 Dynamic-LLaVA 使用 TokenPacker 这一高效视觉 projector 的版本,在原始的 TokenPacker 方法基础上,进一步减少了视觉 token。相较于其他基于 TokenPacker 的推理加速方法,性能损失最少。
3.2 生成能力
现有的视觉理解任务中,一般只要求模型给出简短的回复,这和现实世界中多模态大模型的应用场景仍然存在不小的区别。在现实使用中,多模态大模型多数情况下会被要求生成更长、更细致的描述。为了和现实世界的场景对齐,评估 Dynamic-LLaVA 在更长的输出情况下的生成能力和推理效率。我们额外构建了两个评估模型生成能力的基准:
- LVIS-VQA:基于 LVIS-Instruct4 数据集,选取了 1000 个回答超过 100 个单词的单轮对话样本构成 LVIS-VQA (single round) 和 1000 个多轮对话样本(平均回答单词数超过 300)构成 LVIS-VQA (multi-round);
- ShareGPT4V-VQA:基于 ShareGPT-4V 数据集,选取了 caption 超过 300 个单词的单论对话样本,平均输出 token 长度超过 1000。
我们以 PPL (Perplexity Metric) 指标评估模型生成内容的流畅度、以 METEOR (Metric for Evaluation of Translation with Explicit ORdering) 指标评估模型生成内容的质量。
表 3:生成能力基准比较。其中,解码阶段的 TFLOPs 和 Mem.(GPU 显存占用)分别在无 / 有 KV Cache 的情况下测量得出。PPL 越低越好,METEOR 越高越好
如表 3 所示,相比 LLaVA-1.5,只进行视觉内容稀疏化的 Dynamic-LLaVA 的生成流畅度(PPL)和生成质量(METEOR)几乎没有变化;同时对视觉和文本进行稀疏化的 Dynamic-LLaVA,PPL 仅变高了 0.3,METEOR 甚至略有提升,而在推理效率上,在无 KV Cache 的解码阶段降低了~50% 的 TFLOPs,在有 KV Cache 的解码阶段降低了~50% 的 GPU 显存占用。实验结果充分表明,Dynamic-LLaVA 针对视觉和文本同时进行稀疏化,几乎不影响实际生成能力,却可以实现大幅的推理效率提升。
3.3 实际推理效率
表 4:Dynamic-LLaVA-13B 推理效率实测。其中,2K/4K 表示输出的文本 token 数,所有结果均在一张 A100 (80G) 上测试得出,batch size 固定为 8。“” 表示 GPU 显存耗尽
在表 4 中,我们测试了多模态大模型实际推理的时间和 GPU 显存占用。Dynamic-LLaVA 实现了更快的推理速度和更低的显存占用。FastV 这种对预填充阶段的视觉 token 进行剪枝的方法,随着输出长度的增长,推理效率也逐渐降低。而我们提出的 Dynamic-LLaVA,随着输出变长,相比于 FastV 的推理效率优势也逐渐显现出来。
3.4 实例展示
图 6:Dynamic-LLaVA-13B 在 LVIS-VQA (single-round) 上的推理结果展示。图片的白色部分表示该位置的图像块被丢弃,文字中的灰色部分表示其在稀疏化过程中被丢弃,这表示它们不参与后续的自回归解码过程,但在模型的输出中都被完整保留
图 6 中展示了 Dynamic-LLaVA-13B 在 LVIS-VQA (single-round) 上的推理结果,以及对视觉和文本 token 的稀疏化情况。可视化结果表明,视觉 token 部分的主要信息得以保留;文本 token 中,一些不影响整体语义理解的连词、介词等被丢弃。这表明 Dynamic-LLaVA 能够实现关键的视觉、语义信息的保留,从而保证了模型整体的性能。
4 总结
针对当前多模态大模型推理效率受限的问题,团队通过分析多模态大模型推理过程中的不同阶段,针对性的设计了推理加速方案。提出了 Dynamic-LLaVA—— 第一个同时稀疏化视觉和语言上下文的多模态大模型推理加速框架,将不同推理模式的推理效率优化集成到统一框架中。
随着多模态大模型技术的发展,尤其是其在复杂推理、长思维链领域的不断进步。我们有理由相信,Dynamic-LLaVA 的应用场景正变得更加广泛,其对输出文本 token 进行稀疏化的模式,会在当前的更长输出、更复杂推理的场景下,体现出更明显的推理加速优势。
作者简介
黄文轩:小红书 NLP 团队算法实习生,现硕士就读于华东师范大学计算机科学与技术学院 2023 级。他在 ICLR、CVPR 等国际顶级会议上以第一作者身份发表了多篇学术论文,主要研究方向包括多模态大模型、大模型的高效训练与推理等。
翟子杰:小红书 NLP 团队算法实习生,现硕士就读于华东师范大学计算机科学与技术学院 2023 级。他在 ICML、ICLR、EMNLP 等国际顶级会议上发表过多篇学术论文,研究方向主要集中在多模态大模型、生成式搜索与推荐大模型等领域。
曹绍升:小红书 NLP 团队负责人,发表论文 30 余篇,授权专利 100 余项,引用近 4000 次,获得 ICDE 2023 年最佳工业论文奖、CIKM 2015-2020 年最高引用论文、AAAI 2016 最具影响力论文。此外,还荣获了中国发明协会创新成果一等奖(排名 1)、中国人工智能学会吴文俊科技进步二等奖(排名 1),连续 4 年入选世界人工智能学者榜单 AI-2000 新星榜前 100 名、Elsevier 中国区高被引学者,CCTV-13《新闻直播间》采访报道。
叶哲宇:硕士毕业于帝国理工学院计算机专业,小红书 NLP 团队算法工程师,专注于大模型算法与应用方向,开源社区 DMLC 成员。他在 ICLR、NAACL、EMNLP 等国际顶级会议上发表过多篇论文,研究领域涵盖大模型应用、多模态大模型、Agent 模拟等。
林绍辉:华东师范大学计算机学院研究员,紫江青年学者,2021 年扬帆计划获得者,曾获中国人工智能学会优秀博士论文提名奖、《中国科学:技术科学》最佳审稿人。在国际顶级期刊和会议发表超过 50 篇论文,包括 TPAMI、TNNLS、TMI、CVPR、ECCV、AAAI、IJCAI 等。担任 CVPR 2024 领域主席、IJCAI 2020 SPC 以及国际顶级期刊和会议审稿人。目前主要研究方向有计算机视觉、机器学习、图像视频理解、低层视觉等。
#ChatGPT的尽头也是「带货」
AI 版本的「什么值得买」。
凌晨,OpenAI 在 X 平台发布新动态,事关一项有趣的功能更新:
「我们已经对 ChatGPT 搜索进行了多项改进,今天我们开始推出更好的购物体验。」
所以,ChatGPT 最终也走向「带货」了吗?
点开一看,还真是这样。你说你想知道「预算之内哪款咖啡机最好」,它直接「3、2、1,上链接」:
再点一下产品卡片,ChatGPT 就会弹出一个侧边栏,包含更多有关该产品购买地点的详细信息,以及从亚马逊、百思买和 Reddit 等网站上的用户评论中提取的信息。这张卡片上还有一个「咨询」按钮,以便用户向 ChatGPT 询问有关该产品的具体问题。
即日起,OpenAI 在 GPT-4o 中为全球所有 ChatGPT 用户推出该功能,首先覆盖的是时尚、美容、家居用品和电子产品这些类别。
如果你打开 ChatGPT 搜索某一类产品,它就会提供一些推荐,展示这些产品的图片和评论,并提供直接可下单的产品的网页链接。所有的这些信息都是定制化的、符合用户具体需求的。OpenAI 表示,购物推荐的结果基于来自第三方的结构化元数据,例如价格、产品描述和评论。
引起我们注意的一句话是:「公司不会从通过 ChatGPT 搜索进行的购买中获得回扣。」
OpenAI 首席执行官奥特曼一直以来都反对在 ChatGPT 中投放广告,但近期接受 Stratechery 的 Ben Thompson 采访时,他「略微改变了态度」。
比起传统广告,我更想尝试的是很多人使用 Deep Research 做电商,比如说,我们是否可以想出某种新模式,即我们永远不会收钱来改变投放位置或其他,但如果您通过 Deep Research 购买了您找到的东西,我们会收取 2% 的联属费用或其他费用。这很好,我没意见。也许我们可以用一种「有品位」的方式做广告,但我不知道。我不太喜欢广告。
在过去的一段时间,搜索功能是 ChatGPT 增长最快的一部分。OpenAI 也公开了最新数据:「仅过去一周,网络搜索量就已超过 10 亿次。」
面对巨大的流量池,奥特曼很难不动摇。
如官方所说,ChatGPT 在帮用户选商品的时候有 3 个特点:
- 提供更优质的商品搜索结果
- 可视化的商品详情、价格和评价
- 直接指向购买链接
而且 OpenAI 还表示会很快将记忆功能与 Pro 和 Plus 用户的购物功能整合在一起,这意味着 ChatGPT 能参考用户之前的聊天记录,提供高度个性化的产品推荐。
那么问题就来了:
图源:https://x.com/UnityEagle/status/1916956421708779801
就像当年的谷歌一样,一开始宣称「通过创造更好、更个性化的互联网产品和信息查找体验来提升用户体验」。线上购物也是谷歌最重要的业务之一,但这么多年下来,竞价购买谷歌搜索优先展示位置广告的运营方式,最终导致了用户体验的下降。
OpenAI 会是例外吗?
看完所有信息,也上手体验了一下,我们输入:「在意大利,400 美元以下最划算的香水是什么?( What are the best value perfumes under $400 in Italy?) 」。
ChatGPT 在列出的商品下面给出了商品简短介绍:
推荐的种类也非常多,总有一款适合你:
你可以单击选中的那一款,进行下单:
购买选项超级多,恐怕是这款香水的全部购买链接都齐全了。几天送达,是否免运费,能不能退货…… 你关注的各种信息都非常详细。最重要的是,你可以在同一个界面下比较商品价格,不用再各种购物网站切换了。
右边栏的推荐理由、热门评论等信息,你都可以作为参考:
接着,我们又进行了另一项测试:「 想买一双女士运动鞋,预算 500 」。
我们发现,ChatGPT 不仅推荐了女款鞋,还推荐了男款。
一番体验下来,发现 ChatGPT 购物功能提供的信息还挺全面,这次是不是轮到电商平台紧张了。