F FisherHub Docs

大模型概述

什么是大语言模型

大语言模型(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-12018.06117M证明无监督预训练的有效性
GPT-22019.021.5B展示零样本迁移能力
GPT-32020.05175B涌现上下文学习能力
GPT-3.52022.03-InstructGPT 对齐技术
GPT-42023.03推测 1.8T多模态、更强推理能力
GPT-4o2024.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 架构,在推理效率上取得了突破。

模型能力评估维度

  1. 知识广度:模型在常识、专业领域知识的覆盖程度
  2. 推理能力:逻辑推理、数学计算、因果推断
  3. 代码能力:编程语言理解、代码生成和 Debug 能力
  4. 指令遵循:能否准确理解用户意图并按要求执行
  5. 安全性:是否有害内容过滤、拒绝不当请求的能力

技术栈选择指南

根据不同的使用场景,选择合适规模的模型:

场景推荐模型部署方式显存需求
本地开发调试Qwen 2.5 0.5B-1.5Bllama.cpp4GB
企业客服系统Qwen 2.5 7B / LLaMA 3 8BvLLM + 单卡16GB
代码辅助工具DeepSeek Coder 6.7BTGI + 量化12GB
多模态分析GPT-4o / Qwen-VLAPI 调用-
复杂推理任务DeepSeek V3 / GPT-4oAPI 调用-

快速体验大模型

使用 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)

延伸阅读