LLM 学习笔记——理论基础
这份笔记按“大模型理论学习”的场景整理,重点覆盖基础原理、关键论文、训练流程,以及训练/推理系统与硬件资源,主要回答一个问题:“LLM 为什么能工作、是怎样训练和部署出来的”。
作者并不是大模型相关专业,这里的学习笔记仍然是非常浅显的,只是希望了解一些基本概念。
毫无疑问的是,在大模型领域,实践是远远走在理论前面的,但是基础理论的缺乏并不是致命的阻碍。一个历史上的例子是:“在蒸汽机已经大规模应用的年代,热力学的重要定理一条都还没搞出来,工程师完全凭借的是经验或错误的热质说。等到这些热力学定理终于写出来时,蒸汽机已经跑了几十年甚至上百年。”
一、先建立整体框架
可以先把现代大语言模型理解成一条主线:
1 | Transformer 架构 |
如果只看最核心的几件事,大语言模型之所以成功,主要是以下因素叠加:
- Transformer 提供了可扩展的序列建模方式。
- 预训练语言模型范式让模型可以先学通用能力,再适配具体任务。
- 海量文本和代码数据提供了足够丰富的训练信号。
- 自监督学习让数据规模可以大到互联网级别。
- 模型规模、数据规模和计算资源之间存在相对稳定的 scaling law。
从工程视角看,现代 LLM 也可以分成两段:
- 预训练:让模型形成能力上限。
- 后训练与部署:让模型更像一个可用产品。
从使用视角看,模型本身之外当然还会有各种工具和产品形态,但这些属于“怎么把模型用起来”的问题,不是这篇的重点。
二、基础原理与技术路线
2.1 为什么大语言模型能够成功
近年来,大语言模型(Large Language Models, LLM)在自然语言处理领域取得了显著进展。相比早期的机器学习方法,大语言模型能够在统一模型框架下完成多种语言任务,并在多个基准测试中取得较好的性能。
这种成功通常被认为是多个因素共同作用的结果,包括:
- Transformer 架构
- 预训练语言模型范式
- 海量数据
- 自监督学习
- scaling law(尺度律)
2.2 Transformer 架构
现代大语言模型通常基于 Transformer 架构。Transformer 的核心机制是 自注意力(self-attention),其基本计算形式为
$$
\mathrm{Attention}(Q,K,V)
= \mathrm{softmax}!\left(
\frac{QK^\top}{\sqrt{d_k}}
\right)V .
$$
其中:
- $Q$ 表示 query
- $K$ 表示 key
- $V$ 表示 value
- $d_k$ 为 key 的维度
在语言模型中,输入序列首先被映射为浮点数向量表示:
$$
x_1, x_2, \ldots, x_n
$$
然后通过线性变换得到
$$
Q = XW_Q,\quad
K = XW_K,\quad
V = XW_V .
$$
自注意力机制允许序列中的每个 token 与其他 token 建立依赖关系,从而能够有效建模长距离语义关系。
Transformer 的一个重要特点是其计算主要由 矩阵乘法 构成,这种计算形式非常适合 GPU 等并行计算设备,因此可以在大规模计算集群上高效训练。相比早期的循环神经网络(RNN),Transformer 更容易扩展到极大的模型规模。
大语言模型本质上还是在学习一个高维的条件概率分布,可以看作对复杂非线性函数的近似。理论上实现这种函数逼近的模型结构有无数种,Transformer 并不一定是唯一或最优的选择,但是 Transformer 具有高度并行化的计算特性,主要由矩阵运算组成,因此能够很好地利用 GPU 等硬件的计算能力,支持大规模的训练。
2.3 预训练语言模型范式:BERT 与 GPT
Transformer 架构提出之后,自然语言处理逐渐形成了 预训练语言模型(pretrained language model) 的范式:
1 | 大规模语料预训练 → 获得通用语言表示 → 在具体任务上微调 |
其中两个具有代表性的模型是:
- BERT(Bidirectional Encoder Representations from Transformers)
- GPT(Generative Pretrained Transformer)
BERT 采用 Transformer 编码器结构,通过 masked language modeling 进行训练,即随机遮蔽部分 token 并预测其内容,从而学习上下文相关的语言表示。
GPT 则采用 自回归语言模型,其训练目标为预测下一个 token:
$$
p(x_1,\ldots,x_n) =
\prod_{t=1}^{n}
p(x_t \mid x_1,\ldots,x_{t-1}) .
$$
随着模型规模不断扩大,GPT 系列模型逐渐成为现代大语言模型的主要技术路线。
2.4 海量数据与自监督学习
大语言模型能够利用互联网规模的文本数据进行训练,例如:
- 网页文本
- 书籍
- 代码仓库
- 技术文档
这些数据可以统一表示为 token 序列,从而形成规模达到 $10^{11} \sim 10^{13}$ 级别的训练语料。
预训练过程中通常采用 自监督学习。以 GPT 的训练目标为例,标签可以直接从文本中生成,因此不需要人工标注。这使得模型能够在极大规模的数据上进行训练,从而学习丰富的语言模式和知识结构。
2.5 Scaling Law
在大语言模型研究中,一个重要发现是 scaling law。实验观察表明,当模型规模、数据规模和计算量增加时,模型性能会按照稳定规律提升。
例如,如果用语言模型的损失函数 $L$ 表示模型性能,则其与模型参数规模 $N$ 的关系可以近似表示为
$$
L(N) \approx L_\infty + a N^{-\alpha}.
$$
其中:
- $N$ 表示模型参数数量
- $L_\infty$ 为理论极限损失
- $a$ 与 $\alpha$ 为经验常数
进一步研究表明,模型规模 $N$、数据规模 $D$ 和计算量 $C$ 之间需要保持合理比例。当三者同时增加时,模型性能可以持续提升:
1 | 更大的模型 + 更多训练数据 + 更多计算资源 → 更好的模型性能 |
大力真的可以出奇迹。
这一关系说明随着模型规模增加,模型损失会按照幂律(power law)逐渐下降。
2.6 统一的序列建模框架
语言任务具有一个重要特点:许多不同任务都可以表示为 序列生成问题。例如:
- 翻译:输入源语言句子,生成目标语言句子
- 问答:输入问题和上下文,生成答案
- 摘要:输入文章,生成摘要
这些任务都可以表示为:
1 | 输入序列 → 输出序列 |
因此,大语言模型可以通过统一的序列建模框架处理多种语言任务,并在不同任务之间共享知识。
2.7 关键论文时间线
现代大语言模型(Large Language Models, LLM)的技术路线主要由几个关键思想逐步形成,包括 Transformer 架构、大规模预训练、Scaling Laws 以及对齐技术。下面按时间线列出若干代表性论文。
Attention Is All You Need, 2017
Attention Is All You Need Vaswani et al., 2017
该论文提出了 Transformer 架构,用自注意力(self-attention)机制取代传统的循环神经网络(RNN)和卷积网络(CNN)。Transformer 成为大语言模型的基础结构,包括 GPT、BERT、PaLM、LLaMA 等大模型均基于这一架构。
BERT, 2018
BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding Devlin et al., 2018
BERT 使用 Transformer 编码器进行双向语言建模。其训练目标为 Masked Language Model,即随机遮盖输入序列中的若干词,并预测被遮盖的 token,从而学习上下文表示。该方法在多种自然语言理解任务上取得了较好的效果。
BERT 这个缩写名称的完整含义为
$$
\text{BERT} = \text{Bidirectional Encoder Representations from Transformers}
$$
GPT, 2018
Improving Language Understanding by Generative Pre-Training Radford et al., 2018
GPT 模型采用自回归语言建模目标:
$$
P(x_1,\dots,x_n)=\prod_{i=1}^{n} P(x_i \mid x_{<i}) .
$$
该方法使用 decoder-only 的 Transformer 结构,在文本生成任务中表现良好,并成为后续 GPT 系列模型的基础。
GPT 这个缩写名称的完整含义为
$$
\text{GPT} = \text{Generative Pre-trained Transformer}
$$
Scaling Laws, 2020
Scaling Laws for Neural Language Models Kaplan et al., 2020
该论文通过大量实验发现,语言模型的性能与模型参数规模、训练数据规模以及计算量之间存在稳定的幂律关系。例如可以写为
$$
L(N,D) \approx L_{\infty} + aN^{-\alpha} + bD^{-\beta} + cC^{-\gamma} .
$$
其中 $N$ 表示模型参数规模,$D$ 表示训练数据规模,$C$ 表示计算量。
这一结果表明,随着模型规模的增加,模型性能可以持续提升,从而推动了大规模语言模型的发展。
GPT-3, 2020
Language Models are Few-Shot Learners Brown et al., 2020
该论文提出 GPT-3(约 175B 参数)。研究发现,当模型规模足够大时,模型可以通过 prompt 中提供的少量示例完成多种任务,即所谓的 few-shot learning,而不需要对每个任务单独微调。
2022 年底,GPT 3.5 的出现是 LLM 时代开启的标志性事件。
Chinchilla, 2022
Training Compute-Optimal Large Language Models Hoffmann et al., 2022
该论文重新研究了 Scaling Laws,指出许多已有模型在训练时数据量不足。研究表明,在固定计算预算下,最佳训练策略应满足
$$
\text{tokens} \propto \text{parameters}.
$$
也就是说,模型参数规模与训练 token 数量应当同步增长。
论文提出的 Chinchilla 模型(70B 参数但训练数据更多)在性能上超过了更大的 GPT-3。
InstructGPT, 2022
Training Language Models to Follow Instructions with Human Feedback Ouyang et al., 2022
该论文提出 InstructGPT,通过人类反馈强化学习(Reinforcement Learning from Human Feedback, RLHF)对语言模型进行对齐训练。典型流程包括
- 预训练语言模型
- 使用指令数据进行监督微调
- 根据人类偏好训练奖励模型
- 使用强化学习优化模型
这种方法使模型能够更好地理解和执行人类指令,并成为当前对话式语言模型的重要训练范式。
2.8 当前常见研究方向
- 模型规模与训练效率:在 Scaling Laws 的指导下,研究者继续探索更大规模模型的训练,同时也更加关注计算效率。例如通过改进训练策略、优化数据使用方式或使用专家混合(Mixture-of-Experts)结构,在有限计算资源下获得更高性能。
- 推理效率与部署成本:随着模型规模增大,推理成本成为重要问题。当前常见的技术包括模型蒸馏、量化、稀疏化以及高效注意力结构等,用于降低显存占用和计算开销,使模型能够在更小的硬件平台上运行。
- 多模态模型:越来越多的模型开始同时处理多种数据类型,例如文本、图像、音频和视频。这类模型通过统一的表示学习框架,使模型能够完成视觉问答、图文生成、视频理解等任务。
- 工具使用与外部系统交互:一些模型被设计为能够调用外部工具,例如搜索引擎、数据库或代码执行环境。通过这种方式,模型可以在需要时获取外部信息,从而提升回答的准确性和实用性。
- 推理能力与复杂任务求解:研究者也在探索如何提升模型在数学、逻辑推理和复杂规划任务中的能力。例如通过链式推理(Chain-of-Thought)、自我一致性推理或强化学习方法来改进推理过程。
2.9 小结
这一部分的论文时间线与研究方向,基本对应了前面第一部分给出的那条主线:Transformer 架构、大规模预训练、Scaling Laws,以及后续的指令微调与对齐。这些思想共同构成了现代大语言模型技术路线的基础。
三、一个现代 LLM 是怎样训练出来的
下面以 decoder-only 自回归语言模型 为主,也就是 GPT、LLaMA、Qwen 这一类的主流路线,描述一个典型现代大语言模型的训练周期。从随机初始化权重开始,到最终变成可聊天、可编程、可工具调用的模型。
大致流程如下:
flowchart TD;
A[随机初始化]
B[分词器]
C[预训练(得到 Base Model)]
D[监督微调(SFT)]
E[偏好学习]
F[安全对齐]
G[专项能力训练]
H[评测 / 蒸馏 / 压缩 / 量化]
I[部署]
A --> B --> C --> D --> E --> F --> G --> H --> I
3.1 模型结构设计
在真正训练前,先要定下模型结构。
常见要素包括:
- 参数规模:7B、14B、32B、70B……
- 层数:例如 32 层、48 层、80 层
- hidden size:例如 4096、8192
- attention heads 数量
- 上下文长度:4k、32k、128k……
- 是否使用 MoE(Mixture of Experts)
- 激活函数、归一化方式、位置编码方式
这一步决定:
- 模型容量上限
- 训练显存需求
- 推理成本
- 长上下文能力上限
- 之后能否高效扩展
一个极简结构示意
1 | Token Embedding |
3.2 随机初始化权重
把模型里所有参数初始化为某种小随机数,而不是全 0。例如:
- embedding 矩阵随机初始化
- attention 的 Q/K/V/O 权重随机初始化
- MLP 层权重随机初始化
常见初始化方式:
- Xavier / Glorot
- Kaiming
- 正态分布小方差初始化
- 针对 Transformer 的专门缩放规则
为什么不能全 0?如果所有权重都相同,那么
- 每个神经元的梯度相同
- 模型无法打破对称性
- 学不到有区别的表示
3.3 分词器(Tokenizer)
分词器负责把原始文本切成 token,这是大模型处理数据的基本单位。不是简单按“词”切,而往往是 子词(subword)、字节或字符片段。之所以要分词,是因为神经网络只能处理数值张量,因此需要先把文本离散化为 token,再通过 embedding 层映射为浮点向量。
常见分词方法:
- BPE
- SentencePiece
- Unigram
- byte-level BPE
例如原始文本:
1 | User: Write a Python function for quicksort. |
分词后可能变成:
1 | ["User", ":", " Write", " a", " Python", " function", " for", " quick", "sort", "."] |
再映射成整数 id:
1 | [6312, 25, 4512, 264, 13325, 734, 369, 9121, 4503, 13] |
分词器会影响:
- 词表大小
- 序列长度
- 多语言效率
- 代码建模效果
- 稀有词表示能力
分词器训练使用的是大规模文本样本,但相比主模型训练要轻得多。典型情况例如:
- 训练语料采样:GB 到 TB 级文本中的一部分
- 词表:32k、50k、100k、150k 等
- 时间:几小时到几天
注意:
- 分词器不负责把 token id 转换为高维浮点向量(token vector),这是主模型 embedding 层(词嵌入层)的工作。
- 分词器训练通常不被视作大模型训练的一部分。
3.4 预训练数据准备
收集、清洗、去重、过滤海量文本和代码数据。来源可能包括:
- 网页文本
- 书籍,论文
- 问答社区
- 文档
- 代码仓库
- 数学题
- 多语言语料
然后需要对原始数据做一系列处理:
- 去 HTML 噪声
- 去重
- 去模板垃圾内容
- 去低质量文本
- 去脏词/非法内容的一部分
- 文档切片
- 长短控制
- 语言识别
- 质量打分
很多时候,数据质量比结构微调更重要。垃圾数据会直接带来:
- 胡言乱语
- 重复模式
- 错误知识
- 风格污染
- 训练不稳定
预训练本质是在“模仿文本分布”,所以给预训练提供的海量数据分布几乎决定模型学到什么。
预训练需要的数据量通常极大,粗略量级:
- token 数:几十亿、几百亿、几千亿、上万亿 token
- 当前主流开源中,常见是 trillion-token 级别
例如:
- 小模型:几十 B token 到数百 B token
- 中大型模型:数百 B 到数 T token
如果把整个项目算上,预训练的数据准备的工程成本非常高,甚至接近训练本身。但如果只关注 GPU 算力消耗,主要还是后面的预训练。
3.5 预训练(Pretraining)
这是整个模型能力形成的主体阶段,目标是让大模型学会预测下一个 token。
例如输入:
1 | The capital of France is |
目标是预测:
1 | Paris |
更精确地说,模型在每个位置都预测下一个 token。
输入序列:
1 | [t1, t2, t3, t4] |
训练目标:
- 在位置 1 预测
(t_2) - 在位置 2 预测
(t_3) - 在位置 3 预测
(t_4) - …
损失函数一般是交叉熵:
$$
\mathcal{L} = - \sum_t \log P_\theta(x_t \mid x_{<t})
$$
预训练过程中也可能需要不断进行调整,例如调整学习率等。
例如提供一个训练样本:
1 | The capital of Japan is Tokyo. |
希望把模型训练成:
- 看到
The预测capital - 看到
The capital预测of - …
- 看到
The capital of Japan is预测Tokyo
为了正确预测后续 token,模型必须学会:
- 语法
- 语义
- 实体关系
- 世界知识
- 文风
- 推理模式
- 代码结构
- 数学表达模式
例如要预测:
1 | The derivative of sin(x) is |
它若要预测出 cos(x),就必须捕捉某些知识模式。
预训练步骤是算力黑洞,占全过程对 GPU 算力需求的 80% 以上。常见量级大约为:
- 参数:7B / 13B / 34B / 70B / 100B+
- token:几百 B 到数 T
- 训练设备:成百上千张 GPU/TPU
- 时间:数周到数月
预训练结束后得到的模型通常称为 Base Model。
预训练结束后得到的模型可以做到
- 续写文本
- 一定程度答题
- 一定程度写代码
- 有初步推理能力
但通常还不能很好做到
- 按指令回答
- 安全
- 对话稳定
- 风格固定
有时也可以选择在预训练的通用语料基础上,再加上特定领域的语料(医学、法律等),以强化在特定领域的能力。
预训练结束之后,直到部署之前的步骤都属于后训练。
换句话说,预训练之后的大模型只是“会续写”,经过 SFT 之后才更像“会执行任务”。
3.6 后训练(Post-training)
预训练结束之后,直到部署之前的步骤都属于后训练。它们更关心“行为方式”和“产品可用性”。
监督微调(SFT)
监督微调是指使用指令-回答格式的数据,让模型学会“用户问,助手答”。
输入不是纯文本续写,而是结构化样本,例如
1 | User: ... |
或
1 | <system>... |
也可以是多轮对话。
SFT 的训练目标通常仍然是优化交叉熵损失,但只对 assistant 回复部分计入损失。
数据示例:
1 | Instruction: |
1 | Instruction: |
Base Model 经过 SFT 得到的模型通常称为 Instruct Model 或 Chat Model。
经过 SFT 之后,模型更像一个助手,主要变化包括:
- 学会遵循指令
- 学会问答格式
- 学会多轮对话格式
- 输出更稳定
- 更像一个助手
相比预训练,SFT 的数据规模会小很多。耗时和成本占比相对于预训练也非常小,很多时候可能只占总训练算力的几个百分点。
偏好学习(Preference Learning)
SFT 后模型能回答,但回答未必最符合人类偏好。偏好学习负责教会模型“哪个答案更好”。
因为很多实际问题并没有唯一正确答案,但有明显更合适的答案。更好的答案通常具有:
- 更清晰
- 更完整
- 更安全
- 更少编造
- 更符合用户意图
常见方法包括:
- RLHF
- DPO
数据形式通常是:
1 | Prompt |
数据示例:
1 | Prompt: |
Instruct Model 经过偏好学习得到的模型通常称为 Aligned Model。
这一步的成本不在算力,而是数据和人工标注成本。
安全对齐(Safety Alignment)
安全对齐有时会并入 SFT 或偏好学习,有时单独做。
这个环节专门训练模型在敏感、高风险请求下采取合适行为,例如:
- 拒答危险内容
- 不生成违法指导
- 避免明显有害建议
- 在医学/法律等高风险场景更加保守
若不做安全对齐,模型可能:
- 直接给出攻击步骤
- 生成危险操作指导
- 模仿仇恨/歧视文本
- 对高风险问题过度自信
预训练模型学到的是互联网上存在的分布,其中包含大量不该模仿的内容。
数据示例:
1 | User: |
或者医疗风险提示:
1 | User: |
专项能力训练
这个环节就是让通用模型更像用户需要的定制产品,通常包括:
- 代码能力训练
- 数学能力训练
- 工具调用训练
- Agent 能力训练
3.7 评测、蒸馏、压缩与部署优化
还有一些较后阶段的环节:
- 蒸馏(Distillation):可选,但现在非常常见,通常发生在较后阶段。蒸馏就是用大模型当 teacher,生成高质量数据,训练更小的 student。
- 压缩、量化、部署优化:这不是让模型学能力,而是让它能跑,更适合线上服务。
3.8 训练流程小结
整个训练过程可以粗分成两部分:
- 预训练:
- 需要海量语料,耗费大量计算资源
- 决定模型大部分的能力上限
- Pretraining → capability
- 后训练:
- 包括监督微调、偏好学习、安全对齐、专项能力训练等
- 决定模型大部分行为方式和可用性
- Post-training → alignment
四、训练、推理、工具与硬件
4.1 训练阶段和推理阶段的根本区别
大语言模型开发的软件栈通常分为两个阶段:
- 训练阶段(Training) → 使用大量数据训练,不断调整大模型权重,最终形成模型权重数据
- 推理阶段(Inference) → 使用固定的大模型权重数据,对外提供服务,接收输入并输出
两者关注的问题不同,实际使用的工具也不同。
训练阶段的目标:从大量数据中训练模型,不断调整大模型的权重,最终训练完成,得到大模型权重数据。
训练阶段的主要流程如下:
1 | forward → loss → backward → optimizer step |
推理阶段的主要流程如下:
1 | 输入 token → Transformer forward → logits → sampling → next token |
然后循环往复,直到生成 EOS token 或者达到最大长度。
4.2 训练系统关注什么
训练阶段的目标是优化权重,需求主要是分布式训练:
- 模型并行:将大模型拆分到多个 GPU。
- 通信效率:大量梯度同步(如 all-reduce)。
- 显存管理:需要存储 activation、gradient 和 optimizer 状态。
常见的开源训练工具包括:
- PyTorch:主流深度学习框架,提供 tensor 运算和自动求导。
- JAX:Google 生态框架,结合 XLA 编译器用于大规模训练。
- Megatron-LM:Transformer 训练框架,提供 tensor parallel 与 pipeline parallel。
- DeepSpeed:分布式训练优化库,核心技术是 ZeRO 显存优化。
4.3 推理系统关注什么
推理阶段的目标非常简单明确:在已有模型权重数据的情况下,如何在服务端部署大模型,低延迟高并发地生成 token,从而对外提供大模型服务。
推理过程没有反向传播,不需要计算梯度,因此虽然训练阶段使用的工具框架也能运行大模型,但是效率非常低,需要为推理阶段设计专门的工具。
在接收到用户 prompt 对应的 tokens 之后,实际推理过程包括两个阶段:
- Prefill:将整段 prompt 对应的 tokens 输入模型,得到每个位置的 logits,只使用最后一个位置的 logits 进行 sampling,得到回答的第一个 token。
- Decode:输入一个 token,获得下一个 token,继续将其输入。循环直到 EOS token 或者达到最大长度。
我们需要引入推理阶段的一个重要概念——KV cache。合理且普遍采用的优化方法是用空间换时间:缓存之前所有 token 在每一层 attention 中产生的 K/V,达到加速计算的目的,代价则是 KV cache 的空间开销。
- 假设 prompt 只有一个 token 输入:
- 此时整个推理过程看起来像逐 token 的输入输出:输入一个 token,获得一个 token,再将其输入,获得下一个 token。
- 但实际上,前面出现的所有 token 都会参与到生成下一个 token 的计算中。
- 我们当然可以每次把它们全部重新输入计算,但这种做法开销太大。
- 因此通常采用 KV cache,把之前 token 在每一层 attention 中产生的 K/V 缓存起来。
- 同样,如果提供了一大段 prompt,虽然 Prefill 阶段只截取最后一个位置的 logits 来采样第一个回答 token,但 prompt 的信息实际上会以 KV cache 的形式保留在各层 attention 中,并影响后续每一个 token 的生成。
推理系统(LLM inference engine)的目标是高效运行,需求主要包括:
- KV cache 管理
- 显存管理
- batch 调度
- GPU kernel 优化,例如 FlashAttention
常见的开源推理工具包括:
- vLLM:高并发推理服务器,核心是 PagedAttention 和 KV cache 动态管理。
- Text Generation Inference:HuggingFace 官方推理服务,支持 streaming 和动态 batching。
- llama.cpp:轻量本地推理引擎,支持 CPU 或小 GPU 运行量化模型。
- TensorRT-LLM:NVIDIA GPU 推理框架,重点优化 GPU kernel 性能。
- Ollama:更偏向本地模型运行与管理工具,可以简单理解为对 llama.cpp 的封装,使得整个部署过程更加简单,因此对个人在本地尝试部署大模型非常友好。
4.4 对比小结
| 训练阶段 | 推理阶段 | |
|---|---|---|
| 计算 | forward + backward | forward |
| 主要显存占用 | activation / gradient | KV cache |
| 重点关注 | 分布式通信 | 内存管理 |
| batch | 大 batch | 小 batch |
| 延迟要求 | 不敏感 | 非常敏感 |
4.5 模型规模与 GPU 需求
大模型的规模通常用参数数量(parameters)表示,常见单位是 B(Billion,十亿参数)。例如 7B 表示约 70 亿参数。
需要注意的是,参数规模只反映模型容量,并不能完全决定资源需求;模型架构(Dense / MoE)、上下文长度、量化方式等都会显著影响训练和部署成本。
常见大模型规模层级如下表:
| 规模级别 | 模型定位 | 示例 |
|---|---|---|
| 7B–14B | 小型开源模型 | Qwen2.5-7B |
| 32B | 中型 dense 模型 | Qwen2.5-32B |
| 70B | 主流 dense 大模型 | Qwen2-72B |
| 200B | 中型 MoE 模型 | DeepSeek-V2 / V2.5 (236B,激活21B) |
| 600B+ | 大型 MoE 模型 | DeepSeek-V3 / R1 (671B,激活37B) |
| 1T+ | 超大模型 | GPT-4 / Gemini(业界猜测/未公开) |
MoE(Mixture of Experts)模型通常具有大量总参数,但推理时只激活其中一部分专家,因此实际计算量可能远小于总参数规模。例如 DeepSeek-V3 / R1 总参数约 671B,但在推理时,每 token 仅激活约 37B。
对于同一模型,训练显存通常远大于推理显存,常见经验估计约为 5–10 倍。该比例会受到 batch size、上下文长度、并行策略、优化器和显存优化技术等因素影响。假设使用 80GB GPU、BF16/FP16、AdamW、dense 模型,粗略可以得到以下表格:
| 模型规模 | 常见部署参考 |
|---|---|
| 7B | 单卡 24GB |
| 13B | 单卡 48GB 更稳 |
| 32B | 单卡 80GB |
| 70B | 2 × 80GB |
| 120B | 4 × 80GB |
| 200B+ | 8 × 80GB+ |
