本文档提供了大型语言模型 (LLM) 架构的技术概述,重点关注使这些模型能够理解和生成文本的核心组件和流程。我们涵盖了现代 LLM 的基本构建块,包括 Transformer 架构、Tokenization(分词)、注意力机制和文本生成策略。
有关训练 LLM 的信息,请参阅 训练管道。有关评估 LLM 性能的信息,请参阅 评估与量化。
现代 LLM 基于 Transformer 架构,特别是使用像 GPT (Generative Pre-trained Transformer) 这样的仅解码器(decoder-only)变体。完整的管道通过几个关键阶段处理从原始输入到生成输出的文本。
来源: README.md159-166
LLM 已从最初包含编码器和解码器组件的 Transformer 架构,演变为如今占主导地位的更精简的仅解码器架构。
来源: README.md159-162
| 架构类型 | 主要用途 | 示例 | 特性 |
|---|---|---|---|
| 编码器-解码器 | 翻译、摘要 | 原始 Transformer、T5 | 生成输出前处理整个输入 |
| 仅编码器 | 理解文本 | BERT、RoBERTa | 双向上下文,适用于分类 |
| 仅解码器 (Decoder-only) | 文本生成 | GPT、Llama、Mistral | 单向上下文,自回归生成 |
像 GPT-4、Llama 3 和 Claude 这样的现代 LLM 都是针对文本生成优化的仅解码器架构。
Tokenization(分词)是 LLM 处理的第一步,将原始文本转换为模型可以处理的数字 Token。
来源: README.md163-164 README.md171-172
| 方法 | 描述 | 用途 | 特性 |
|---|---|---|---|
| BPE (Byte-Pair Encoding) | 迭代合并最频繁的字符对 | GPT、Llama | 平衡词汇量和序列长度 |
| WordPiece | 类似于 BPE,但考虑了语言学上的合理性 | BERT | 更好的语言学拆分 |
| SentencePiece | 将文本视为 Unicode 序列 | 许多多语言模型 | 语言无关 |
| Tokenizer V2 | 字节对 BPE 配合特殊规则 | Llama 3 | 提高了效率,更好地支持多语言 |
分词器对模型性能有显著影响
现代 LLM 的核心由多个堆叠的 Transformer 解码器层组成。每一层处理序列并将其传递给下一层。
来源: README.md165-166
每个 Transformer 层包含
现代 LLM 堆叠了许多这样的层(8 到 100+ 层)以实现复杂推理能力。
注意力机制是使 LLM 能够处理词语之间上下文关系的关键创新。
每个 Token 被投影到三个向量
注意力分数通过查询和键向量的点积计算得出
分数被缩放并通过 Softmax 函数以获得注意力权重
输出是基于注意力权重的、值向量的加权总和
来源: README.md165-166
多头注意力允许模型共同关注来自不同表示子空间的信息。每个注意力头可以关注输入序列的不同方面(例如,语法、语义、实体关系)。
已开发出多种优化方法来提高注意力效率
| 优化 | 描述 | 优点 |
|---|---|---|
| Flash Attention | 优化的算法,以减少内存使用 | 更快的计算,更长的上下文 |
| 多查询注意力 (Multi-Query Attention, MQA) | 在多个头之间共享键和值投影 | 减少推理过程中的内存使用 |
| 分组查询注意力 (Grouped-Query Attention, GQA) | 介于 MQA 和标准注意力之间的折衷方案 | 效率和性能之间的平衡 |
| 稀疏注意力 (Sparse Attention) | 仅关注 Token 的子集 | 能够处理非常长的序列 |
来源: README.md378-380
在处理完所有 Transformer 层后,模型会为下一个 Token 生成整个词汇表的概率分布。
来源: README.md167-168
LLM 使用各种策略将概率分布转换为具体的 Token 选择
| 技术 | 描述 | 权衡 |
|---|---|---|
| 贪婪解码 (Greedy Decoding) | 始终选择概率最高的 Token | 确定性但重复 |
| 束搜索 | Beam Search | 跟踪多个最可能的序列 |
| 更全面但仍是确定性的 | 温度采样 (Temperature Sampling) | 调整概率分布的锐度 |
| 控制随机性与可预测性 | Top-k 采样 (Top-k Sampling) | 限制在 k 个最可能的 Token |
| 防止采样到不太可能的 Token | Nucleus (Top-p) 采样 | 从覆盖 p% 概率质量的 Token 中采样 |
基于置信度的自适应截断
来源: README.md167-168 README.md65-66
| 参数 | 描述 | 范围 | 效果 |
|---|---|---|---|
| 温度 | 控制随机性。 | 0.0-2.0 | 越低=越确定性 |
| Top-p | 概率阈值 | 0.0-1.0 | 越低=越聚焦 |
| Top-k | 要考虑的 Token 数量 | 1-100+ | 越低=越受限 |
| 重复惩罚 (Repetition Penalty) | 惩罚重复的词元 | 1.0-2.0 | 越高=重复越少 |
这些参数允许针对不同应用微调输出,从创意写作(更高的随机性)到事实性响应(更低的随机性)。
在文本生成过程中,LLM 维护一个键值缓存,以避免重新计算先前处理过的 Token 的注意力。
来源: README.md378-379
键值缓存通过以下方式显著提高了生成速度:
这种缓存机制是使实时 LLM 应用成为可能的重要优化。
由于 Transformer 架构本身没有 Token 顺序的概念,因此必须明确提供位置信息
来源: README.md163-166
| 方法 | 描述 | 优势 |
|---|---|---|
| 正弦 (Sinusoidal) | 固定的正弦模式 | 可以外推到未见过的位置 |
| 学习的 (Learned) | 可训练的位置向量 | 对已见过的位置表现更好 |
| RoPE | 对嵌入空间应用旋转 | 更好的相对位置建模 |
| ALiBi | 向注意力分数添加偏差 | 更好地外推到更长的序列 |
有效的 positional encoding(位置编码)对于扩展上下文窗口和确保模型理解序列关系至关重要。
LLM 的特点是其规模,以参数(权重)衡量
| 尺寸类别 | 参数数量 | 示例 | 典型用例 |
|---|---|---|---|
| 小型 | <10亿 | Phi-2, Gemma 2B | 边缘设备,专业任务 |
| 中等 | 10亿 - 100亿 | Llama 3 8B, Mistral 7B | 消费级设备,通用助手 |
| 大型 | 100亿 - 1000亿 | Llama 3 70B, Claude Opus | 企业应用,复杂推理 |
| 超大 | 1000亿+ | GPT-4, Gemini Ultra | 高级推理,多模态任务 |
随着模型规模的扩大,它们获得了
来源: README.md154-168
大型语言模型是基于 Transformer 解码器架构构建的复杂系统。它们通过 Tokenization(分词)处理文本,用位置信息对其进行嵌入,通过具有自注意力机制的多个 Transformer 层进行处理,并使用各种采样策略生成新文本。
关键架构组件包括
理解这些架构元素对于使用现有 LLM 和开发新应用及模型都是基础。
来源: README.md159-168