LLM 基础
大语言模型(LLM)代表了机器理解和生成人类语言方式的范式转变。本节提供 LLM 架构、训练和实际部署的全面基础。
概览
什么是 LLM?
大语言模型是在海量文本数据上训练的神经网络,用于理解、生成和操作人类语言。它们基于 Transformer 架构构建,能够以卓越的效率和准确性处理文本序列。
核心特性:
- 规模:在数十亿到数万亿 token 上训练
- 泛化能力:无需特定任务训练即可处理多样任务
- 生成能力:产生连贯、上下文相关的文本
- 理解能力:展现出涌现的推理和理解能力
为什么 LLM 基础很重要
| 方面 | 对开发的影响 |
|---|---|
| 架构知识 | 理解 token 限制、上下文窗口和模型约束 |
| 训练过程 | 了解模型如何学习有助于提示词工程和微调 |
| 推理行为 | 预期模型输出、延迟和资源需求 |
| 局限性认知 | 识别和缓解幻觉、偏见和失败模式 |
核心组件
1. 分词(Tokenization)
分词是 LLM 处理的第一步——将文本分解为更小的单元,称为 token。
核心概念:
- Token 可以是词、子词或字符
- 不同的分词策略(BPE、WordPiece、SentencePiece)
- 对模型性能和多语言支持的影响
- Token 限制和上下文窗口约束
为什么重要:
Text: "Artificial Intelligence is transforming the world"
Tokens: ["Art", "ificial", " Int", "elligence", " is", " trans", "form", "ing", " the", " world"]
Token 数量影响:
- API 成本(按 token 计费)
- 上下文容量
- 处理速度
2. 嵌入(Embeddings)
嵌入将 token 转换为捕获语义信息的密集向量表示。
核心概念:
- 高维向量空间(768、1024、1536+ 维)
- 通过余弦距离衡量语义相似性
- 上下文嵌入 vs 静态嵌入
- 向量数据库用于语义搜索
应用:
// Spring AI: Embedding 生成
EmbeddingResponse response = embeddingModel.embed(
List.of("Hello world", "Hi there")
);
// 比较相似度
double similarity = CosineSimilarity.between(
response.getResults().get(0).getOutput(),
response.getResults().get(1).getOutput()
);
3. Transformer 架构
Transformer 是驱动现代 LLM 的神经网络架构。
核心组件:
- Self-Attention:理解 token 关系的机制
- Multi-Head Attention:并行注意力机制
- 位置编码:保持序列顺序
- 前馈网络:处理被注意的信息
- 层归一化:稳定训练
架构影响:
Input Text → Tokenization → Embedding + Positional Encoding
→ Multiple Transformer Layers
→ Each Layer: Multi-Head Attention + Feed-Forward
→ Output Projection → Probability Distribution
4. 推理(Inference)
推理是从训练模型生成输出的过程。
核心概念:
- 解码策略:贪心、束搜索、采样
- Temperature:控制随机性
- Top-k / Top-p:核采样
- Token 流式传输:实时响应生成
实际考虑:
// Spring AI: 推理配置
ChatResponse response = chatClient.prompt()
.user("Explain quantum computing")
.options(OpenAiChatOptions.builder()
.temperature(0.7) // 创造性
.topP(0.9) // 核采样
.maxTokens(1000) // 响应长度
.build())
.call()
.chatResponse();
5. 训练流水线
理解 LLM 如何被训练有助于有效的使用和微调策略。
训练阶段:
- 预训练:从无标签文本数据学习(自监督)
- 微调:适配特定任务(监督)
- 对齐:确保安全、有用的输出(RLHF、DPO)
训练考量:
| 阶段 | 数据 | 目标 | 计算量 |
|---|---|---|---|
| 预训练 | 互联网文本 | 预测下一个 token | 海量(数千 GPU) |
| 微调 | 特定任务数据 | 学习任务模式 | 中等 |
| 对齐 | 人类反馈 | 匹配偏好 | 可变 |
6. 认知局限
LLM 有重要的局限性,开发者必须理解并加以缓解。
主要局限:
- 幻觉:生成看似合理但虚假的信息
- 上下文窗口:对话历史记忆有限
- 时间盲区:不知道训练后发生的事件
- 推理缺陷:在多步逻辑推理中存在困难
- 数学与精度:天生不擅长计算
缓解策略:
幻觉 → RAG(检索增强生成)
上下文限制 → 记忆系统、摘要
时间问题 → 工具使用(Web 搜索、API)
推理 → 思维链提示
数学 → 计算器工具、代码解释
学习路径
推荐顺序
- 引言 → 理解 LLM 是什么及其演进
- 分词 → 掌握文本如何变为模型输入
- 嵌入 → 学习语义表示
- Transformer 架构 → 理解模型内部
- 推理 → 学习如何有效使用模型
- 训练流水线 → 了解模型如何被创建
- 局限性 → 认识并绕过约束