🧬 大模型学习

大语言模型(LLM)的架构原理、训练方法与核心技术

什么是大语言模型?

大语言模型(Large Language Model,LLM)是基于 Transformer 架构、在海量文本数据上预训练的超大规模神经网络。它们通过「预测下一个 token」的方式学习语言的统计规律,从而获得强大的文本理解和生成能力。

💡 代表性模型

GPT-4、Claude、Gemini、Llama、Qwen、DeepSeek 等。模型参数量从数十亿到数万亿不等。

Transformer 架构

Transformer 是大模型的核心架构,由 Vaswani 等人在 2017 年的论文「Attention Is All You Need」中提出。

核心组件

大模型的训练流程

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

通过精心设计输入提示来引导模型输出,是最低成本使用大模型的方式。

RAG(检索增强生成)

将外部知识库与大模型结合:先从知识库检索相关文档,再将文档作为上下文输入模型生成回答。解决了模型知识截止和幻觉问题。

用户提问 → 向量化 → 检索知识库 → 获取相关文档
                                         ↓
最终回答 ← 模型生成 ← 拼接(问题 + 文档)

Fine-tuning(微调)

大模型的关键挑战

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 Google 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 验证效果,再考虑自部署。