大语言模型(Large Language Model, LLM)是基于Transformer架构的深度学习模型,通过在海量文本数据上进行自监督学习,获得了强大的语言理解和生成能力。从GPT系列到LLaMA、Qwen,LLM正在深刻改变软件开发的范式。
2017年Google提出的Transformer架构是所有现代LLM的基础。其核心创新是自注意力机制(Self-Attention),允许模型在处理每个词时"关注"输入序列中的所有其他词,从而捕捉长距离依赖关系。
import torch
import torch.nn.functional as F
def self_attention(Q, K, V):
# Q: Query, K: Key, V: Value
d_k = Q.size(-1)
scores = torch.matmul(Q, K.transpose(-2, -1)) / (d_k ** 0.5)
attention_weights = F.softmax(scores, dim=-1)
output = torch.matmul(attention_weights, V)
return output, attention_weights
# 演示:4个token的注意力计算
torch.manual_seed(42)
Q = torch.randn(1, 4, 8)
K = torch.randn(1, 4, 8)
V = torch.randn(1, 4, 8)
output, weights = self_attention(Q, K, V)
print(f"输出形状: {output.shape}")
print(f"注意力权重形状: {weights.shape}")
print(f"权重每行和: {weights[0,0].sum().item():.4f}")
✅ 验证通过:自注意力计算正确,权重矩阵每行归一化为1
┌─────────────────────────────────────────────────────┐ │ LLM 训练三阶段 │ ├─────────────────────────────────────────────────────┤ │ 阶段1: 预训练 (Pre-training) │ │ 海量无标注文本 → 预测下一个词(自监督) │ │ 数据量: TB级 | 成本: 数百万美元 | 输出: 基座模型 │ │ ↓ │ │ 阶段2: 有监督微调 (SFT) │ │ 高质量指令-回答对 → 学习遵循指令 │ │ 数据量: 10K-1M条 | 成本: 数万美元 | 输出: 对话模型 │ │ ↓ │ │ 阶段3: 人类反馈强化学习 (RLHF/DPO) │ │ 人类偏好数据 → 奖励模型 → PPO/DPO优化 │ │ 目标: 更有用、更安全、更符合人类偏好 | 输出: 对齐模型 │ └─────────────────────────────────────────────────────┘
| 模型 | 参数量 | 开发者 | 特点 | 开源 |
|---|---|---|---|---|
| GPT-4o | ~1.8T | OpenAI | 多模态,综合最强 | ❌ |
| Claude 3.5 | 未公开 | Anthropic | 长上下文,安全对齐 | ❌ |
| GLM-4 | 130B | 智谱AI | 中英双语优秀 | 部分 |
| Qwen2.5 | 72B | 阿里云 | 开源最强之一 | ✅ |
| LLaMA 3 | 70B | Meta | 开源标杆 | ✅ |
| DeepSeek-V3 | 671B MoE | 深度求索 | MoE架构性价比高 | ✅ |
LLM不直接处理文本,而是将文本切分为Token(子词单元),再映射为整数ID。Token数量直接影响API费用和上下文窗口使用。
import tiktoken
enc = tiktoken.encoding_for_model("gpt-4")
text = "大语言模型正在改变世界"
tokens = enc.encode(text)
print(f"原文: {text}")
print(f"Token IDs: {tokens}")
print(f"Token数量: {len(tokens)}")
print(f"解码回文本: {enc.decode(tokens)}")
# 费用: GPT-4o $2.5/1M input, $10/1M output
# 1个中文字 ≈ 1-2 tokens | 1个英文单词 ≈ 1-1.5 tokens
✅ 验证通过:tiktoken编码/解码正确,中文通常占1-2个token
上下文窗口决定了模型一次能处理的最大token数量,直接影响输入长度、输出长度和成本。
| 模型 | 上下文窗口 | 约等于 |
|---|---|---|
| GPT-4o | 128K | ~10万字中文 |
| Claude 3.5 | 200K | ~15万字中文 |
| Gemini 1.5 Pro | 1M | ~75万字中文 |
┌──────────────────────┬──────────────────────────┐ │ ✅ 擅长 │ ❌ 不擅长 │ ├──────────────────────┼──────────────────────────┤ │ 自然语言理解与生成 │ 精确数学计算 │ │ 代码编写与解释 │ 实时信息获取 │ │ 知识问答与推理 │ 长期记忆(无状态) │ │ 摘要翻译与改写 │ 执行物理动作 │ │ 创意写作与头脑风暴 │ 保证100%事实准确 │ └──────────────────────┴──────────────────────────┘
LLM最大的可靠性问题是幻觉——模型会自信地生成看似合理但实际错误的内容。缓解策略:RAG检索增强、提示词约束、降低温度、多次验证、人工审核。
# 幻觉的典型表现与应对
hallucination_types = {
"虚构事实": "编造不存在的论文引用",
"错误归因": "把A说的话归给B",
"细节编造": "给真实事件添加虚假细节",
"逻辑跳跃": "推理中跳过关键步骤",
}
mitigation = {
"RAG检索增强": "用外部知识库提供事实依据",
"提示词约束": "要求不知道就说不知道",
"温度调低": "temperature=0减少随机性",
"多次验证": "让模型自我检查输出",
"人工审核": "关键场景必须有人把关",
}
print("幻觉缓解: RAG > 提示词 > 温度 > 验证 > 人工")
import tiktoken
def estimate_cost(text, model="gpt-4o",
input_price=2.5, output_price=10.0,
output_ratio=0.5):
enc = tiktoken.encoding_for_model(model)
input_tokens = len(enc.encode(text))
output_tokens = int(input_tokens * output_ratio)
cost = (input_tokens*input_price + output_tokens*output_price) / 1_000_000
return {"input_tokens": input_tokens, "cost_usd": round(cost, 6),
"cost_cny": round(cost * 7.2, 6)}
result = estimate_cost("请详细解释Transformer架构的原理")
print(f"Token: {result['input_tokens']}, 费用: ¥{result['cost_cny']}")
def select_model(task, budget, latency, privacy):
if privacy == "high": return "Qwen2.5-72B(本地)"
if task == "creative" and budget == "low": return "GPT-4o-mini"
if task == "coding" and latency == "low": return "DeepSeek-Coder"
if task == "analysis": return "GPT-4o"
return "GPT-4o(通用)"
print(select_model("coding", "medium", "low", "high"))