什么是大语言模型
大语言模型(Large Language Model, LLM)是指基于 Transformer 架构、通过海量文本数据训练得到的深度学习模型。这类模型通常包含数十亿到数千亿个参数,能够理解并生成自然语言,在翻译、摘要、问答、代码生成等任务上表现出色。
LLM 的核心能力来自于规模效应。当模型规模、数据量和计算量达到一定阈值后,模型会展现出小模型不具备的”涌现能力”(Emergent Abilities),比如上下文学习、链式推理和指令遵循。
发展历程
统计语言模型时代(1990s-2010s)
早期的语言模型基于 n-gram 统计方法,通过计算词序列的出现概率来建模语言。这类模型受限于稀疏性和上下文窗口短等问题。
神经网络语言模型(2013-2017)
Word2Vec 和 GloVe 等词向量技术出现,随后 LSTM、GRU 等循环神经网络被用于序列建模。2014 年的 Seq2Seq + Attention 机制为后续 Transformer 奠定了基础。
Transformer 革命(2017 至今)
2017 年 Google 发表《Attention Is All You Need》,提出 Transformer 架构。其核心创新是自注意力机制(Self-Attention),让模型可以并行处理序列中所有位置的依赖关系,大幅提升训练效率。
GPT 系列时间线
| 模型 | 发布时间 | 参数规模 | 特点 |
|---|---|---|---|
| GPT-1 | 2018.06 | 117M | 证明无监督预训练的有效性 |
| GPT-2 | 2019.02 | 1.5B | 展示零样本迁移能力 |
| GPT-3 | 2020.05 | 175B | 涌现上下文学习能力 |
| GPT-3.5 | 2022.03 | - | InstructGPT 对齐技术 |
| GPT-4 | 2023.03 | 推测 1.8T | 多模态、更强推理能力 |
| GPT-4o | 2024.05 | - | 原生多模态、更低延迟 |
主流开源模型概览
LLaMA 系列(Meta)
LLaMA 在 2023 年 2 月开源,证明了小模型在更多数据上训练可以超越大模型。LLaMA 2 引入了可商用许可,LLaMA 3 进一步提升了性能,8B 模型在多项基准上超越早期的 70B 级别模型。
Qwen 系列(阿里通义)
Qwen(通义千问)支持多种语言,尤其是中文能力突出。Qwen 系列涵盖 0.5B 到 110B 的多个规格,并提供量化版本方便本地部署。
DeepSeek 系列(深度求索)
DeepSeek V2 引入了 MoE(混合专家)架构,以极低的推理成本达到接近 GPT-4 的水平。DeepSeek 系列在数学推理和代码生成方面表现出色,且完全开源。
Mistral 系列
Mistral 7B 以其高效的架构设计著称,使用滑动窗口注意力机制降低计算复杂度。Mixtral 8x7B 采用 MoE 架构,在推理效率上取得了突破。
模型能力评估维度
- 知识广度:模型在常识、专业领域知识的覆盖程度
- 推理能力:逻辑推理、数学计算、因果推断
- 代码能力:编程语言理解、代码生成和 Debug 能力
- 指令遵循:能否准确理解用户意图并按要求执行
- 安全性:是否有害内容过滤、拒绝不当请求的能力
技术栈选择指南
根据不同的使用场景,选择合适规模的模型:
| 场景 | 推荐模型 | 部署方式 | 显存需求 |
|---|---|---|---|
| 本地开发调试 | Qwen 2.5 0.5B-1.5B | llama.cpp | 4GB |
| 企业客服系统 | Qwen 2.5 7B / LLaMA 3 8B | vLLM + 单卡 | 16GB |
| 代码辅助工具 | DeepSeek Coder 6.7B | TGI + 量化 | 12GB |
| 多模态分析 | GPT-4o / Qwen-VL | API 调用 | - |
| 复杂推理任务 | DeepSeek V3 / GPT-4o | API 调用 | - |
快速体验大模型
使用 Hugging Face Transformers 快速加载和运行一个开源模型:
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "Qwen/Qwen2.5-1.5B-Instruct"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
model_name,
device_map="auto"
)
messages = [
{"role": "system", "content": "你是一个专业的 Python 程序员。"},
{"role": "user", "content": "用 Python 实现斐波那契数列"}
]
text = tokenizer.apply_chat_template(
messages, tokenize=False, add_generation_prompt=True
)
inputs = tokenizer(text, return_tensors="pt").to(model.device)
outputs = model.generate(**inputs, max_new_tokens=256)
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(response)