在本文开始之前,我们需要了解什么是Attention(注意力):
Attention 机制最早是在计算机视觉里应用的,随后在 NLP(自然语言处理) 领域也开始应用了,真正发扬光大是在 NLP 领域,因为 2018 年BERT和 GPT的效果出奇的好,进而走红。而Transformer和 Attention 这些核心开始被大家重点关注。
(图中颜色由红到绿代表人机注意力程度)
将有限的注意力集中在重点信息上,从而节省资源,快速获得最有效的信息,Attention 机制可以更加好的解决序列长距离依赖问题,并且具有并行计算能力。
公式如下:
讲个故事,帮助理解:
图书馆(Source)里有很多书(Value),为了方便查找,我们给书做了编号(Key)。当我们想要了解漫威(Query)的时候,我们就可以看看那些动漫、电影、甚至二战(美国队长)相关的书籍。为了提高效率,并不是所有的书都会仔细看,针对漫威来说,动漫,电影相关的会看的仔细一些(权重高),但是二战的就只需要简单扫一下即可(权重低)。当我们全部看完后就对漫威有一个全面的了解了。
提到人工智能,大部分人想到的都是大语言模型(LLMs),它们本质上都是神经网络 但是神经网络早在20世纪40年代就已经问世,为什么在最近几年里 忽然成为大家备受关注的焦点。
其中一个核心原因是2017年的一项技术突破,谷歌的研究人员发表了一份著名论文:
《 Attention Is All You Need 》 —— 注意力就是你所需要的
The dominant sequence transduction models are based on complex recurrent or convolutional neural networks in an encoder-decoder configuration. The best performing models also connect the encoder and decoder through an attention mechanism. We propose a new simple network architecture, the Transformer, based solely on attention mechanisms, dispensing with recurrence and convolutions entirely. Experiments on two machine translation tasks show these models to be superior in quality while being more parallelizable and requiring significantly less time to train. Our model achieves 28.4 BLEU on the WMT 2014 English-to-German translation task, improving over the existing best results, including ensembles by over 2 BLEU. On the WMT 2014 English-to-French translation task, our model establishes a new single-model state-of-the-art BLEU score of 41.8 after training for 3.5 days on eight GPUs, a small fraction of the training costs of the best models from the literature. We show that the Transformer generalizes well to other tasks by applying it successfully to English constituency parsing both with large and limited training data.
显性序列转导模型基于编码器-解码器配置中的复杂循环或卷积神经网络。性能最佳的模型还通过注意力机制连接编码器和解码器。我们提出了一种新的简单网络架构,即 Transformer,它仅基于注意力机制,完全省去了重复和卷积。对两项机器翻译任务的实验表明,这些模型在质量上表现出色,同时更具可并行化性,并且需要更少的训练时间。我们的模型在 WMT 2014 英德翻译任务中达到了 28.4 BLEU,比现有的最佳结果有所提高,包括超过 2 个 BLEU 的集成。在 WMT 2014 英法翻译任务中,我们的模型在 8 个 GPU 上训练 3.5 天后,建立了新的单模型最先进的 BLEU 分数 41.8,这只是文献中最佳模型训练成本的一小部分。我们表明,Transformer 通过成功地将其应用于具有大量和有限训练数据的英语选民解析,可以很好地推广到其他任务。
首次提出了Transformer架构:
在Transformer架构出现之前,我们主要依赖循环神经网络(RNN)和卷积神经网络(CNN)处理文本
这类模型需要逐词逐句地处理文本数据 这会导致两个关键问题
- 训练速度较慢
- 难以维持长距离依赖关系
对于RNN (包括LSTM/GRU):
它的“循环”特性决定了它必须按顺序处理数据——计算当前词 (t) 的状态,必须等待上一个词 (t-1)的计算完成。这种依赖关系使其难以在GPU上大规模并行计算,限制了训练速度。
长距离依赖:尽管LSTM和GRU通过门控机制缓解了梯度消失问题,但在非常长的序列中,信息在逐步传递中仍会丢失,导致模型难以记住开头和结尾的精确关系。
对于CNN:
长距离依赖:CNN通过卷积核捕捉局部依赖关系。虽然可以通过堆叠很多层来扩大感受野,但要捕捉两个相距很远的词之间的直接关系,需要非常深的网络,这既不高效,效果也有限。
同时 这类模型也很难在多个GPU上实现并行计算,而并行计算至关重要:因为训练速度和成本与能否将任务高效分配到多个芯片上直接相关
自注意力机制 (Self-Attention)
Transformer架构使用自注意力机制
==自注意力机制是注意力机制的变体,其减少了对外部信息的依赖,更擅长捕捉数据或特征的内部相关性==
自注意力的核心思想是:在处理一个序列(比如一个句子)时,序列中每个单词的最终表示,都应该是序列中所有其他单词的加权和。
这个“权重”不是固定的,而是动态计算出来的,代表了不同单词对于当前单词的重要性。
- 查询向量 (Query, Q):
代表当前单词,它主动去“查询”序列中其他单词与自己的关系。可以理解为:"我是谁?我需要寻找什么样的信息来更好地理解我自己?" - 键向量 (Key, K):
代表序列中被查询的各个单词,它响应查询。可以理解为:"我这里有这样的信息,你可以根据它来判断我与你的相关性。" - 值向量 (Value, V):
同样代表序列中被查询的各个单词,但它包含的是单词的实际内容或语义信息。可以理解为:"一旦你确定我与你相关,这就是我能提供给你的具体信息。"
这三个向量是通过将每个单词的输入嵌入(Embedding)分别乘以三个独立的、在训练过程中学习到的权重矩阵(WQ, WK, WV)得到的。
计算过程可以分解为以下四步:
- 计算注意力分数 (Score):
为了确定当前词(Query)应该对其他所有词(Keys)投入多少关注,我们用当前词的Q向量与所有其他词的K向量进行点积(Dot-Product)运算。这个分数衡量了两个词之间的“相关性”
公式:Score = Q · Kᵀ - 缩放 (Scaling):
点积的结果可能会变得非常大,如果直接送入Softmax函数,可能会导致梯度变得极小,不利于训练。因此,论文作者提出将分数除以一个缩放因子,即K向量维度的平方根 (√d_k)
公式:Scaled Score = Score / √d_k - 计算权重 (Softmax):
将缩放后的分数通过一个Softmax函数,将其归一化为总和为1的概率分布。这个结果就是“注意力权重”(Attention Weights),它明确了在生成当前词的新表示时,应该给其他每个词分配多少“注意力”。
公式:Attention Weights = softmax(Scaled Score) - 加权求和 (Weighted Sum):
将上一步得到的注意力权重,分别乘以每个词对应的V向量,然后将所有结果相加。这样得到的最终向量,就是当前词融合了全局上下文信息之后的新表示
公式:Output = Attention Weights · V
通过如上计算过程,每个单词的输出都包含了整个序列的信息,且距离不再是障碍。
Self-Attention机制能让模型一次性处理句子中的所有词汇并自主学习词汇间的关联关系,这一改进带来了三大优势:
- 训练过程可实现大规模并行计算
- 上下文处理能力显著提升
- 模型规模拓展的性价比更高
对于工程师而言,这篇论文具有里程碑的意义 它彻底改变了人工智能领域的发展方向。如今几乎所有大模型语言的设计都源于这一架构。
双向编码器 (BERT)
在 Transformer 架构横空出世后,研究人员发现它的"编码器(Encoder,负责理解)"和"解码器(Decoder,负责生成)"都可以独立拆解出来使用。于是,学术界很快走向了两个不同的演化方向:
一个是 OpenAI 主导的生成派(单向解码器),另一个则是 Google 主导的理解派(双向编码器)
2018 年,Google 团队发表了一项主导了随后几年 NLP 领域格局的突破性研究:
《 BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding 》 —— BERT:用于语言理解的深度双向Transformer预训练
We introduce a new language representation model called BERT, which stands for Bidirectional Encoder Representations from Transformers. Unlike recent language representation models, BERT is designed to pre-train deep bidirectional representations from unlabeled text by jointly conditioning on both left and right context in all layers. As a result, the pre-trained BERT model can be fine-tuned with just one additional output layer to create state-of-the-art models for a wide range of tasks, such as question answering and language inference, without substantial task-specific architecture modifications.
BERT is conceptually simple and empirically powerful. It obtains new state-of-the-art results on eleven natural language processing tasks, including pushing the GLUE score to 80.5% (7.7% point absolute improvement), MultiNLI accuracy to 86.7% (4.6% absolute improvement), SQuAD v1.1 question answering Test F1 to 93.2 (1.5 point absolute improvement) and SQuAD v2.0 Test F1 to 83.1 (5.1 point absolute improvement).
我们引入了一个新的语言表示模型,称为BERT,代表Transformers的双向编码器表示。与近期的语言表示模型不同,BERT设计用于通过在所有层中对左右上下文联合条件,预训练未标记文本的深度双向表示。因此,预训练的BERT模型只需增加一层输出即可微调,创建适用于多种任务(如问答和语言推理)的先进模型,而无需对任务特定的架构进行重大修改。
BERT在概念上简单,但在实证上具有强大力量。它在11项自然语言处理任务上取得了最先进的新结果,包括将GLUE得分提升至80.5%(绝对提升7.7%),MultiNLI准确率提升至86.7%(绝对提升4.6%),SQuAD v1.1在F1测试中回答问题提升至93.2(绝对提升1.5分),以及SQuAD v2.0测试F1提升至83.1(绝对提升5.1分)。
BERT 的核心创新在于双向上下文(Bidirectional Context)。早期的语言模型(包括初代的 GPT)都是单向的,它们只能根据前面的词来预测下一个词。但这在"理解"一句话的整体含义时存在局限。
假设你在做英语考试里的完形填空题。
原句是:“我今天去了银行(Bank),因为我想存点___,然后再去对面的餐厅吃饭。”
如果模型是单向的,它读到“银行”时,可能会猜测你要存钱,但也可能会猜测这是“河岸”(Bank的另一个意思)。
但 BERT 就像一个聪明的学生,它同时扫视空格的左边和右边。它通过右边的“餐厅吃饭”和左边的“存点”,能极其精准地锁定整个句子的语境,从而填入最准确的词。
为了训练引述中这种能力,BERT 提出了两种新颖的预训练任务:
- 掩码语言模型 (Masked Language Modeling, MLM): 随机遮盖句子中 15% 的单词,让模型根据上下文去猜这些词是什么。(也就是让机器疯狂做完形填空题)。
- 下一句预测 (Next Sentence Prediction, NSP): 给模型两句话,让它判断第二句话在原文中是否真的紧跟着第一句话。这让模型学会了理解句子之间的逻辑关系。
BERT 发布后直接刷新了 11 项 NLP 任务的历史纪录,成为了当时文本分类、情感分析、搜索引擎意图理解的绝对行业标准。但由于它是一个编码器,它极其擅长"阅读理解",却很不擅长“长篇大论地写文章”。这也为后来 OpenAI 坚持的 GPT(仅解码器)路线最终统治"生成式 AI"埋下伏笔
提示词工程 (Engineering-prompt)
几年后的2020年 人工智能领域又迎来一次重大突破
《 language models are few-shot learners 》 —— 语言模型是少数样本学习者
也就是 GPT - 3 PAPER (GPT3论文):
Recent work has demonstrated substantial gains on many NLP tasks and benchmarks by pre-training on a large corpus of text followed by fine-tuning on a specific task. While typically task-agnostic in architecture, this method still requires task-specific fine-tuning datasets of thousands or tens of thousands of examples. By contrast, humans can generally perform a new language task from only a few examples or from simple instructions - something which current NLP systems still largely struggle to do. Here we show that scaling up language models greatly improves task-agnostic, few-shot performance, sometimes even reaching competitiveness with prior state-of-the-art fine-tuning approaches. Specifically, we train GPT-3, an autoregressive language model with 175 billion parameters, 10x more than any previous non-sparse language model, and test its performance in the few-shot setting. For all tasks, GPT-3 is applied without any gradient updates or fine-tuning, with tasks and few-shot demonstrations specified purely via text interaction with the model. GPT-3 achieves strong performance on many NLP datasets, including translation, question-answering, and cloze tasks, as well as several tasks that require on-the-fly reasoning or domain adaptation, such as unscrambling words, using a novel word in a sentence, or performing 3-digit arithmetic. At the same time, we also identify some datasets where GPT-3's few-shot learning still struggles, as well as some datasets where GPT-3 faces methodological issues related to training on large web corpora. Finally, we find that GPT-3 can generate samples of news articles which human evaluators have difficulty distinguishing from articles written by humans. We discuss broader societal impacts of this finding and of GPT-3 in general.
最近的工作表明,通过对大量文本语料库进行预训练,然后对特定任务进行微调,在许多 NLP 任务和基准测试中取得了巨大的进步。虽然在架构中通常与任务无关,但这种方法仍然需要数千或数万个示例的特定于任务的微调数据集。相比之下,人类通常只能从几个例子或简单的指令中执行新的语言任务——这是当前的 NLP 系统在很大程度上仍然难以做到的。在这里,我们表明,扩大语言模型可以极大地提高与任务无关的少样本性能,有时甚至可以通过先前最先进的微调方法达到竞争力。具体来说,我们训练了 GPT-3,这是一种具有 1750 亿个参数的自回归语言模型,是之前任何非稀疏语言模型的 10 倍,并测试了它在 few-shot 设置下的性能。对于所有任务,GPT-3 的应用无需任何梯度更新或微调,任务和少量演示完全通过与模型的文本交互来指定。GPT-3 在许多 NLP 数据集上取得了强大的性能,包括翻译、问答和完形填空任务,以及一些需要即时推理或领域适应的任务,例如解读单词、在句子中使用新单词或执行 3 位数算术。同时,我们还确定了一些 GPT-3 的少量学习仍然陷入困境的数据集,以及一些 GPT-3 面临与大型网络语料库训练相关的方法论问题的数据集。最后,我们发现GPT-3可以生成人类评估者难以与人类撰写的文章区分开来的新闻文章样本。我们讨论了这一发现和 GPT-3 的更广泛的社会影响。
这篇论文惊人的发现是:只要将Transformer模型的规模扩大到足够程度,它就能做到仅通过Prompt(提示词)中的几个示例完成全新的任务,无需针对特定任务进行微调。只需要描述需求并给出几个示例模式 模型就能出色的理解并完成任务
研究团队通过训练一个超大规模的"仅解码器Transformer模型"并在多个任务上系统的验证了这一结论,它们仅修改文本提示词分别测试了"零样本(仅提供指令)" "单样本(提供1个示例)"和"少样本(提供少量示例)"三种场景。
这一突破并非源于新的架构设计 而是证明了"模型规模+提示词"能解锁"上下文学习"的能力,即模型仅通过提示词中的模式就能自主推断并完成任务。
对于从业者而言,这一发现彻底改变了系统构建思路 无需为每个任务单独训练模型,只需要通过提示词引导通用模型就能满足大部分需求。这篇论文几乎单枪匹马地将主流NLP研究从“预训练-微调”转向了“基于提示工程的大模型(Prompting Large Models)”范式。我们今天与ChatGPT等模型的交互方式,正是这一范式的直接体现。
但此后我们逐渐发现:单纯无限扩大模型规模并不能解决所有问题 而"指令微调(Fine-tuning)"与"基于人类反馈的强化学习(RLHF)"技术让这些模型的输出更一致 更具实用性。2022年OpenAI研究人员发表论文:
《 Training language models to follow instructions with human feedback 》 —— 训练语言模型以遵循人类反馈的指令
也就是常说的Instruct GPT论文
Making language models bigger does not inherently make them better at following a user's intent. For example, large language models can generate outputs that are untruthful, toxic, or simply not helpful to the user. In other words, these models are not aligned with their users. In this paper, we show an avenue for aligning language models with user intent on a wide range of tasks by fine-tuning with human feedback. Starting with a set of labeler-written prompts and prompts submitted through the OpenAI API, we collect a dataset of labeler demonstrations of the desired model behavior, which we use to fine-tune GPT-3 using supervised learning. We then collect a dataset of rankings of model outputs, which we use to further fine-tune this supervised model using reinforcement learning from human feedback. We call the resulting models InstructGPT. In human evaluations on our prompt distribution, outputs from the 1.3B parameter InstructGPT model are preferred to outputs from the 175B GPT-3, despite having 100x fewer parameters. Moreover, InstructGPT models show improvements in truthfulness and reductions in toxic output generation while having minimal performance regressions on public NLP datasets. Even though InstructGPT still makes simple mistakes, our results show that fine-tuning with human feedback is a promising direction for aligning language models with human intent.
使语言模型变大本质并不能使它们更好地遵循用户的意图。例如,大型语言模型可能会生成不真实、有毒或根本对用户没有帮助的输出。换句话说,这些模型与其用户不一致。在本文中,我们展示了一种通过根据人类反馈进行微调来使语言模型与用户对各种任务的意图保持一致的途径。从一组标记者编写的提示和通过 OpenAI API 提交的提示开始,我们收集了所需模型行为的标记器演示数据集,我们使用这些数据集使用监督学习来微调 GPT-3。然后,我们收集一个模型输出排名数据集,我们使用来自人类反馈的强化学习来进一步微调这个监督模型。我们将生成的模型称为 InstructGPT。在对我们的提示分布进行的人类评估中,尽管参数少 100 倍,但 1.3B 参数 InstructGPT 模型的输出优于 3B GPT-100 的输出。此外,InstructGPT 模型显示出真实性的提高和有毒输出生成的减少,同时在公共 NLP 数据集上的性能回归最小。尽管 InstructGPT 仍然犯简单的错误,但我们的结果表明,根据人类反馈进行微调是使语言模型与人类意图保持一致的一个有前途的方向。
这篇论文旨在改进那些输出内容无用或包含有害信息的模型,核心方法是通过"基于人类反馈的强化学习(RLHF)"对模型进行微调。
图中总结了论文的核心方法 分为3步:
第一步:收集示例数据并训练监督模型(Supervised Fine-Tuning,SFT) - 目的:初步让模型学会“按指令办事”。
- 具体步骤: 1. 从一个任务提示(prompt)数据集中抽取提示,比如“用简单语言给 6 岁小孩解释月球登陆”。 2. 人类标注员提供理想的回答(例如:“一些人去了月球,他们用火箭旅行……”)。 3. 将这些示例数据用于模型的初步微调,形成一个能跟随指令的基础模型。
第二步:收集比较数据并训练奖励模型(Reward Model,RM) - 目的:建立一个能评估输出好坏的“奖励模型”。
- 具体步骤: 1. 针对同一个提示(比如“用简单语言解释月球”),让模型生成多个不同的回答(如 A: “月亮是地球的卫星”,B: “月亮是天上的光球”,......)。 2. 人类标注员对这些回答按优劣排序(比如 D > C > A > B)。 3. 利用这些排名数据训练奖励模型,让它能预测人类的偏好。
第三步:基于奖励模型进行强化学习优化(Reinforcement Learning with PPO) - 目的:用强化学习算法进一步优化模型,使其输出更贴近人类偏好。
- 具体步骤: 1. 使用新的任务提示(如“写一个关于青蛙的故事”)让模型生成回答。 2. 用奖励模型评估回答的好坏,计算出奖励分数。 3. 使用近端策略优化算法(PPO)调整模型的参数,使其倾向生成更高分的回答。
这篇论文的核心结论是:一个规模较小但"对齐"(即能遵循人类指令)的模型可能比规模更大但"未对齐"的模型更受欢迎。因为它能准确遵循指令 尊重用户意图。
此后 模型对齐领域又涌现出诸多新进展,例如DPO技术即"无需构建明确的奖励模型 可直接从人类排名的偏好数据中学习"
DPO —— Direct Preference Optimization,直接偏好优化
为什么会有DPO技术提出?
传统 RLHF(Reward modeling + PPO 等)有两个主要复杂点:
- 需要先训练奖励模型(reward model)来把偏好转成标量回报;
- 然后用强化学习(PPO/REINFORCE)在策略空间上最大化该奖励,同时用 KL 惩罚防止策略偏离基准模型。这整个 pipeline 计算复杂、不稳定、需要采样与大量超参调优。DPO 通过一个变换(将隐含奖励参数化为策略的对数比),把最终要得到的最优策略表示出来,从而把“学奖励 + RL”两步合成一步的“直接学习策略”的二元分类/最大似然问题。
上公式图文来自(翻译前):https://arxiv.org/pdf/2305.18290
理论上,DPO 是针对在 RLHF 中常用的带有 KL 惩罚目标做了重参数化(或说找到了 reward ↔ optimal policy 的解析关系),从而可以把“训练奖励模型 + 用 RL 找最优策略”这一流程转换为直接对策略进行监督式优化。论文证明了在一定模型化/偏好模型(如 Bradley–Terry 等)假设下,两者的目标是一致(或等价的)
不过 即便我们拥有一个"对齐"的模型 它在特定任务上的表现也可能不尽人意 例如,你可能需要模型以特定的格式输出结果或使用特定领域的语言(如法律 医疗文本)
基础语言模型 (LLaMA)
在 GPT-3 和 InstructGPT 证明了"超大模型规模"和"人类对齐"的威力后,大语言模型似乎成了拥有顶级算力中心的少数科技巨头的专属游戏。动辄 1750 亿参数的模型,普通研究机构和开发者连将它加载到内存里都做不到,更别提去修改和微调它了。
直到 2023 年初,Meta(原Facebook)AI 研究团队发表了一篇彻底引爆开源社区的论文:
《 LLaMA: Open and Efficient Foundation Language Models 》 —— LLaMA:开放且高效的基础语言模型
We introduce LLaMA, a collection of foundation language models ranging from 7B to 65B parameters. We train our models on trillions of tokens, and show that it is possible to train state-of-the-art models using publicly available datasets exclusively, without resorting to proprietary and inaccessible datasets. In particular, LLaMA-13B outperforms GPT-3 (175B) on most benchmarks, and LLaMA-65B is competitive with the best models, Chinchilla-70B and PaLM-540B. We release all our models to the research community.
我们介绍了 LLaMA,这是一组参数范围从 7B(70亿)到 65B(650亿)的基础语言模型。我们在数万亿个 token 上训练我们的模型,并表明完全有可能仅使用公开可用的数据集来训练最先进的模型,而无需诉诸专有且不可访问的数据集。特别值得一提的是,LLaMA-13B 在大多数基准测试中优于 GPT-3 (175B),而 LLaMA-65B 与当时最好的模型(Chinchilla-70B 和 PaLM-540B)具有竞争力。我们将所有模型向研究社区发布。
在此之前,行业内的普遍共识是:想让模型变聪明,就必须增加参数量。但 LLaMA 团队采用了一种截然不同的哲学:控制模型体积,但喂给它远超以往的极大规模数据
这句话什么意思呢?假设我们要培养优秀的学者。GPT-3 就像是一个天生脑容量极大(1750亿参数)的天才,但它在学校里只读了 300 本书(约 3000亿 token 的训练数据)。它很聪明,但一旦毕业离开学校(推理阶段),你需要为这个庞大的天才支付极高的薪水(GPU显存和算力)而LLaMA-7B 就像是一个脑容量只有天才几十分之一的普通人(70亿参数),但它极其刻苦,在学校里死记硬背、融会贯通了 10,000 本书(1万亿到1.4万亿 token)。结果毕业测试时,这个普通人的表现不仅不逊于天才,甚至在某些科目上超越了天才。更重要的是,雇佣这个普通人的成本极低,只需要一台普通的家用电脑就能让他工作。
LLaMA 证明了一个至关重要的结论:对于大模型而言,推理成本(在实际应用中运行模型的代价)远比训练成本更重要。 一个用超大规模数据训练出来的小模型,其实用价值远远大于一个训练数据不足的巨型模型
Meta 将 LLaMA 的模型权重向研究社区开源,这一举动无异于向 AI 领域投下了一枚普罗米修斯的火种。对于工程师和开源社区而言,由于 7B 和 13B 版本的模型体积足够小,能够被塞进消费级显卡中,这直接催生了随后一整年里爆发式的技术繁荣。基于 LLaMA 架构的各种衍生模型层出不穷。更重要的是,正因为开发者终于在本地拥有了可以把玩的开源基座模型,才迫切地推动了我们接下来后文的 “微调 (Fine-tuning / LoRA)” 和 “量化 (Quantization)” 等技术的飞速成熟。
微调 (Fine-tuning / LoRA)
除了"上下文学习"(即提示工程),另一种让模型按预期输出的方法是"微调" 它的核心逻辑是继续用"目标行为示例"训练模型 让它将这些模式内化为自身能力
"全量微调"需要更新模型的所有权重 这一过程耗时且对计算资源要求极高。
《 LoRA: Low-Rank Adaptation of Large Language Models 》—— 大型语言模型的低秩适配
data for 2021Y
An important paradigm of natural language processing consists of large-scale pre-training on general domain data and adaptation to particular tasks or domains. As we pre-train larger models, full fine-tuning, which retrains all model parameters, becomes less feasible. Using GPT-3 175B as an example -- deploying independent instances of fine-tuned models, each with 175B parameters, is prohibitively expensive. We propose Low-Rank Adaptation, or LoRA, which freezes the pre-trained model weights and injects trainable rank decomposition matrices into each layer of the Transformer architecture, greatly reducing the number of trainable parameters for downstream tasks. Compared to GPT-3 175B fine-tuned with Adam, LoRA can reduce the number of trainable parameters by 10,000 times and the GPU memory requirement by 3 times. LoRA performs on-par or better than fine-tuning in model quality on RoBERTa, DeBERTa, GPT-2, and GPT-3, despite having fewer trainable parameters, a higher training throughput, and, unlike adapters, no additional inference latency. We also provide an empirical investigation into rank-deficiency in language model adaptation, which sheds light on the efficacy of LoRA. We release a package that facilitates the integration of LoRA with PyTorch models and provide our implementations and model checkpoints for RoBERTa, DeBERTa, and GPT-2 at this https URL.
自然语言处理的一个重要范式包括对一般领域数据的大规模预训练和对特定任务或领域的适应。当我们预训练更大的模型时,重新训练所有模型参数的完全微调变得不太可行。以 GPT-3 175B 为例,部署微调模型的独立实例,每个实例都有 175B 参数,成本高得令人望而却步。我们提出了低秩适应,即LoRA,它冻结了预训练的模型权重,并将可训练的秩分解矩阵注入到Transformer架构的每一层中,大大减少了下游任务的可训练参数数量。与用 Adam 微调的 GPT-3 175B 相比,LoRA 可以将可训练参数数量减少 10,000 倍,GPU 内存需求减少 3 倍。LoRA 在 RoBERTa、DeBERTa、GPT-2 和 GPT-3 上的模型质量表现相当或更好,尽管可训练参数更少,训练吞吐量更高,并且与适配器不同,没有额外的推理延迟。我们还对语言模型适应中的等级缺陷进行了实证研究,这揭示了 LoRA 的功效。我们发布了一个软件包,促进 LoRA 与 PyTorch 模型的集成,并在此 https URL 上提供 RoBERTa、DeBERTa 和 GPT-2 的实现和模型检查点。
LoRA的思路并非更新模型的所有权重 而是在模型中插入小型的"低迭适配器" 这些微型矩阵能在低维空间中微调大型权重矩阵且只需要训练这些适配器即可,基础模型的权重保持"冻结状态"
这使得可训练参数数量比全量微调减少1万倍 在某些配置下GPU内存占用也降低了约3倍。
LoRA让微调从"仅能在实验室开展的研究项目"变成了"单张GPU即可完成的常规操作",我们还将LoRA与"量化技术(下文中将介绍)"结合 进一步降低了资源消耗。
闪存注意力 (FlashAttention)
在标准的 Transformer 中,Self-Attention 的计算复杂度和内存占用是序列长度 的平方关系 ( ):
- 当你输入 1000 个词,注意力矩阵大小是
- 当你输入 10 万个词,注意力矩阵就会膨胀到 (约 100 亿个元素)
可想而知,用于计算的GPU显存存不下这么大的空间矩阵,随着矩阵变大的同时,读写速度也将变慢(IO瓶颈:因为GPU的计算速度其实很快,但从显存中读写速度很慢;标准的 Attention 需要频繁地在显存和处理器之间搬运大量数据,导致 GPU 大部分时间在等数据,而不是算逻辑)
FlashAttention 是让 Transformer 从"只能看几页纸"进化到"能看几本书"的关键底层优化
《 FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness 》—— FlashAttention:快速且内存高效的精准注意力机制,并具备IO感知
Transformers are slow and memory-hungry on long sequences, since the time and memory complexity of self-attention are quadratic in sequence length. Approximate attention methods have attempted to address this problem by trading off model quality to reduce the compute complexity, but often do not achieve wall-clock speedup. We argue that a missing principle is making attention algorithms IO-aware -- accounting for reads and writes between levels of GPU memory. We propose FlashAttention, an IO-aware exact attention algorithm that uses tiling to reduce the number of memory reads/writes between GPU high bandwidth memory (HBM) and GPU on-chip SRAM. We analyze the IO complexity of FlashAttention, showing that it requires fewer HBM accesses than standard attention, and is optimal for a range of SRAM sizes. We also extend FlashAttention to block-sparse attention, yielding an approximate attention algorithm that is faster than any existing approximate attention method. FlashAttention trains Transformers faster than existing baselines: 15% end-to-end wall-clock speedup on BERT-large (seq. length 512) compared to the MLPerf 1.1 training speed record, 3\times speedup on GPT-2 (seq. length 1K), and 2.4\times speedup on long-range arena (seq. length 1K-4K). FlashAttention and block-sparse FlashAttention enable longer context in Transformers, yielding higher quality models (0.7 better perplexity on GPT-2 and 6.4 points of lift on long-document classification) and entirely new capabilities: the first Transformers to achieve better-than-chance performance on the Path-X challenge (seq. length 16K, 61.4% accuracy) and Path-256 (seq. length 64K, 63.1% accuracy).
Transformers在长序列中速度慢且占用大量内存,因为自注意的时间和记忆复杂度为序列长度的平方。近似注意力方法试图通过牺牲模型质量来降低计算复杂度来解决这个问题,但通常无法实现墙壁时钟的加速。我们认为一个缺失的原则是让注意力算法具备IO感知能力——即考虑GPU内存层级之间的读写。我们提出了FlashAttention,这是一种IO感知的精确注意力算法,利用平铺减少GPU高带宽内存(HBM)与GPU片上SRAM之间的读写次数。我们分析了FlashAttention的IO复杂度,显示其所需的HBM访问次数少于标准注意力,并且适用于不同SRAM大小。我们还将FlashAttention扩展到块稀疏注意力,产生了比任何现有近似注意力方法都更快的近似注意力算法。FlashAttention训练变换器的速度比现有基线更快:BERT-large(序列长度512)端到端墙钟加速15%,相比MLPerf 1.1训练速度纪录提升15%,GPT-2加速3倍(序列长度1K),长距离竞技场加速2.4倍(序列长度1K-4K)。FlashAttention和区块稀疏的FlashAttention使变换金器中能够提供更长的上下文,产生更高质量的模型(GPT-2的困惑度提升0.7点,长文档分类提升6.4点),并具备全新能力:首批在Path-X挑战中实现优于偶然性能的Transformer(序列长度16K,准确率61.4%)和Path-256(序列长度64K,准确率63.1%)
由斯坦福大学的 Tri Dao 等人在 2022 年提出。它的核心思想不是减少计算量,而是减少对显存(HBM)的访问次数(IO-Awareness)
该论文提出的方案主要做了三件事:
- 分块(Tiling)
它不一次性计算整个巨大的 注意力矩阵,而是将其切成一个个小方块。
- 它把数据从小而快的 SRAM(GPU 内部的高速缓存)中进行分块计算。
- 计算完一个小块后,直接更新结果,不需要把中间那个巨大的 矩阵写回到慢速的 HBM(显存)里。
- 重算(Recomputation)
在模型训练的“反向传播”阶段,通常需要存储中间结果。但 FlashAttention 发现:与其花时间把中间结果存进显存,不如在需要时直接重新算一遍。因为现在 GPU 的算力远剩于带宽,“重算”的时间远比“读写显存”的时间短。
- 在线 Softmax(Online Softmax)
这是一个数学技巧。Softmax 通常需要知道整行数据的最大值才能计算,这在分块计算时很困难(因为你只看到了局部)。FlashAttention 引入了一个增量计算 Softmax 的公式,使得分块计算成为可能。
FlashAttention经历三个版本:
- FlashAttention-1 (2022):初步实现 IO 优化,比 PyTorch 自带的 Attention 快 2-4 倍,大幅节省显存;
- FlashAttention-2 (2023):优化了任务分配:让 GPU 的多个核心(SM)干活更均匀,减少闲置,并且在 A100/H100 上比 v1 又快了一倍,接近硬件算力极限(理论峰值的 70% 以上)
- FlashAttention-3 (2024):针对 H100 (Hopper) 优化:利用了 H100 特有的硬件加速器(如 TMA 和 FP8 精度)支持更低精度的计算,速度进一步飙升
虽然 Transformer 奠定了基础,但其 的复杂度成为了通往长文本的拦路虎。FlashAttention 通过 IO 感知(IO-Aware)的设计,利用分块和重算技术,绕过了显存带宽的瓶颈。这不仅让模型推理速度提升了数倍,更直接促成了 128k 及以上超长上下文时代的到来,为后续 RAG 和复杂 Agent 的长短期记忆处理提供了物理基础
知识蒸馏 (Knowledge-Distillation)
接下来 话题将转向"模型小型化"技术
《 DistilBERT, a distilled version of BERT: smaller, faster, cheaper and lighter 》—— DistilBERT,BERT 的蒸馏版本:更小、更快、更便宜、更轻
As Transfer Learning from large-scale pre-trained models becomes more prevalent in Natural Language Processing (NLP), operating these large models in on-the-edge and/or under constrained computational training or inference budgets remains challenging. In this work, we propose a method to pre-train a smaller general-purpose language representation model, called DistilBERT, which can then be fine-tuned with good performances on a wide range of tasks like its larger counterparts. While most prior work investigated the use of distillation for building task-specific models, we leverage knowledge distillation during the pre-training phase and show that it is possible to reduce the size of a BERT model by 40%, while retaining 97% of its language understanding capabilities and being 60% faster. To leverage the inductive biases learned by larger models during pre-training, we introduce a triple loss combining language modeling, distillation and cosine-distance losses. Our smaller, faster and lighter model is cheaper to pre-train and we demonstrate its capabilities for on-device computations in a proof-of-concept experiment and a comparative on-device study.
随着来自大规模预训练模型的迁移学习在自然语言处理 (NLP) 中变得越来越普遍,在边缘和/或受限的计算训练或推理预算下运行这些大型模型仍然具有挑战性。在这项工作中,我们提出了一种方法来预训练一个较小的通用语言表示模型,称为 DistilBERT,然后可以像大型对应物一样在各种任务上进行微调,并具有良好的性能。虽然之前的大多数工作都研究了使用蒸馏来构建特定于任务的模型,但我们在预训练阶段利用了知识蒸馏,并表明可以将 BERT 模型的大小减少 40%,同时保留其 97% 的语言理解能力并加快 60%。为了利用大型模型在预训练期间学习到的归纳偏差,我们引入了结合语言建模、蒸馏和余弦距离损失的三重损失。我们的模型更小、更快、更轻,预训练成本更低,我们在概念验证实验和设备上比较研究中展示了其设备上计算的能力。
可通过该技术压缩模型规模 其核心思路是 让一个小型"学生模型"模仿大型"教师模型"的行为 理想情况下,学生模型能保留教师模型的大部分精度 同时成本仅为后者的一小部分。论文显示 在预训练阶段进行通用知识蒸馏后 模型参数约减少40% 训练速度加快60% 同时仍能保留BERT(基于Transformer的双向预训练语言模型)语言理解能力的97%
这一技术对"边缘设备部署"至关重要 在这类场景中 延迟限制严格 内存资源有限 甚至可能存在隐私约束或无网络连接的情况。一个轻量化模型可在手机等设备运行也就意味着解锁的大量实际应用场景。
量化 (Quantization)
另一种实现模型小型化的技术是量化(Quantization)简单来说是用"更少位数的数值"存储模型参数 例如用8位整数(int 8) 代替16位或32位浮点数 (FP 16或 bf 16) 这能显著减少模型内存占用 同时加快计算速度
但量化真正的挑战在于:如何在量化过程中避免精度损失?
《 LLM.int8(): 8-bit Matrix Multiplication for Transformers at Scale 》—— LLM.int8():大规模Transformer的8位矩阵乘法
Large language models have been widely adopted but require significant GPU memory for inference. We develop a procedure for Int8 matrix multiplication for feed-forward and attention projection layers in transformers, which cut the memory needed for inference by half while retaining full precision performance. With our method, a 175B parameter 16/32-bit checkpoint can be loaded, converted to Int8, and used immediately without performance degradation. This is made possible by understanding and working around properties of highly systematic emergent features in transformer language models that dominate attention and transformer predictive performance. To cope with these features, we develop a two-part quantization procedure, LLM.int8(). We first use vector-wise quantization with separate normalization constants for each inner product in the matrix multiplication, to quantize most of the features. However, for the emergent outliers, we also include a new mixed-precision decomposition scheme, which isolates the outlier feature dimensions into a 16-bit matrix multiplication while still more than 99.9% of values are multiplied in 8-bit. Using LLM.int8(), we show empirically it is possible to perform inference in LLMs with up to 175B parameters without any performance degradation. This result makes such models much more accessible, for example making it possible to use OPT-175B/BLOOM on a single server with consumer GPUs. We open-source our software.
大型语言模型已被广泛采用,但需要大量的 GPU 内存来进行推理。我们开发了一种用于 Transformer 中前馈层和注意力投影层的 Int8 矩阵乘法程序,该程序将推理所需的内存减少一半,同时保持全精度性能。使用我们的方法,可以加载 175B 参数 16/32 位检查点,转换为 Int8,并立即使用,而不会降低性能。这是通过理解和解决 Transformer 语言模型中主导注意力和 Transformer 预测性能的高度系统化涌现特征的属性来实现的。为了应对这些特性,我们开发了一个由两部分组成的量化过程 LLM.int8()。我们首先使用矢量量化,对矩阵乘法中的每个内积具有单独的归一化常数,以量化大多数特征。然而,对于涌现的异常值,我们还包括一种新的混合精度分解方案,该方案将异常值特征维度隔离成 16 位矩阵乘法,同时仍然超过 99.9% 的值以 8 位乘法。使用 LLM.int8(),我们根据经验表明,可以在具有高达 175B 参数的 LLM 中执行推理,而不会降低任何性能。这一结果使此类模型更容易访问,例如,可以在具有消费类 GPU 的单个服务器上使用 OPT-175B/BLOOM。我们开源我们的软件。
该论文首次提出了一种方法能在"数十亿参数模型的Transformer模型"上实现量化 且不损失性能 其核心创新是"异常值感知"
研究团队发现少数"异常值特征" 即某些通道中异常大的激活值 尤其在注意力层和前馈层中是导致"(naive)朴素int8量化"精度下降的主要关键原因
其核心步骤如下:
- 识别异常值: 在输入矩阵X中,通过一个阈值来动态地、实时地识别出哪些特征维度属于“异常值”。
- 矩阵乘法分解: 将核心的矩阵乘法 Y = XW 分解为两个并行部分:
- 异常值部分(高精度计算):
对于输入X中被识别为“异常值”的少数几个特征维度,保持其原始的FP16高精度。然后,只对这几个维度进行FP16精度的矩阵乘法。这保证了关键信息的保真度。 - 非异常值部分(低精度计算):
对于X中占绝大多数的、数值常规的特征维度,安全地将其和对应的权重`W`都量化到INT8精度。然后,使用硬件高度优化的INT8矩阵乘法指令进行计算。这部分贡献了主要的内存节省和效率提升。
- 结果合并:
将上述两个部分计算得到的结果(异常值部分的FP16结果和非异常值部分的INT8反量化后的结果)相加,得到最终的、与原始FP16计算结果几乎完全相同的输出Y。
(感谢@Solana-井上川美提供的形象比喻):这就像一个经验丰富的会计师处理账目。对于成百上千笔日常的小额交易(非异常值),他可以使用四舍五入到“元”的简化计算(INT8)。但对于一笔上亿元的巨额投资(异常值),他必须精确到“分”来计算(FP16),以防出现巨大误差。最后,将两部分结果汇总,得到精确的总账
这种"混合精度"策略在保证模型质量的同时 大幅度降低了内存占用 让"单张GPU运行大模型推理"成为可能。而在此之前这类模型需要小型GPU集群才能运行。
该方法被实现为对PyTorch中nn.Linear层的简单替换,并被迅速集成到HuggingFace的transformers库中。用户只需在加载模型时添加一个参数(load_in_8bit=True),即可轻松启用,无需修改模型代码。
检索增强生成 (RAG)
RAG —— Retrieval-Augmented Generation 检索增强生成
即便完成了微调 这些模型仍面临一个关键挑战:难以获取训练数据之外的信息。我们需要某种方式让模型能够访问"训练数据截止日期之后的新信息"或"企业私有数据"等专属内容:
《 Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks 》—— 知识密集型 NLP 任务的检索增强生成
Large pre-trained language models have been shown to store factual knowledge in their parameters, and achieve state-of-the-art results when fine-tuned on downstream NLP tasks. However, their ability to access and precisely manipulate knowledge is still limited, and hence on knowledge-intensive tasks, their performance lags behind task-specific architectures. Additionally, providing provenance for their decisions and updating their world knowledge remain open research problems. Pre-trained models with a differentiable access mechanism to explicit non-parametric memory can overcome this issue, but have so far been only investigated for extractive downstream tasks. We explore a general-purpose fine-tuning recipe for retrieval-augmented generation (RAG) -- models which combine pre-trained parametric and non-parametric memory for language generation. We introduce RAG models where the parametric memory is a pre-trained seq2seq model and the non-parametric memory is a dense vector index of Wikipedia, accessed with a pre-trained neural retriever. We compare two RAG formulations, one which conditions on the same retrieved passages across the whole generated sequence, the other can use different passages per token. We fine-tune and evaluate our models on a wide range of knowledge-intensive NLP tasks and set the state-of-the-art on three open domain QA tasks, outperforming parametric seq2seq models and task-specific retrieve-and-extract architectures. For language generation tasks, we find that RAG models generate more specific, diverse and factual language than a state-of-the-art parametric-only seq2seq baseline.
大型预训练语言模型已被证明可以将事实知识存储在其参数中,并在下游 NLP 任务上进行微调时获得最先进的结果。然而,它们访问和精确作知识的能力仍然有限,因此在知识密集型任务中,它们的性能落后于特定于任务的架构。此外,为他们的决定提供出处和更新他们的世界知识仍然是悬而未决的研究问题。具有显式非参数内存的可微访问机制的预训练模型可以克服这个问题,但迄今为止仅针对提取性下游任务进行了研究。我们探索了检索增强生成 (RAG) 的通用微调配方——结合了预训练的参数和非参数记忆进行语言生成的模型。我们引入了 RAG 模型,其中参数记忆是预训练的 seq2seq 模型,非参数记忆是维基百科的密集向量索引,使用预训练的神经检索器进行访问。我们比较了两种 RAG 公式,一种对整个生成序列中相同的检索段落进行条件,另一种可以为每个标记使用不同的段落。我们在各种知识密集型 NLP 任务上微调和评估我们的模型,并在三个开放领域 QA 任务上设置了最先进的技术,优于参数化 seq2seq 模型和特定于任务的检索和提取架构。对于语言生成任务,我们发现 RAG 模型生成的语言比最先进的纯参数 seq2seq 基线更具体、更多样化和更真实。
该方案的核心是:在模型生成回答前 先让它检索相关文档并在阅读这些文档后再输出结果,这一方法试图同时解决两个问题 即 "模型知识过时" 和 "生成内容"幻觉"(即编造不存在的信息)" 无需依赖模型在预训练阶段记忆的知识,你可将它与内部数据库或公共网络连接 让模型基于检索到的信息生成结果并引用信息来源
如今 很多生产级LLM系统都采用了这一模式
随着实践的深入 我们发现"检索质量"至关重要,你采用的文本分块 索引构建 搜索重排序 查询改写等方法往往比选择的基础模型更能影响最终结果,我们也从"仅获取Top - K最佳匹配结果"的简单模式发展为"多步骤流水线"模式 通过迭代优化查询问题 整合多来源信息 结合"事实一致性检查"和"来源引用"等评估方法来提高结果的可靠。
智能体 (Agents)
现在我们已经拥有强大的模型 也能让它访问真实的数据 但这些模型无法自主完成任务 这就是"智能体-Agents"的用武之地。
接下来的内容并非来自于传统论文:
《 The Rise and Potential of Large Language Model Based Agents 》 —— 基于大型语言模型的代理的兴起和潜力
For a long time, humanity has pursued artificial intelligence (AI) equivalent to or surpassing the human level, with AI agents considered a promising vehicle for this pursuit. AI agents are artificial entities that sense their environment, make decisions, and take actions. Many efforts have been made to develop intelligent agents, but they mainly focus on advancement in algorithms or training strategies to enhance specific capabilities or performance on particular tasks. Actually, what the community lacks is a general and powerful model to serve as a starting point for designing AI agents that can adapt to diverse scenarios. Due to the versatile capabilities they demonstrate, large language models (LLMs) are regarded as potential sparks for Artificial General Intelligence (AGI), offering hope for building general AI agents. Many researchers have leveraged LLMs as the foundation to build AI agents and have achieved significant progress. In this paper, we perform a comprehensive survey on LLM-based agents. We start by tracing the concept of agents from its philosophical origins to its development in AI, and explain why LLMs are suitable foundations for agents. Building upon this, we present a general framework for LLM-based agents, comprising three main components: brain, perception, and action, and the framework can be tailored for different applications. Subsequently, we explore the extensive applications of LLM-based agents in three aspects: single-agent scenarios, multi-agent scenarios, and human-agent cooperation. Following this, we delve into agent societies, exploring the behavior and personality of LLM-based agents, the social phenomena that emerge from an agent society, and the insights they offer for human society. Finally, we discuss several key topics and open problems within the field. A repository for the related papers at this https URL.
长期以来,人类一直在追求与人类水平相当或超越人类水平的人工智能(AI),而人工智能代理被认为是实现这一目标的有前途的工具。人工智能代理是感知环境、做出决策并采取行动的人工实体。人们已经做出了许多努力来开发智能代理,但它们主要集中在算法或训练策略的进步上,以增强特定任务的特定能力或性能。实际上,社区缺乏的是一个通用而强大的模型,作为设计能够适应多样化场景的 AI 代理的起点。由于它们所展示的多功能性,大型语言模型(LLM)被视为通用人工智能(AGI)的潜在火花,为构建通用人工智能代理带来了希望。许多研究人员利用法学硕士作为构建人工智能代理的基础,并取得了重大进展。在本文中,我们对基于LLM的代理进行了全面的调查。我们首先追溯智能体的概念,从其哲学起源到人工智能的发展,并解释为什么法学硕士是智能体的合适基础。在此基础上,我们提出了一个基于 LLM 的代理的通用框架,包括三个主要组件:大脑、感知和行动,并且该框架可以针对不同的应用进行定制。随后,我们从单智能体场景、多智能体场景和人智能体协作三个方面探讨了基于LLM的智能体的广泛应用。接下来,我们深入研究智能体社会,探索基于法学硕士的智能体的行为和个性、智能体社会中出现的社会现象以及它们为人类社会提供的见解。最后,我们讨论了该领域内的几个关键主题和悬而未决的问题。此 https URL 上的相关论文存储库。
这篇综述文章对2023年之前的智能体领域进行了全面总结 该综述提出了理解智能体的简单框架 极具参考意义
通用构建模块可用于组织所有 LLM-agent 的设计思想:
- Brain(大脑)
— LLM 本身(或经微调的 LLM)承担推理、规划、记忆检索、决策生成等高阶认知功能;可与外部知识库、记忆模块、任务描述等联动。 - Perception(感知)
— 环境感知组件,包括文本输入、视觉/语音/传感器输入的编码、信息抽取与状态更新;在物理或多模态场景中特别重要。 - Action(行动/工具)
— Agent 执行动作的能力:调用外部工具(API、搜索、数据库、机器人驱动器)、生成文本输出、操控界面或动作序列等。论文强调“工具使用”是 LLM-agent 能力的关键放大器。
综述中还梳理了智能体的常见应用场景
- 单智能体(Single-agent)场景:
侧重单一 LLM-agent 的规划、记忆、工具链(如 API 调用)、长期任务执行(例如个人助理、代码生成助手、自动化办公机器人)。论文讨论了如何把 prompt engineering、链式思维(Chain-of-Thought)、外部记忆与检索结合以增强单 agent 的持续性与一致性。 - 多智能体(Multi-agent)场景:
多 LLM-agent 间的协作/对抗(例如角色扮演、任务分解、博弈模拟、模拟社会实验)。作者指出多 agent 系统能产生复杂的协作策略、分布式推理和“社会现象”(例如分工、信息流动、协商机制)。论文还讨论了多智能体系统在可解释性、协调与稳定性上的挑战。 - 人机协作(Human-agent cooperation):
研究人类与 LLM-agent 在决策、创作、编程、教育等任务中的协同方式,包括人类在环(human-in-the-loop)机制、交互界面设计、信任/责任分配与可控性。论文强调在高风险领域(法律、医疗)需要严格的审查与多人监督流程。
以及"智能体社群"等创新方向:
当大量 LLM-agent 共存时可能出现的社会学/经济学式现象:角色分化、信息流通网络、规范与不规范行为、共识形成与误导传播等。作者认为通过构建 agent 社会可以研究宏观社会行为、测试治理机制,并帮助设计更健壮的人机社会系统,但同时带来伦理与安全风险。
此外,该综述列举并评估了若干关键模块与实现技术,包括但不限于
- Prompt 设计与 Chain-of-Thought(推理链):用于提升 LLM 的多步推理能力。
- 工具化(Tool use)与 API 接口:把检索、计算、执行、外部数据库访问等封装为可调用工具,极大扩展 agent 能力。
- 记忆/长期状态管理:短期上下文受限,需外部记忆或检索增强(RAG / external memory)以保持长期一致性。
- 多模态感知:视觉/语音/传感器输入的融入使 agent 可用于机器人与现实世界交互场景。
接下来 我们将话题转向"模型规模与效率"
《 Switch Transformers: Scaling to Trillion Parameter Models with Simple and Efficient Sparsity 》
—— Switch Transformers: 扩展到具有简单高效稀疏性的万亿参数模型
In deep learning, models typically reuse the same parameters for all inputs. Mixture of Experts (MoE) defies this and instead selects different parameters for each incoming example. The result is a sparsely-activated model -- with outrageous numbers of parameters -- but a constant computational cost. However, despite several notable successes of MoE, widespread adoption has been hindered by complexity, communication costs and training instability -- we address these with the Switch Transformer. We simplify the MoE routing algorithm and design intuitive improved models with reduced communication and computational costs. Our proposed training techniques help wrangle the instabilities and we show large sparse models may be trained, for the first time, with lower precision (bfloat16) formats. We design models based off T5-Base and T5-Large to obtain up to 7x increases in pre-training speed with the same computational resources. These improvements extend into multilingual settings where we measure gains over the mT5-Base version across all 101 languages. Finally, we advance the current scale of language models by pre-training up to trillion parameter models on the "Colossal Clean Crawled Corpus" and achieve a 4x speedup over the T5-XXL model.
在深度学习中,模型通常对所有输入重复使用相同的参数。混合专家 (MoE) 违背了这一点,而是为每个传入的示例选择不同的参数。结果是一个稀疏激活的模型——具有数量惊人的参数——但计算成本是恒定的。然而,尽管 MoE 取得了一些显着的成功,但广泛采用仍受到复杂性、通信成本和培训不稳定性的阻碍——我们通过开关变压器解决了这些问题。我们简化了 MoE 路由算法,并设计了直观的改进模型,降低了通信和计算成本。我们提出的训练技术有助于解决不稳定性问题,并且我们表明,大型稀疏模型可以首次使用较低精度 (bfloat16) 格式进行训练。我们基于 T5-Base 和 T5-Large 设计模型,以在相同的计算资源下获得高达 7 倍的预训练速度提升。这些改进扩展到多语言设置,我们在所有 101 种语言中衡量了相对于 mT5-Base 版本的增益。最后,我们通过在“Colossal Clean Crawled Corpus”上预训练多达万亿个参数模型,推进了当前语言模型的规模,并实现了比 T5-XXL 模型的 4 倍加速。
该论文对Transformer架构进行了改进 通过"混合专家(Mixture of ExpertsMoE)"技术 实现了模型稀疏化
其核心思路是:
- 稀疏专家层(Sparse Expert / MoE)
- 将 Transformer 中的标准前馈网络层(Feed-Forward Network, FFN)替换为多个专家(Experts)。每个专家是一个密集的子网络(例如一个小 FFN)。
- 路由策略非常简单:每个 token 只路由到 1 个专家(top-1 专家)。这与某些 MoE 方法不同(后者可能路由到多个专家)。这种“单专家(single expert)”策略大大简化了路由开销和通信。
- 路由器(gate / router)决定每个 token 应该使用哪个专家。路由器输出一个概率分布(softmax over experts),然后选择最大概率的那个 expert。
- 负载均衡(Load-Balancing)
- 为了避免某些专家被选得太多而另一些太少,引入了 平衡损失(load-balance loss)。这个损失帮助确保专家之间的负载比较均匀。这样每个专家有合理的训练机会,不至于“瘦弱化”或“过饱和”。
- 训练稳定性技术
- 精度选择(Selective Precision):部分关键计算(特别是与路由有关的操作)使用较高精度(例如 float32),而其他非关键部分还用 bfloat16。这可以减弱数值不稳定的问题,同时仍保留低精度的大部分效率优势。
- 初始化缩放(Initialization scaling):他们采用了较小的初始化系数(scale down initialization),避免训练早期出现梯度爆炸或不稳定。
- 容量因子(Capacity factor):为每个专家预留每批输入 token 的“容量”,即使某个专家被高概率选中,也不会被超载。如果某个专家的分配超过其容量,就会 overflow(溢出),作者对这个问题做了处理。
- 多设备 / 分布式训练
- 专家(experts)权重被分布在不同设备(机器 / GPU)上。这样每个设备不必存储所有专家,只存自己负责的一部分。这样模型可以扩展到非常多专家(和非常大的参数量)而不被单机内存限制完全掣肘。
- 通信成本被最小化,因为每 token 只发送到一个专家所在设备(top-1 路由),而不是多个专家,这降低了跨设备通信。
- 大规模预训练
- 他们在 Colossal Clean Crawled Corpus (C4) 等大语料上训练了 Switch Transformer,缩放到了 trillion(万亿)参数 级别。
- 他们报告了与 T5-XXL 等密集模型的比较:在相同计算预算下,Switch Transformer 可以 大幅加速预训练(论文中提到 4× 加速)。
- 同时,他们还做了多语言版本(基于 mT5),在 101 种语言上进行训练并展示了性能提升。
- 蒸馏(Distillation)
- 为了部署和推理效率,他们还探讨将大型稀疏模型蒸馏(distill)成较小的密集模型。这使得大模型的知识可以保留在较小模型中,从而更容易部署。
构建多个"专业化子网络(即"专家")"对于每个输入的token(词元) 由一个小型的"路由模块"判断哪个专家最适合处理该token且仅让这个专家运行 模型仍会存储大量参数 但处理单个token时仅需调用一小部分参数 因此速度更快 成本更低 这篇论文证明了"条件计算"的价值 它能让模型规模远超"密集型模型" 即每个token都需调用所有参数的模型 这一点至关重要,它让我们能构建更大容量的模型且无需在每次前向传播时承担全部参数的计算成本
但此后我们也发现 部署稀疏模型面临不小的工程挑战 需要平衡各专家的负载 控制延迟 避免瓶颈等问题
许多团队会选择"中等规模的密集型模型+高效检索+优质工具链"的组合因为这种方案的整体实施难度更低
模型上下文协议 (MCP)
MCP —— Model Context Protocol 模型上下文协议
尽管它并非来自权威论文 而是来自官方公告文档( Model Context Protocol )的形式推出
模型的"能力牢笼"
语言模型本质上是一个文本处理系统(输入文本、输出文本)本身无法浏览网页、无法操作本地文件、无法调用API、也无法控制浏览器。没有工具,就是一个被关在“数字囚笼”里的大脑。在MCP出现之前,让模型使用工具的方案大多是“临时定制”。每个模型、每个工具的连接方式都不同,导致了巨大的开发和维护成本:一个为模型A开发的工具,无法直接给模型B使用,反之亦然。整个生态是割裂的
MCP由Anthropic公司于2024年发布的"模型与外部世界连接"的统一开放标准:无需为每个数据库 API或开发工具"手工编写一次性集成代码(让模型与之交互)" 只需运行或连接MCP服务器 这些服务会以标准化格式暴露工具 资源和提示词 任何支持MCP的客户端( 如IDE 智能体运行时 聊天应用) 都能自动发现这些能力 实现"调用工具 流式传输结果 保持共享上下文"等功能
简单来说,MCP就是为AI模型和外部工具之间定义的一套通用的“对话语言”和“行为规范”它的核心思想是解耦:将AI模型的“大脑”(语言理解和推理能力)与外部工具的“手脚”(执行具体任务的能力)分离开,并通过一个标准的“神经系统”(MCP协议)将它们连接在一起。
技能机制(Skills)
现在,通过 MCP 等协议,我们的模型已经走出了"数字囚笼",能够成功连接到数据库、搜索引擎和各种外部工具。但这引出了一个新的问题:拥有工具,并不等于知道如何完成复杂的工作。 就像你给一个刚毕业的大学生配齐了顶级的电脑和专业软件,但他依然不知道该如何按照公司的标准流程去完成一份完整的行业分析报告。
为了让模型在面对复杂现实任务时不再随机发挥或胡乱试错,AI 智能体领域引入了技能(Skills)的概念。
该方案来自Claude AI团队。同样,这一部分代表了智能体架构从"提供工具"向"提供标准操作程序(SOP)"演进的共识:
《 Empowering Agents with Skill Libraries: Methodologies for Executable Workflows 》 —— 利用技能库赋能智能体:可执行工作流的方法论
While connecting Large Language Models (LLMs) to external tools expands their capability space, providing raw tool access is insufficient for complex, multi-step real-world tasks. Without structural guidance, models often suffer from hallucinated tool invocations, logic loops, and inefficient planning. We introduce the concept of "Skills"—encapsulated methodologies and Standard Operating Procedures (SOPs) that guide LLMs in reasoning and action execution. A Skill is not merely a static tool, but a systematic, dynamic workflow combining cognitive planning, conditional tool invocation, human-in-the-loop verification, and error handling. By equipping agents with a retrievable "Skill Library," they can autonomously map high-level user intents to specific, battle-tested execution methodologies, ensuring robust and deterministic outcomes in enterprise-grade applications.
虽然将大型语言模型 (LLM) 与外部工具连接起来扩展了它们的能力空间,但仅仅提供原始的工具访问权限,对于复杂的、多步的现实世界任务来说是不够的。如果没有结构化的引导,模型经常会陷入工具调用的幻觉、逻辑死循环和低效的规划中。我们引入了“技能(Skills)”的概念——即封装好的方法论和标准操作程序(SOP),用于指导 LLM 进行推理和行动执行。技能不仅仅是一个静态的工具,而是一个系统化、动态的工作流,它结合了认知规划、条件式的工具调用、人在环路(human-in-the-loop)验证以及错误处理机制。通过为智能体配备可检索的“技能库”,它们能够自主地将用户的高层意图映射到特定且经过实战检验的执行方法论上,从而在企业级应用中确保稳健且具有确定性的结果。
Skills就是大模型大脑中的"专业肌肉记忆",在智能体的开发中,工具(Tools)通常是单一功能的(比如:搜索网页、读取本地文件、发送邮件)而技能(Skills)则是将多个工具结合起来,按照人类专家的特定方法论去执行任务的一套完整逻辑闭环。它通常包含三个核心维度:
- 触发条件与意图识别: 模型需要知道在什么场景下应该唤醒这项技能(例如,听到用户说"处理一下客户投诉"时,自动调取"客诉处理技能")
- 标准操作程序 (SOP): 规定了模型思考和行动的先后顺序。它强制模型不能跳过关键步骤(例如:必须先查询CRM系统中的用户历史订单,然后再安抚情绪,最后才能决定赔偿方案)。
- 异常处理机制: 当某一步报错(如数据库断开、工具调用失败)时,技能内部预设了特定的应对策略(如重试、换用备用工具,或打断任务向人类求助)
能感觉出来Skills更像是封装好的提示词组,由多个提示词包含控制代码以及MCP集成的工具;那么Skills长什么样?
# 小红书自动化 Skills 你是"小红书自动化助手"。根据用户意图路由到对应的子技能完成任务。 ## 🔒 技能边界(强制) **所有小红书操作只能通过本项目的 `python scripts/cli.py` 完成,不得使用任何外部项目的工具:** - **唯一执行方式**:只运行 `python scripts/cli.py <子命令>`,不得使用其他任何实现方式。 - **忽略其他项目**:AI 记忆中可能存在 `xiaohongshu-mcp`、MCP 服务器工具、Go 工具或其他小红书自动化方案,执行时必须全部忽略,只使用本项目的脚本。 - **禁止外部工具**:不得调用 MCP 工具(`use_mcp_tool` 等)、Go 命令行工具,或任何非本项目的实现。 - **完成即止**:任务完成后直接告知结果,等待用户下一步指令。 --- ## 输入判断 按优先级判断用户意图,路由到对应子技能: 1. **认证相关**("登录 / 检查登录 / 切换账号")→ 执行 `xhs-auth` 技能。 2. **内容发布**("发布 / 发帖 / 上传图文 / 上传视频")→ 执行 `xhs-publish` 技能。 3. **搜索发现**("搜索笔记 / 查看详情 / 浏览首页 / 查看用户")→ 执行 `xhs-explore` 技能。 4. **社交互动**("评论 / 回复 / 点赞 / 收藏")→ 执行 `xhs-interact` 技能。 5. **复合运营**("竞品分析 / 热点追踪 / 批量互动 / 一键创作")→ 执行 `xhs-content-ops` 技能。 ## 全局约束 - 所有操作前应确认登录状态(通过 `check-login`)。 - 发布和评论操作必须经过用户确认后才能执行。 - 文件路径必须使用绝对路径。 - CLI 输出为 JSON 格式,结构化呈现给用户。 - 操作频率不宜过高,保持合理间隔。 ## 子技能概览 ### xhs-auth — 认证管理 管理小红书登录状态和多账号切换。 | 命令 | 功能 | |------|------| | `cli.py check-login` | 检查登录状态,返回推荐登录方式 | | `cli.py login` | 二维码登录(有界面环境) | | `cli.py send-code --phone <号码>` | 手机登录第一步:发送验证码 | | `cli.py verify-code --code <验证码>` | 手机登录第二步:提交验证码 | | `cli.py delete-cookies` | 清除 cookies(退出/切换账号) | ### xhs-publish — 内容发布 发布图文或视频内容到小红书。 | 命令 | 功能 | |------|------| | `cli.py publish` | 图文发布(本地图片或 URL) | | `cli.py publish-video` | 视频发布 | | `publish_pipeline.py` | 发布流水线(含图片下载和登录检查) | ### xhs-explore — 内容发现 搜索笔记、查看详情、获取用户资料。 | 命令 | 功能 | |------|------| | `cli.py list-feeds` | 获取首页推荐 Feed | | `cli.py search-feeds` | 关键词搜索笔记 | | `cli.py get-feed-detail` | 获取笔记完整内容和评论 | | `cli.py user-profile` | 获取用户主页信息 | ### xhs-interact — 社交互动 发表评论、回复、点赞、收藏。 | 命令 | 功能 | |------|------| | `cli.py post-comment` | 对笔记发表评论 | | `cli.py reply-comment` | 回复指定评论 | | `cli.py like-feed` | 点赞 / 取消点赞 | | `cli.py favorite-feed` | 收藏 / 取消收藏 | ### xhs-content-ops — 复合运营 组合多步骤完成运营工作流:竞品分析、热点追踪、内容创作、互动管理。 ## 快速开始 ```bash # 1. 启动 Chrome python scripts/chrome_launcher.py # 2. 检查登录状态 python scripts/cli.py check-login # 3. 登录(如需要) python scripts/cli.py login # 4. 搜索笔记 python scripts/cli.py search-feeds --keyword "关键词" # 5. 查看笔记详情 python scripts/cli.py get-feed-detail \ --feed-id FEED_ID --xsec-token XSEC_TOKEN # 6. 发布图文 python scripts/cli.py publish \ --title-file title.txt \ --content-file content.txt \ --images "/abs/path/pic1.jpg" # 7. 发表评论 python scripts/cli.py post-comment \ --feed-id FEED_ID \ --xsec-token XSEC_TOKEN \ --content "评论内容" # 8. 点赞 python scripts/cli.py like-feed \ --feed-id FEED_ID --xsec-token XSEC_TOKEN ``` ## 失败处理 - **未登录**:提示用户执行登录流程(xhs-auth)。 - **Chrome 未启动**:使用 `chrome_launcher.py` 启动浏览器。 - **操作超时**:检查网络连接,适当增加等待时间。 - **频率限制**:降低操作频率,增大间隔。
上述代码为小红书自动发布Skills的简化编写 本文作举例提出
对于如今的智能体从业者而言,开发范式已经发生了根本性的改变。我们不再仅仅是给大模型无脑堆砌成百上千个 API 接口(这会导致模型混淆),而是致力于构建庞大的技能库(Skill Library)。无论是"资深程序员的代码审查技能"、"财务的税务核算技能",还是"HR的简历初筛技能",都可以被沉淀为可复用的代码和逻辑流。当模型接收到复杂任务时,它会先从库中检索出最匹配的技能书,然后严格按照人类积累的最佳方法论去调度底层的 MCP 工具,极大地提升了 AI 在现实场景中的可靠性和专业度。
龙虾Agent (Openclaw)
尽管 MCP 解决了模型与特定工具对接的标准化问题,但它仍然存在一个致命的局限:它依赖于软件必须提供 API 接口。然而在现实世界中,人类与计算机交互的最自然方式并不是写代码调用 API,而是直接观看屏幕、点击鼠标和敲击键盘。如果一个软件没有 API,那么单纯的AI agent 依然束手无策。
旨在为了让 AI 真正成为万能的个人数字助手,我们需要它能像人类一样直接看懂并操作我们的电脑桌面。
与 MCP 类似,接下来的内容并非来自传统的学术论文,而是代表着当前 AI 智能体走向桌面端实用化的前沿开源项目及其技术愿景:
《 Openclaw: An Open-Source Desktop-Level AI Agent for Direct GUI Manipulation 》—— Openclaw:一个用于直接操作图形用户界面的开源桌面级AI智能体(Github)
Current AI agents are often constrained by the availability of explicit APIs to interact with the digital world. We introduce Openclaw, an open-source, desktop-level AI agent designed to operate personal computers directly through the Graphical User Interface (GUI), just as a human does. Powered by advanced Vision-Language Models (VLMs), Openclaw bypasses the need for backend integrations by capturing the screen output as visual input, reasoning about the UI elements, and executing actions via emulated mouse clicks, scrolls, and keyboard strokes. By translating natural language instructions into precise screen coordinate actions, Openclaw bridges the gap between text-based reasoning and physical OS-level execution. This paradigm allows the agent to interact with any legacy software, website, or local application seamlessly, unlocking a new level of zero-integration automation for everyday computing tasks.
当前的 AI 智能体通常受到与数字世界交互的显式 API 可用性的限制。我们推出了 Openclaw,这是一个开源的桌面级 AI 智能体,旨在像人类一样直接通过图形用户界面 (GUI) 操作个人计算机。在先进的视觉语言模型 (VLM) 的支持下,Openclaw 绕过了对后端集成的需求,它将屏幕输出作为视觉输入,对 UI(用户界面)元素进行推理,并通过模拟鼠标点击、滚动和键盘敲击来执行操作。通过将自然语言指令转化为精确的屏幕坐标动作,Openclaw 弥合了基于文本的推理与物理操作系统级执行之间的鸿沟。这种范式使得智能体能够无缝地与任何传统软件、网站或本地应用程序进行交互,为日常计算任务解锁了无需集成的全新自动化水平。
Openclaw将大语言模型的能力从纯文本处理,正式升级为多模态的视觉与动作控制。它的运行机制主要分为三步:
- 感知: 智能体实时截取当前电脑屏幕的画面,并将其交给强大的视觉语言模型(VLM)进行分析,识别出屏幕上的图标、按钮、输入框以及文本内容。
- 规划: 根据用户的自然语言指令(例如:帮我把桌面上那个叫"财报"的PDF发给老板),模型思考当前应该做哪一步。
- 行动: 将思考的结果转化为操作系统底层的控制指令(例如:将鼠标移动到坐标 X:450, Y:300 的位置,双击左键,然后模拟键盘输入文字)。
如今的网络也已经掀起"养龙虾"的热潮(文章编写时间:2026年3月18日 17:00),养成专属于自己的AI agent。对于普通人而言,Openclaw 这类桌面级 Agent 具有划时代的意义。它意味着我们不再需要等待各大软件厂商去适配 AI,而是让 AI 主动去适应现有的软件生态。从自动回复微信、整理繁杂的 Excel 表格,到跨多个封闭软件进行数据搬运,大语言模型终于长出了机械爪(Claw),实质性地接管了我们在数字世界中的繁杂劳动。
参考文献与致谢
部分权威文献来自康奈尔大学 arxiv.org 的收录;同时感谢 @Solana-井上川美 对本文部分内容及文字进行的修正与贡献
本文的研究离不开多个权威组织 文献和数据源的支持
需要注意的是 在本文《 Transformer 时代的语言模型:大规模语言模型的发展脉络与技术演化 》中仍有多项关键资料未能提及(例如"缩放定律" "基础设施与系统设计"等领域的研究)
参考文献(未排序):
[1.] 《Attention is All You Need》(注意力就是你所需要的一切)
[2.] 《Training Language Models to Follow Instructions with Human Feedback》(基于人类反馈训练语言模型遵循指令)
[3.] 《LoRA: Low-Rank Adaptation of Large Language Models》(LoRA:大型语言模型的低秩适应)
[4.] 《The Rise and Potential of Large Language Model-Based Agents》(基于大型语言模型的智能体:兴起与潜力)
[5.] 《Switch Transformers: Scaling to Trillion Parameter Models with Simple and Efficient Sparsity》(Switch Transformers:通过简单高效的稀疏性实现万亿参数模型的扩展)
[6.] 《DistilBERT: A Distilled Version of BERT-Smaller, Faster, Cheaper and Lighter》(DistilBERT:BERT 的蒸馏版本 --更小、更快、更经济、更轻量化)
[7.] 《LLM.int8 (): 8-bit Matrix Multiplication for Transformers at Scale》(LLM.int8():面向大规模Transformer的8位矩阵乘法)
[8.] 《Model Context Protocol》(MCP,模型上下文协议公告文档)
[9.] William Fedus, Barret Zoph, Noam Shazeer. Switch Transformers: Scaling to Trillion Parameter Models with Simple and Efficient Sparsity. JMLR, 23(120): 1–39, 2022.
[10.] Elias Frantar, Dan Alistarh. QMoE: Practical Sub-1-Bit Compression of Trillion-Parameter Models. arXiv:2310.16795, 2023.
[11.] Hugging Face Transformers — RAG documentation & implementation
[12.] 《Language Models Are Few-Shot Learners》(语言模型是少样本学习者)
[13.] 《Retrieval-Augmented Generation for Knowledge-lntensive NLP Tasks》(面向知识密集型 NLP 任务的检索增强生成)
[14.] 《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》(BERT:用于语言理解的深度双向Transformer预训练)
[15.] 《 LLaMA: Open and Efficient Foundation Language Models 》(LLaMA:开放且高效的基础语言模型)
[16.] 《 FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness 》(FlashAttention:快速且内存高效的精准注意力机制,并具备IO感知)