轻松了解大语言模型
An Easy Intro to LLMs
大语言模型的基础架构
What’s Transformer
大语言模型(LLM)是当前AI领域的核心技术,其基础架构源于2017年提出的 Transformer。完整的结构如下图。
Transformer 架构
不同于 RNN 或 CNN,Transformer 通过自注意力机制实现对长距离依赖的高效建模。不过现在的大语言模型的结构相比 “Attention is All You Need” 提出的经典结构已经有了许多改进。其中最显著的变化包括以下三点——
Decoder-only:如今主流大模型(比如 GPT 系列)几乎都采用 Decoder-only 架构,只保留 Decoder 块,并去掉交叉注意力层——这意味着模型不再区分“编码”和“解码”,而是纯粹自回归地一个词一个词生成。对于图像等多模态的输入,也是先将这些信息转换成一定长度的 token 后拼到整个输入序列中。模型将在统一的潜空间中对文字信息、图像信息进行理解和生成。
**Pre-Norm:**早期 Transformer 是先进行注意力层或者前馈层(即图中的 MLP 层)的计算后进行残差连接,最后再进行层归一化 LayerNorm。层数较多时梯度在反传时会逐渐衰减,深层模型难以训练。现在的大模型统一改成:先归一化 → 再注意力层或者前馈层计算 → 再残差。残差连接给梯度留了一条直接路径,这是当下的百层甚至两百层模型还能稳定训练的关键原因。
**RoPE:**位置信息不再使用加性编码,而是使用 RoPE(旋转位置编码)进行替代。该方法把位置信息通过在潜空间中旋转的方式注入到 Q、K 向量里,使得模型的长文本性能显著提升。
大模型普遍使用的改进后的 Transformer 架构
训练与推理的加速技巧
Efficient training and Inference
训练策略——Teacher Forcing
训练时不进行自回归式的生成而是一次性输入完整的序列,得到每一个词对应的下一个词的概率分布。这样,训练时,一句话可以同时提供很多监督信号:
从「你」预测「想」,
从「你想」预测「聊」,
从「你想聊」预测「点」……
并且一次前向过程就能同时完成所有预测。
这个过程可以看成模型结合该词前面所有词的信息把每个词的语义从它的本意 transform 到它可能衔接的下一个词的语义。
掩码机制在这个过程中发挥重要作用。由于Transformer 的 self-attention 层负责让不同 token 的语义互相影响,前馈层对每个 token 的语义单独整合,于是通过在 self-attention 层增加因果掩码机制,即可保证第 k 个词的计算过程中永远不会受第 k+1 个词影响,可以防止模型生成第 k 个词的可能的下一个词时 “直接偷看到答案”。
这种策略在 RNN 模型的训练中广为使用,但 RNN 无法一次同时完成一个序列的全部预测任务,必须一个词一个词的生成,其中每一步如果生成错误的结果,都会自动换成正确的词作为下一步的输入,称为 Teacher Forcing。
推理策略——增量推理
自注意力层的计算量会随输入序列的变长而变大,因为每个 token 都需要和其他所有 token 交互一次,所以 n 个 token 长度的序列的计算复杂度是 O(n²)。忽略归一化和 softmax 操作,掩码自注意层中的每一个注意力头的计算可以写成如下形式。
具体而言——自注意层中,模型的每个注意力头会通过三个线性层为每个 token 生成三个向量 V、K、Q。如上图例,我们有 5 个 token 输入,就要算上面这 5 排公式。
此时如果新加入一个 token,则计算过程需要加入下面这新的一排公式,共 6 排的计算量。
注意到新的这排公式中使用的 K,V 向量,在算之前 5 个 token 的时候已经算出来过一遍了,于是我们可以将每次算出的新的 K,V 向量保存在显存里,这样就不需要重新进行线性层的计算。
此外由于掩码机制的存在,第六排公式的计算结果不会影响前五排的计算步骤,因为第六个 token 永远影响不到前面的 token,于是 Transformer 前 5 个 token将始终进行一样的任务,即从 “你想聊点什” 计算到 “想聊点什么”。不管输入 6 个还是更多 token,前五个位置在模型的每层的计算结果都是一样的,于是我们可以进一步地避免此类重复计算。
于是,Transformer 在推理过程中就从一个输入 n 个 token 输出 n 个 token 的机器变成了输入一个 token,缓存这个 token 带来的新中间结果(即这个 token 在各个注意力头的 K、V 向量)然后输出一个 token 的机器,这使 Transformer 每一步的计算复杂度从O(n²) 降低到 O(n),只需要进行新 token 与之前的所有 token 进行一次交互,而不需要进行之前的 token 彼此之间的重新交互。
这种模式称为增量推理,其中把 K,V 保存起来的操作叫做 KVCache。结合这些年工程人员从硬件算法上反复为 Transformer 进行的各种优化,万亿参数模型也能做到实时响应。
轻量化部署
Model Quantization
显存永远是大模型的第一瓶颈。我们除了速度上的优化,也有内存上的优化。
正常来说,每 10 亿参数(即 1 B参数),如果全部都用 32 位浮点数,也就是每个参数占用 4 个字节的精度加载到 GPU 上,占用的显存是 4 GB ,但是显存是比较昂贵的,这时我们需要将模型进行量化。
所谓量化,就是将模型的参数用更低的精度进行保存和加载。
一般策略是,模型的权重会按照固定大小被切分成许多小块,每块都会记录这里的均值和标准差。真正计算时,这些被压缩成低比特整数的参数需要先乘回对应块的缩放系数,再恢复到近似的浮点表示后参与矩阵运算。常见的 Q8 指的是用八位整数加载,Q4 是用四位整数加载。
目前有许多大模型部署框架能够一键将任何格式的模型进行量化,量化模型也有了主流的保存格式,每天都会有非常多量化模型被开源上传到 HuggingFace。并且这些框架支持分片加载,也就是当显存仍不足加载模型的全部权重时,可以选择将部分层加载进内存中计算,代价是推理速度会明显变慢。
由于量化是通过取整和近似完成的,将不可避免地引入一定量化误差。
在显存资源有限的情况下,选择更大的模型搭配更差的精度往往比高精度小模型智力更高。事实上根据 Scaling Law,模型参数量和训练时的交叉熵损失之间存在某种幂律分布,广泛实验得到的经验公式为:模型大 10 倍 → 误差约降到 0.46 倍。
大模型的最近发展
Recent LLM Trends
Scaling Law —— 模型规模不断扩展、智能不断涌现
在 Transformer 出现之前,深度学习领域就已经通过理论分析和大量实验发现:模型误差与模型参数量(N)、训练数据量(D)之间,呈现出稳定的幂律关系。无论是自然语言还是图像任务,无论是分类还是回归,把横纵轴换成对数坐标后,曲线几乎都会收敛到同一种形态。
具体而言,该曲线总是包含三个部分
- 当模型很小、数据很少时,模型的表现本质上等价于一种“随机猜测”
- 而当模型规模足够大、训练数据足够多时,误差会沿着一条非常平滑的幂律曲线持续下降。
- 曲线最终会逼近一个极限。这个极限并不是训练不够好,而是任务本身的不可约误差。
该极限一部分来自数据集的不完美,另一部分来自任务的内在随机性。比如语言建模任务:给一句不完整的话,预测下一个词,本身就不存在唯一正确答案,语言具有天然的信息熵和不确定性。
2020 年,OpenAI 的研究团队用系统性的实验明确证明:在大模型时代,这一 scaling law 依然成立。不仅如此,他们还给出了具体的经验公式,并通过在模型结构、模型规模和数据规模三个维度上进行大规模超参数搜索,总结出了一些极具指导价值的结论。
·参数量比架构更重要——总参数量不变时,其他架构细节如网络深度、宽度、注意力头数等几乎不影响最终性能
·Batch size 的选取策略——C、D、N 越大,Batch size 的最优选择也应越大
·避免过拟合的经验法则——模型参数每增加8倍,数据只需增加约5倍。
·模型大小比数据大小更重要——训练一个大模型的最优策略是算力每增加10亿倍,73% 用于扩大模型,27% 用于增加数据
这些结果共同指向一个事实:只要计算资源和数据允许,扩大模型规模带来的性能提升是可预测、可外推的。在 scaling law 的指导下,OpenAI 的模型和产品规模持续扩大。从早期 GPT 到 GPT-3,再到 GPT-4,GPT-5,模型能力的提升并不是某个单点突破,而是沿着幂律曲线稳步前进。
但从 GPT-4 开始,闭源模型不再公开完整技术细节。我们无法知道它们的参数量,无法知道训练数据规模,也无法判断它们究竟处在幂律曲线的哪个阶段,是否已经接近不可约误差。这也在某种程度上,让 scaling law 变成了一种只存在于模型供应商内部开发的工程指南。
Agent —— 对大模型 In-Context Learning 能力的极大信任
在 Agent 成为一个流行概念之前,大模型已经展示出了一种超出预期的能力——In-Context Learning。
最早在 GPT-2 的工作中,人们注意到:一个没有针对特定任务进行微调的语言模型,在收到少量任务相关的输入输出示例后,可以给出结构高度一致、质量相当不错的答案。这种能力并不是通过参数更新实现的,而是完全发生在一次前向推理过程中。GPT-3 的论文第一次系统性地总结了这一现象,并给出了明确结论:大模型在上下文中“学会任务”的能力,会随着模型规模的增大而显著增强。
换句话说,模型并不只是记住了语言统计特征,而是在上下文中完成了一种即时的、临时的学习。
这一发现极大地改变了人们对“如何使用模型”的理解。如果模型可以在提示词中学会新任务,那它真正需要的,可能不是更多的微调步骤,而是更好的上下文设计。也正是在这个背景下,Agent 的思想逐渐成形。
Agent 并不是让模型获得真正的执行能力,而是假设模型足够擅长理解和遵循上下文中的规则。只要我们在提示词中清楚地描述:有哪些工具、每个工具的功能是什么、如何调用、在什么情况下可以或不可以使用,那么模型就能够在较长的对话过程中持续遵守这些约定。
在基于大模型的 Agent 框架中,当大模型决定调用某个工具时,只需要生成一段符合约定格式的文本。系统在外部解析出这条指令,执行真实世界中的操作,然后把结果重新写回上下文。
ReAct 系统,是大模型时代对经典 PDA(感知–决策–行动)循环的现代化演绎,也是当下最流行的 Agent 系统之一。
· 感知:模型从上下文和工具返回结果中获取信息;
· 决策:模型进行内部推理(thought),对上一步的结果进行反思,对下一步的行动进行计划;
· 行动:模型生成下一步 action 的指令,系统解析模型输出,调用外部工具执行对应操作,再将结果写回上下文。
这个循环的精髓在于,每一次工具调用后,模型都会进行新的思考,再决定下一步操作,从而充分利用其 In-Context Learning 能力。这种设计背后的动机,与早期人们发现的一些提示词技巧高度一致。比如,在问题末尾加一句 “Let’s think step by step”,模型给出正确答案的概率往往会明显提升,因为模型自己生成的中间推理,会成为后续推理的重要上下文信息。
随着对这一机制理解的加深,业界在监督微调阶段开始刻意引入大量“带完整推理过程”的训练数据,用来强化模型在长上下文中维持一致逻辑和目标的能力。Agent 能在多轮交互中有效地进行“规划”和“执行”,本质上依然是 In-Context Learning 在起作用。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。