🧬 大模型学习
大语言模型(LLM)的架构原理、训练方法与核心技术
什么是大语言模型?
大语言模型(Large Language Model,LLM)是基于 Transformer 架构、在海量文本数据上预训练的超大规模神经网络。它们通过「预测下一个 token」的方式学习语言的统计规律,从而获得强大的文本理解和生成能力。
💡 代表性模型
GPT-4、Claude、Gemini、Llama、Qwen、DeepSeek 等。模型参数量从数十亿到数万亿不等。
Transformer 架构
Transformer 是大模型的核心架构,由 Vaswani 等人在 2017 年的论文「Attention Is All You Need」中提出。
核心组件
- 自注意力机制(Self-Attention):让模型能够关注输入序列中任意位置的信息,捕捉长距离依赖关系
- 多头注意力(Multi-Head Attention):并行运行多组注意力,从不同角度理解文本
- 位置编码(Positional Encoding):为序列中的每个 token 注入位置信息
- 前馈网络(FFN):每个位置独立进行的非线性变换
- 层归一化(Layer Norm):稳定训练过程,加速收敛
大模型的训练流程
1. 预训练(Pre-training)
在大规模无标注文本上进行自监督学习,目标是预测下一个 token(Causal Language Modeling)。这一阶段让模型获得广泛的语言知识和世界知识。
# 伪代码示意
for batch in data_loader:
tokens = batch["input_ids"]
predictions = model(tokens[:, :-1])
loss = cross_entropy(predictions, tokens[:, 1:])
loss.backward()
optimizer.step()
2. 监督微调(SFT)
使用人工标注的高质量指令-回答对进行微调,让模型学会遵循指令、按照人类期望的方式输出。
3. 人类反馈强化学习(RLHF)
通过人类偏好数据训练奖励模型,再用 PPO 等强化学习算法优化模型输出,使其更符合人类价值观。
4. DPO(Direct Preference Optimization)
一种更简洁的对齐方法,跳过奖励模型训练,直接从偏好数据优化策略模型。
核心应用技术
Prompt Engineering
通过精心设计输入提示来引导模型输出,是最低成本使用大模型的方式。
- Zero-shot:直接提问,不给示例
- Few-shot:提供几个示例引导输出格式
- Chain-of-Thought(CoT):引导模型逐步推理
- System Prompt:设定模型的角色和行为约束
RAG(检索增强生成)
将外部知识库与大模型结合:先从知识库检索相关文档,再将文档作为上下文输入模型生成回答。解决了模型知识截止和幻觉问题。
用户提问 → 向量化 → 检索知识库 → 获取相关文档
↓
最终回答 ← 模型生成 ← 拼接(问题 + 文档)
Fine-tuning(微调)
- 全量微调:更新模型所有参数,效果最好但成本最高
- LoRA:只训练低秩适配矩阵,大幅减少可训练参数量
- QLoRA:在量化模型上进行 LoRA 训练,进一步降低显存需求
大模型的关键挑战
- 幻觉(Hallucination):模型生成看似合理但实际错误的内容
- 上下文窗口限制:模型能处理的最大 token 数量有限
- 推理成本:大模型推理需要大量 GPU 资源
- 知识截止:预训练后无法获取新知识(RAG 可缓解)
- 安全对齐:确保模型不生成有害内容
API 调用实战
通过 API 是大多数开发者使用大模型的主要方式。以下是 OpenAI 兼容接口的标准调用方法:
基础对话调用
from openai import OpenAI
client = OpenAI(
api_key="your-api-key",
base_url="https://api.openai.com/v1" # 可替换为其他兼容接口
)
response = client.chat.completions.create(
model="gpt-4",
messages=[
{"role": "system", "content": "你是一个专业的AI助手"},
{"role": "user", "content": "解释什么是Transformer架构"}
],
temperature=0.7,
max_tokens=1024
)
print(response.choices[0].message.content)
流式输出(Streaming)
流式输出可以逐 token 返回结果,提升用户体感速度,常用于聊天界面:
stream = client.chat.completions.create(
model="gpt-4",
messages=[{"role": "user", "content": "写一首关于AI的诗"}],
stream=True # 开启流式
)
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
Function Calling(函数调用)
Function Calling 让大模型能够调用外部工具和 API,是实现 AI Agent 的核心能力。模型根据用户意图自动决定调用哪个函数、传入什么参数。
import json
tools = [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "获取指定城市的天气信息",
"parameters": {
"type": "object",
"properties": {
"city": {"type": "string", "description": "城市名称"},
"unit": {"type": "string", "enum": ["celsius", "fahrenheit"]}
},
"required": ["city"]
}
}
}
]
response = client.chat.completions.create(
model="gpt-4",
messages=[{"role": "user", "content": "北京今天天气怎么样?"}],
tools=tools,
tool_choice="auto"
)
# 模型返回函数调用参数,由你的代码执行实际调用
call = response.choices[0].message.tool_calls[0]
args = json.loads(call.function.arguments)
print(f"调用函数: {call.function.name}({args})")
# 输出: 调用函数: get_weather({'city': '北京', 'unit': 'celsius'})
🔧 Function Calling 应用场景
天气查询、数据库操作、发送邮件、调用搜索引擎、执行代码、操作文件系统——几乎所有需要与外部系统交互的场景都可以通过 Function Calling 实现。
Structured Output(结构化输出)
通过 JSON Schema 约束模型输出格式,确保返回可解析的结构化数据,避免正则提取的不稳定性:
from pydantic import BaseModel
class MovieReview(BaseModel):
title: str
rating: float
summary: str
genres: list[str]
completion = client.beta.chat.completions.parse(
model="gpt-4",
messages=[{"role": "user", "content": "评价电影《星际穿越》"}],
response_format=MovieReview
)
review = completion.choices[0].message.parsed
print(f"电影: {review.title}, 评分: {review.rating}")
# 输出: 电影: 星际穿越, 评分: 9.2
Token 优化实战
合理使用 token 是降低 API 成本和提升响应速度的关键:
📏 估算 Token 数
英文约 1 token ≈ 4 字符或 ¾ 词;中文约 1 汉字 ≈ 1.5-2 token。使用 tiktoken 库精确计算。
🗂️ 上下文管理
多轮对话中,对历史消息做摘要压缩;用 System Prompt 精简指令,避免冗余重复。
📦 批处理请求
将多个短任务合并为一次请求(Batch API),可节省 50% 费用,适合非实时场景。
🎯 缓存策略
相同 Prompt 前缀会被自动缓存(Prompt Caching),设计固定 System Prompt 可显著降本。
主流大模型对比
| 模型 | 开发方 | 上下文 | 特点 | 开源 |
|---|---|---|---|---|
| GPT-4o | OpenAI | 128K | 综合能力最强,多模态(文/图/音) | 否 |
| Claude 3.5 | Anthropic | 200K | 长文分析、代码能力优秀,安全对齐 | 否 |
| Gemini 2.0 | 2M | 超长上下文,多模态原生支持 | 部分 | |
| Llama 3 | Meta | 128K | 开源标杆,社区生态丰富 | 是 |
| Qwen 2.5 | 阿里云 | 128K | 中文能力强,多尺寸可选(0.5B-72B) | 是 |
| DeepSeek V3 | DeepSeek | 128K | MoE 架构,性价比极高 | 是 |
💡 模型选择建议
通用任务选 GPT-4o / Claude 3.5;长文档处理选 Gemini 2.0;需要本地部署或定制训练选 Llama 3 / Qwen 2.5;追求性价比选 DeepSeek V3。建议先用 API 验证效果,再考虑自部署。