
【综述】LLM - Large Language Model
大模型进化史
Transformer 革命(2017 年)
Transformer(2017)
起源与发展
Transformer 源自于自然语言处理任务 NLP;在计算机视觉领域 CV,近年来 Transformer 逐渐替代 CNN 成为一个热门的研究方向。此外,Transformer 在文本、语音、视频等多模态领域也在崭露头角。
2017 年 Google 在 《Attention Is All You Need》 中提出了 Transformer 结构用于序列标注,在翻译任务上超过了之前最优秀的循环神经网络模型;与此同时,Fast AI 在 《Universal Language Model Fine-tuning for Text Classification》 中提出了一种名为 ULMFiT 的迁移学习方法,将在大规模数据上预训练好的 LSTM 模型迁移用于文本分类,只用很少的标注数据就达到了最佳性能。
这些具有开创性的工作促成了两个著名 Transformer 模型的出现:
- GPT (the Generative Pretrained Transformer);
- BERT (Bidirectional Encoder Representations from Transformers)。
Transformer 和 LSTM(Long Short-term Memory Networks,长短时记忆神经网络)的最大区别,就是 LSTM 的训练是迭代的、串行 的,必须要等当前字处理完,才可以处理下一个字;而 Transformer 的训练是 并行 的,即所有字是同时训练的,这样就大大增加了计算效率。Transformer 使用了位置嵌入(Positional Encoding)来理解语言的顺序,使用 自注意力机制(Self Attention Mechanism)和 前馈全连接层 进行计算,这是 Transformer 的创新点。
基本结构
在 Transformer 模型中,编码器负责理解和提取输入文本中的相关信息,通常涉及到处理文本的序列化形式,例如单词或字符,并且用 自注意力机制(Self-Attention)来理解文本中的上下文关系。
编码器的输出是输入文本的连续表示,通常称为 嵌入(Embedding)。这种嵌入包含了编码器从文本中提取的所有有用信息,并以一种可以被模型处理的格式(通常是高维向量)表示。
解码器的任务是根据从编码器接收到的嵌入来生成翻译后的文本(目标语言),其中 编码器是双向 的,解码器是单向 的,需要循环迭代输出。
虽然新的 Transformer 模型层出不穷,它们采用不同的预训练目标在不同的数据集上进行训练,但是依然可以按模型结构将它们大致分为三类:
- 纯 Encoder (Encoder-Only) 模型(例如 BERT),又称自编码 (auto-encoding) Transformer 模型;
- 纯 Decoder (Decoder-Only) 模型(例如 GPT),又称自回归 (auto-regressive) Transformer 模型;
- Encoder-Decoder 模型(例如 BART、T5),又称 Seq2Seq (sequence-to-sequence) Transformer 模型。
Encoder-Only
**Encoder-only ** 架构的 LLMs 仅包含编码器部分。它主要适用于不需要生成序列的任务,只需要对输入进行编码和处理的单向任务场景,更擅长 对文本内容进行分析、分类,包括情感分析,命名实体识别。
Encoder-Only 架构的核心思想是利用神经网络 对输入文本进行编码,提取其特征和语义信息,并将编码结果传递给后续的处理模块。这种架构的优点是能够更好地理解输入文本的语义和上下文信息,从而提高文本分类和情感分析等任务的准确性。缺点是它 无法直接生成文本输出,因此在需要生成文本的任务中不太适用。
Encoder-Only 架构的大模型有谷歌的 BERT、智谱 AI 发布的第四代基座大语言模型 GLM4(2024 年)等。其中,BERT 是基于 Encoder-Only 架构的预训练语言模型。GLM4 是智谱 AI 发布的第四代基座大语言模型,该模型在 IFEval 评测集上,在 Prompt 提示词跟随(中文)方面,GLM-4 达到了 GPT-4 88%的水平。
Decoder-Only
Decoder-Only 架构,也被称为生成式架构,仅包含解码器部分,主要是为了预测下一个输出的内容 / token 是什么,并把之前输出的内容 / token 作为上下文学习。它通常用于序列生成任务,如文本生成、机器翻译等。这种架构的模型适用于需要生成序列的任务,可以从输入的编码中生成相应的序列。同时,Decoder-Only 架构还有一个重要特点是可以进行无监督预训练。在预训练阶段,模型通过大量的无标注数据学习语言的统计模式和语义信息。
Decoder-Only 架构的优点是擅长创造性的写作,比如写小说或自动生成文章。它更多关注于从已有的信息(开头)扩展出新的内容。其缺点是 需要大量的训练数据 来提高生成文本的质量和多样性。
Decoder-Only 架构的大模型的代表有 GPT 系列、LLaMA、OPT、BLOOM 等。这类模型采用预测下一个词进行训练,常见下游任务有文本生成、问答等,因此被称为 ALM(Autoregressive Language Model)。
Encoder-Decoder
Encoder-Decoder 架构,也被称为序列到序列架构,同时包含编码器和解码器部分。它通常用于序列到序列(Seq2Seq)任务,如机器翻译、对话生成等。这种架构的代表是以 Google 训练出来的 T5 为代表的相关大模型。
Encoder-Decoder 架构的核心思想是利用编码器对输入序列进行编码,提取其特征和语义信息,并将编码结果传递给解码器。然后,解码器根据编码结果生成相应的输出序列。这种架构的优点是能够更好地处理输入序列和输出序列之间的关系,从而提高机器翻译和对话生成等任务的准确性。缺点是 模型复杂度较高,训练时间和计算资源消耗较大。
Encoder-Decoder 架构的大模型有很多,例如 Google 的 T5 模型、华为的盘古 NLP 大模型等。
其中,华为的盘古 NLP 大模型首次使用 Encoder-Decoder 架构,兼顾 NLP 大模型的理解能力和生成能力,保证了模型在不同系统中的嵌入灵活性。在下游应用中,仅需少量样本和可学习参数即可完成千亿规模大模型的快速微调和下游适配,这一模型在智能舆论以及智能营销方面都有不错的表现。
特点
- 自注意力机制(Self-Attention):这是 Transformer 的核心概念之一,它使模型能够同时考虑输入序列中的所有位置,而不是像循环神经网络(RNN)或卷积神经网络(CNN)一样逐步处理。自注意力机制允许模型根据输入序列中的不同部分来赋予不同的注意权重,从而更好地捕捉语义关系。
- 多头注意力(Multi-Head Attention):Transformer 中的 自注意力机制被扩展为多个注意力头,每个头可以学习不同的注意权重,以更好地捕捉不同类型的关系。多头注意力允许模型并行处理不同的信息子空间。
- 堆叠层(Stacked Layers):Transformer 通常由多个相同的编码器和解码器层堆叠而成。这些堆叠的层有助于模型学习复杂的特征表示和语义。
- 位置编码(Positional Encoding):由于 Transformer 没有内置的序列位置信息,它需要额外的位置编码来表达输入序列中单词的位置顺序。
- 残差连接和层归一化(Residual Connections and Layer Normalization):这些技术有助于减轻训练过程中的梯度消失和爆炸问题,使模型更容易训练。
- 编码器和解码器:Transformer 通常包括一个编码器用于处理输入序列和一个解码器用于生成输出序列,这使其适用于序列到序列的任务,如机器翻译。
预训练 Transformer 模型时代(2018 - 2020 年)
2017 年 Transformer 架构的引入为自然语言处理开启了一个新时代,其特点是预训练模型的兴起以及对模型规模前所未有的关注。这一时期出现了两个具有影响力的模型家族:BERT 和 GPT,它们展示了大规模预训练和微调范式的强大力量。
BERT(2018.10)
2018 年,谷歌推出了 BERT(Bidirectional Encoder Representations from Transformers,双向上下文理解),它使用 Transformer 的 编码器(Encoder-Only),与之前单向处理文本(从左到右或从右到左)的模型不同,BERT 采用了 双向(Bidirectional) 训练方法,使其能够 同时从两个方向捕捉上下文。
例如:“The bank is situated on the ______ of the river.”
在单向模型中,对空白的理解将 严重依赖于前面的单词,并且模型可能难以辨别“bank”是指银行还是河的一侧。
BERT 是双向的,它同时考虑左侧(“The bank is situated on the”)和右侧上下文(“of the river”),从而实现更细致的理解。它理解缺失的单词可能与银行的地理位置有关,展示了双向方法带来的语境丰富性。
BERT 的关键创新点包括:
掩码语言建模(MLM):BERT 不是预测序列中的下一个单词,而是 被训练来预测句子中随机掩码的词元。这迫使模型在进行预测时考虑句子的整个上下文——包括前面和后面的单词。例如,对于句子 “The cat sat on the [MASK] mat”,BERT 会根据周围的上下文学习预测出 “soft”。
下一句预测(NSP):除了 MLM,BERT 还在一个名为下一句预测的次要任务上进行训练,在这个任务中,模型学习预测两个句子在文档中是否连续。这有助于 BERT 在需要理解句子之间关系的任务中表现出色,如问答和自然语言推理。
BERT-wwm(2019)
2019 年,哈工大和科大讯飞联合发表 中文 BERT-WWM 模型的论文。
BERT-wwm 调整的地方在于 MLM 过程中使用全词掩码(Whole Word Mask):
上述提到,BERT 使用 WordPiece 对句子进行切分 tokens,并且会产生 Subword,如果 Subword 被选中 mask,那么整个单词都会进行 mask,而原来的则不会。
例如:playing 被拆分为 play
和 ##ing
两个 Subword,当 ##ing
被选中 mask 时,那么 play
也会同时进行 mask。
中文和英文不同,英文最小的 token 是一个单词,而中文中最小的 token 却是字,词是由一个或多个字组成,且每个词之间没有明显的分割,包含更多信息的是词,对全词 mask 就是对整个词都通过 mask 进行掩码。
例:
原始文本: 使用语言模型来预测下一个词的 probability。
分词文本: 使用 语言 模型 来 预测 下 一个 词 的 probability 。
原始 Mask 输入:使用 语言 [MASK] 型 来 [MASK] 测 下 一个 词 的 pro [MASK] ##lity 。
全词 Mask 输入 使用 语言 [MASK] [MASK] 来 [MASK] [MASK] 下 一个 词 的 [MASK] [MASK] [MASK] 。
RoBERTa(2019)
RoBERTa 出自 Facebook,提出了一种鲁棒性更强的 BERT 模型预训练方法。RoBERTa 的预训练语料更多、Batch size 更大、训练更久,具体改进如下:
(1)静态 Mask 变动态 Mask
Bert 在整个预训练过程,选择进行 mask 的 15%的 Tokens 是不变的,也就是说从一开始随机选择了这 15%的 Tokens,之后的 N 个 epoch 里都不再改变了。这就叫做静态 Masking。
而 RoBERTa 一开始把预训练的数据复制 10 份,每一份都随机选择 15%的 Tokens 进行 Masking,也就是说,同样的一句话有 10 种不同的 mask 方式。然后每份数据都训练 N/10 个 epoch。这就相当于在这 N 个 epoch 的训练中,每个序列的被 mask 的 tokens 是会变化的。这就叫做动态 Masking。
这样做的目的是:动态 mask 相当于间接的增加了训练数据,有助于提高模型性能。
(2)移去 NSP 任务
Bert 为了捕捉句子之间的关系,使用了 NSP 任务进行预训练,就是输入一对句子 A 和 B,判断这两个句子是否是连续的。两句子最大长度之和为 512。
RoBERTa 去除了 NSP,而是每次输入连续的多个句子,直到最大长度 512(可以跨文章)。这种训练方式叫做(FULL-SENTENCES),而原来的 Bert 每次只输入两个句子。
这样做的目的是:实验发现,消除 NSP 损失在下游任务的性能上能够与原始 BERT 持平或略有提高。这可能是由于 Bert 一单句子为单位输入,模型无法学习到词之间的远程依赖关系,而 RoBERTa 输入为连续的多个句子,模型更能俘获更长的依赖关系,这对长序列的下游任务比较友好。
SpanBERT(2019)
SpanBERT 出自 Facebook,在 BERT 的基础上,针对预测 spans of text 的任务,在预训练阶段做了特定的优化。
SpanBERT 所做的预训练调整主要是以下三点:
- 使用一种 span masking 来代替 BERT 的 mask;
- 加入另外一个新的训练目标:Span Boundary Objective (SBO)
- 使用单个句子而非一对句子,并且不使用 Next Sentence Prediction 任务。
span masking 每次都会通过采样文本(X)的一个片段(span),得到一个子集(Y∈X)。在每次采样过程中,首先,随机选取一个片段长度,然后再随机选取一个起点,这样就可以到一个 span 进行 mask 了;span 的长度会进行截断,即不超过 10;另外,span 的长度是指 word 的长度,而不是 subword,这也意味着采样的单位是 word 而非 subword,并且随取的起点必须是一个 word 的开头。
ERNIE(2019.3)
百度文心 1.0 认为 BERT 模型没有考虑到句子里的先验知识。 比如这个句子:哈尔滨是黑龙江的省会,国际冰雪文化名城。
- 模型很容易通过「哈」与「滨」预测到「尔」这个单词,仅仅需要通过局部共现关系,完全不需要上下文的帮助;
- 而无法直接通过黑龙江与哈尔滨的关系来预测「哈尔滨」。
因此,如果模型能够学到这些先验知识,那模型应该可以获得更可靠的语言表征。ERNIE 的改进主要体现在 mask 的方式上,将中文单字的 mask 改为 连续的实体词和短语 mask。
另外,ERNIE 在 Bert 的基础上,预训练的语料引入了多源数据知识,包括了中文维基百科,百度百科,百度新闻和百度贴吧(可用于对话训练),数量分别为 21M、51M、47M、54M。
并且,在 中文使用了繁体字到简体字的转换,英文上的大写到小写的转换,最终的词表大小为 17964。
之后清华也出了一个版本的 ERNIE,它将 知识图谱 融入到语言模型的预训练之中,使用 TransE 来获取知识图谱中的实体向量,然后将实体向量嵌入到 BERT 中。
比如,不知道《Blowin’ in the Wind》是歌曲、《Chronicles: Volume One》是书籍,就很难准确认出鲍勃 ・ 迪伦的词曲作者和作家这两个身份。ERNIE 为了解决这个问题,同时利用大规模文本语料和知识图谱来训练。
T5(2019.10)
T5(Transfer Text-to-Text Transformer)是谷歌发布的模型(Encoder-Decoder),该模型将所有自然语言问题都转化成 文本到文本 的形式,并用一个统一的模型解决。为了得到大一统的高质量预训练语言模型,T5 不可避免地走上了“大力出奇迹”的道路,使用了更大的模型和更多的数据,但是模型和数据规模只是 T5 通往最强模型的手段之一,T5 最核心的理念是:使用前缀任务声明及文本答案生成,统一所有自然语言处理任务的输入和输出。
在此之前的几乎所有预训练语言模型,在下游任务微调过程中都需要添加非线性层,将模型的输出转化为任务指定的输出格式。T5 不需要对模型做任何改动,只需要提供下游任务的微调数据;不需要添加任何非线性层,唯一需要做的就是在输入数据前加上任务声明前缀,下图所示为 T5 的输入格式和输出格式。绿色部分表示翻译任务,红色和黄色部分分别表示 CoLA 任务和 STS-B 任务,蓝色部分表示摘要生成任务,左侧的框表示 T5 的输入样例,右侧的框则是对应的输出结果。
数据集:C4
从 Common Crawl(一个公开的网页存档数据集,每个月大概抓取 20TB 文本数据) 里清出了 750 GB 的训练数据,然后取名为 ” Colossal Clean Crawled Corpus (超大型干净爬取数据)“,简称 C4(
大概清理过程如下:
- 只保留结尾是正常符号的行;
- 删除所有内容少于 5 句且句子长度小于 3 个词的页面数据;
- 删除任何包含不好的词的页面,具体词表参考 List-of-Dirty-Naughty-Obscene-and-Otherwise-Bad-Words 库(笔者按:宝藏库,到里面转了一圈,看了看熟悉的几门语言,瞬间涨了不少新姿势 );
- 包含 Javascript 词的行全去掉;
- 包含编程语言中常用大括号的页面;
- 任何包含”lorem ipsum(用于排版测试)“的页面;
- 连续三句话重复出现情况,保留一个。
- 利用语种检测工具 langdetect,只保留语种检测为英语,且置信度超过 0.99 的数据(训练针对英语任务的模型)。
GPT(2018 - )
GPT-1(2018.6)
2017 年,Google 推出了 Transformer 模型,这一架构因其在性能上的显著优势迅速吸引了 OpenAI 团队的注意。OpenAI 随后将研发重点转移到 Transformer 架构,并在 2018 年发布了 GPT-1 模型。GPT-1 是基于生成式预训练(Generative Pre-Training)的 Transformer 架构,采用了 仅有解码器(Decoder-Only) 的 Transformer 模型,专注于预测下一个词元。
然而,GPT-1 由于规模与 BERT-Base 相当,且在公开评测数据集上的性能未能达到最优,因此没有在学术界引起足够的关注。
特点:
- 单向自回归训练:GPT 使用因果语言建模目标进行训练,在这种训练方式中,模型仅根据前面的词元预测下一个词元。这使得它特别适合文本完成、摘要和对话生成等生成任务。
- 下游任务微调:GPT 的关键贡献之一是它能够 针对特定的下游任务进行微调,而无需特定任务的架构。通过简单地添加一个分类头或修改输入格式,GPT 可以适应情感分析、机器翻译和问答等任务。
GPT-2(2019.2)
GPT-2 继承了 GPT-1 的架构,并将参数规模扩大到 15 亿,使用大规模网页数据集 WebText 进行预训练,数据为从 Reddit 中爬取出来的优质文档,共 800 万个文档,40GB。
与 GPT-1 相比,GPT-2 的创新之处在于尝试通过 增加模型参数规模 来提升性能,同时 去除针对特定任务的微调环节,探索使用无监督预训练的语言模型 来解决多种下游任务,而无需显式地使用标注数据进行微调(即 zero-shot)。
GPT-3(2020.5)
OpenAI 在 2020 年推出了具有里程碑意义的 GPT-3 模型,其模型参数规模扩展到了 175B(1750 亿),相较于 GPT-2 提升了 100 余倍,标志着对模型扩展的极限尝试。GPT-3 考虑 few-shot,用少量文本提升有效性。
GPT-3 首次提出了“上下文学习”概念,允许大语言模型通过少样本学习解决各种任务,消除了对新任务进行微调的需求。
缺点:
- 生成长文本依旧困难,比如写小说,可能还是会重复;
- 语言模型只能看到前面的信息;
- 预训练语言模型的通病,在训练时,语料中所有的词都被同等看待,对于一些虚词或无意义的词同样需要花费很多计算量去学习,无法区分学习重点;
- 只有文本信息,缺乏多模态;
- 样本有效性不够;
- 模型是从头开始学习到了知识,还是只是记住了一些相似任务,这一点不明确;
- 可解释性弱,模型是怎么决策的,其中哪些权重起到决定作用?
- 负面影响:可能会生成假新闻;可能有一定的性别、地区及种族歧视
训练后对齐:弥合人工智能与人类价值观的差距(2021 - 2022 年)
拥有 1750 亿参数的大语言模型 GPT-3 能够生成几乎与人类写作难以区分的文本,这引发了人们对人工智能生成内容的真实性和可信度的严重担忧。一个主要问题是 “幻觉”,即大语言模型生成的内容在事实上是错误的、无意义的,或者与输入提示相矛盾,给人一种 “一本正经胡说八道” 的印象。为了解决这些挑战,2021 年和 2022 年研究人员专注于提高大语言模型与人类意图的一致性并减少幻觉,从而开发出了监督微调(SFT)和人类反馈强化学习(RLHF)等技术。
Codex(2021.7 - )
为了解决 GPT-3 在编程和数学问题求解上的不足,OpenAI 于 2021 年推出了 Codex 模型,该模型在 GitHub 代码数据上进行了微调,显著提升了解决复杂问题的能力。此外,通过开发一种对比方法训练文本和代码嵌入,进一步改善了相关任务的性能。
2025 年 5 月 16 日,OpenAI 发布了 Codex 的研究预览版:这是一款基于云的软件工程智能体,可以并行处理多项任务。Codex 可以执行各种任务,如编写功能、回答有关代码库的问题、修复错误和提出拉取请求以供审核;每项任务都在自己的云沙箱环境中运行,并预装了您的存储库。
Codex 由针对软件工程优化的 OpenAI o3 版本 codex-1 提供支持。它通过在各种环境下对真实世界中的编码任务进行强化学习训练,生成的代码能够密切反映人类的风格和公关偏好,精确遵从指令,并能反复运行测试,直到获得通过的结果。
GPT3.5 (Instruct GPT)(2022.3)
InstructGPT 的技术方案原文分为了三个步骤:有监督微调,奖励模型训练,强化学习训练;实际上可以把它拆分成两种技术方案,一个是有监督微调(SFT),一个是基于人类反馈的强化学习(RLHF)。
监督微调(SFT)
增强 GPT-3 对齐能力的第一步是监督微调(SFT),它是 RLHF 框架的一个基础组件。SFT 类似于指令调整,涉及在高质量的输入-输出对(即示例)上训练模型,以教会它如何遵循指令并生成期望的输出。
这些示例经过精心策划,以反映预期的行为和结果,确保模型学习生成准确且符合上下文的响应。
然而,仅靠 SFT 存在局限性:
- 可扩展性:收集人类示例既费力又耗时,特别是对于复杂或小众的任务。
- 性能:简单地模仿人类行为并不能保证模型会超越人类表现,或者在未见过的任务上具有良好的泛化能力。
为了克服这些挑战,需要一种更具可扩展性和效率的方法,这为下一步——人类反馈强化学习(RLHF)铺平了道路。
人类反馈强化学习(RLHF)
InstructGPT 采用基于人类反馈的强化学习(RLHF)来不断微调预训练语言模型(LLM),旨在让模型能够更好地理解人类的命令和指令含义,如生成小作文、回答知识问题和进行头脑风暴等。该方法不仅让模型学会判断哪些答案是优质的,而且可以确保生成的答案富含信息、内容丰富、对用户有帮助、无害和不包含歧视信息等多种标准。
与需要人类编写完整输出的 SFT 不同,RLHF 涉及根据质量对模型生成的多个输出进行排名。
RLHF 过程包括两个关键阶段:
- 训练奖励模型:人类对模型生成的多个输出进行排名,创建一个偏好数据集。这些数据用于训练一个奖励模型,该模型学习根据人类反馈评估输出的质量。
- 使用强化学习微调大语言模型:奖励模型使用近端策略优化(PPO)(一种强化学习算法)来指导大语言模型的微调。通过迭代更新,模型学习生成更符合人类偏好和期望的输出。
ChatGPT:推进对话式人工智能(2022 年)
ChatGPT(2022.11)
ChatGPT 是基于 GPT3.5 的基础模型框架,核心变化在于通过真实的调用数据以及人类反馈的强化学习进行训练。ChatGPT3.5 主要用于自然语言处理、机器翻译等任务,而 ChatGPT3.5-Turbo 拥有更强大的强度,可用于更复杂的语言分析,比如情感分析、语法结构分析。所以,ChatGPT 和 GPT3.5 是同一系列的产品,但 ChatGPT 是在 GPT3.5 的基础上进行了改进和优化。
ChatGPT 的主要改进包括:
- 以对话为重点的微调:ChatGPT 在 大量对话数据集 上进行训练,擅长在对话中保持上下文和连贯性,实现更引人入胜且更像人类的交互。
- RLHF:通过整合 RLHF,ChatGPT 学习生成不仅有用,而且诚实和无害的响应。人类训练员根据质量对响应进行排名,使模型能够迭代地提高其性能。
多模态模型:连接文本、图像及更多(2023 - 2024 年)
在 2023 年至 2024 年期间,像 GPT-4V 和 GPT-4o 这样的多模态大语言模型(MLLMs)通过将文本、图像、音频和视频集成到统一系统中,重新定义了人工智能。这些模型扩展了传统语言模型的能力,实现了更丰富的交互和更复杂的问题解决。
GPT-4(2023.3)
它是 GPT 系列模型的重要升级,首次将输入模态 从单一文本扩展到图文双模态。GPT-4 在解决复杂任务方面的能力显著强于 GPT-3.5,在面向人类的考试中取得了优异成绩。
微软的研究团队对 GPT-4 进行了大规模测试,认为其展现出通用人工智能的潜力。GPT-4 还进行了六个月的迭代对齐,增强了对恶意或挑衅性查询的安全响应。OpenAI 在技术报告中强调了 GPT-4 的安全开发重要性,并应用了干预策略来缓解潜在问题,如幻觉、隐私泄露等。
GPT-4 引入了 “红队攻击” 机制减少有害内容生成,并建立了深度学习训练基础架构,引入了可预测扩展的训练机制。更重要的是,GPT-4 搭建了完备的深度学习训练基础架构,进一步引入了可预测扩展的训练机制,可以在模型训练过程中通过较 少计算开销来准确预测模型的最终性能。
GPT-4V(2023.9)
OpenAI 对 GPT-4 系列模型进行了重要技术升级,发布了 GPT-4V(2023 年 9 月)和 GPT-4 Turbo(2023 年 11 月),这些升级显著增强了模型的视觉能力和安全性。GPT-4V 专注于视觉输入的安全部署,广泛讨论了相关风险评估和缓解策略,而 GPT-4 Turbo 则在多个方面进行了优化,包括提升模型整体能力、扩展知识来源、支持更长上下文窗口、优化性能和价格,并引入了新功能。
GPT-4o(2024.5)
GPT-4o 的“o”代表“omni”,源自拉丁语“omnis”。在英语中“omni”常被用作词根,用来表示“全部”或“所有”的概念。GPT-4o 是一个多模态大模型,支持文本、音频和图像的任意组合输入,并能生成文本、音频和图像的任意组合输出。与现有模型相比,它在视觉和音频理解方面尤其出色。
GPT-4o 可以最短在 232 毫秒内响应音频输入,平均为 320 毫秒,这与人类在对话中的响应时间相似。此外,GPT-4o 还可以调整说话的语气,从夸张戏剧到冰冷机械,以适应不同的交流场景。GPT-4o 还具备唱歌的功能,增添了更多的趣味性和娱乐性。
GPT-4o 不仅在传统的文本能力上与 GPT-4 Turbo 的性能相当,还在 API 方面更快速,价格还更便宜 50%。与 GPT-4 Turbo 相比,GPT-4o 速度提高了 2 倍,价格减半,限制速率提高了 5 倍。GPT-4o 目前的上下文窗口为 128k,模型知识截止日期为 2023 年 10 月。
推理模型:从系统 1 思维到系统 2 思维的转变(2024 年)
2024 年,人工智能的发展开始强调提升推理能力,从简单的模式识别向更具逻辑性和结构化的思维过程迈进。这一转变受到认知心理学双过程理论的影响,该理论将思维分为 系统 1(快速、直觉性) 和 系统 2(慢速、分析性)。此前的 GPT-3 和 GPT-4 等模型虽然擅长像文本生成这样的系统 1 任务,但在深度推理和问题解决方面有所欠缺。
OpenAI-o1(2024.9)
OpenAI 在 2024 年 9 月发布的 o1 系列模型旨在提升人工智能的推理能力,尤其在代码生成和调试等复杂任务中表现出色。o1 模型的一个关键特性是通过思维链(Chain of Thought,CoT)过程来增强推理能力,它能将复杂问题分解成更小、更易处理的步骤。
- 强化学习训练:o1 模型的核心在于其采用了 强化学习的方法进行训练。这种方法使模型能够在不断试错的过程中优化其决策策略,从而提升其在复杂推理任务中的表现。
- 内部思维链生成:不同于传统的语言模型,o1 在回答之前会生成一个内部的思维链。这个思路链是一个逐步推导、逐步分解问题的过程,它模拟了人类思考的方式,使得模型能够更深入地理解问题并给出更准确的答案。
- 复杂推理能力:通过强化学习和内部思维链的生成,o1 在复杂推理能力上实现了显著提升。它能够在数学、编码、科学等多个领域表现出色,解决一些传统模型难以应对的复杂问题。
GPT-4.5(2025.2.27)
在扩大训练前和训练后规模方面,GPT‑4.5 又向前迈出了一步。通过扩大无监督学习的规模,GPT‑4.5 无需推理即可提高识别模式、建立联系和生成创造性见解的能力。
早期测试表明,用户与 GPT‑4.5 互动的感觉更自然。凭借更广泛的知识库、更强的用户意图执行能力和更高的“情商”,它在写作润色、编程和解决实际问题等任务中大显身手。另外,它还有望减少幻觉。
GPT-5(2025.8)
OpenAI 的 CEO 萨姆·奥尔特曼最近确认,GPT-5 将是首个整合 o 系列技术的模型,这意味着它将同时具备:
- 博士生级专业能力:在医疗诊断、法律分析等垂直领域,其表现堪比人类专家(比如用 3 秒生成带参考文献的论文修改建议);
- 闪电级响应速度:新推出的 o3-mini 技术让推理速度提升 300%,普通用户也能享受「零延迟」交互;
- 全感官多模态:不仅能处理文本,还能理解图像、音频甚至视频(比如上传一张手绘草图,直接生成产品设计文档+3D 建模代码)。
参数爆炸:从 GPT-4 的 2 万亿 参数到 GPT-5 的 52 万亿,相当于人脑神经元连接数的 1/10。这种量变将引发质变——比如你问“如何设计一款年轻人喜欢的奶茶店”,它能结合本地消费数据、社交媒体趋势、供应链成本,输出带财务模型的创业方案。
开源和开放权重模型(2023 - 2025 年)
在 2023 年至 2024 年期间,开源和开放权重的人工智能模型势头渐起,使先进的人工智能技术得以更广泛地应用。
开放权重的大语言模型提供了公开可访问的模型权重,且限制极少。这使得用户可以进行微调与适配,但模型的架构和训练数据仍是封闭的。它们适合快速部署。例如,Meta AI 的 LLaMA 系列以及 Mistral AI 的 Mistral 7B/Mixtral 8x7B。
LLaMA(2023 - )
LLaMA(Large Language Model Meta AI)是 Meta AI 发布的一系列基础语言模型(Decoder-Only),参数规模从 7B 到 65B 不等。不同于其他巨型模型如 GPT-3(175B)和 PaLM(540B),LLaMA 的目标是:在更小模型尺寸下,达到甚至超越主流模型的性能,同时具备开放、可复现的研究价值。
LLaMA-1(2023.2)
Llama-1 是 Meta 在 2023 年 2 月发布的大语言模型,是当时性能非常出色的开源模型之一,有 7B、13B、30B 和 65B 四个参数量版本。Llama-1 各个参数量版本都在 超过 1T token 的语料 上进行了预训训练,其中,最大的 65B 参数的模型在 2,048 张 A100 80G GPU 上训练了近 21 天,并在大多数基准测试中超越了具有 175B 参数的 GPT-3。
由于模型开源且性能优异,Llama 迅速成为了开源社区中最受欢迎的大模型之一,以 Llama 为核心的生态圈也由此崛起。
架构优化
- 预归一化(Pre-Norm):使用 RMSNorm 提升训练稳定性;
- SwiGLU 激活函数:替代 ReLU,提高表达能力;
- RoPE 位置编码:用旋转位置编码代替绝对位置编码,保留序列信息;
- 高效注意力机制:使用 xformers 中优化的因果注意力,降低内存消耗;
- 梯度检查点和并行训练:节省显存开销,使训练 65B 成为可能。
数据集
与 GPT-3 等模型不同,LLaMA 训练 完全基于公开数据集,不依赖私有或不可获取的数据源,训练总 token 数最高达到 1.4 万亿。
数据集 | 采样比例 | 轮数(Epochs) | 数据大小 |
---|---|---|---|
CommonCrawl | 67.0% | 1.10 | 3.3 TB |
C4 | 15.0% | 1.06 | 783 GB |
Github | 4.5% | 0.64 | 328 GB |
Wikipedia | 4.5% | 2.45 | 83 GB |
Books | 4.5% | 2.23 | 85 GB |
ArXiv | 2.5% | 1.06 | 92 GB |
StackExchange | 2.0% | 1.03 | 78 GB |
LLaMA 是如何做到“小模型高性能”的?
LLaMA 遵循了 Chinchilla scaling laws 的原则,即:与其一味增大模型参数,不如在固定算力预算下 训练更多 token 数。例如,LLaMA-13B 在训练中使用了高达 1T token,使得它能以远小于 GPT-3 的参数量,实现更好的性能表现。这种 训练数据优先于参数堆叠 的策略,是其成功的关键。
不足与挑战
- 在某些任务(如 MMLU)上稍逊于 Chinchilla 和 PaLM,可能与预训练书籍数据量较小有关;
- 存在一定的 性别、宗教等偏见问题,生成毒性内容的概率随模型增大而上升;
- 仍有生成虚假信息的可能性(TruthfulQA 上最高仅 57% 真实性)。
- 因为开源协议问题,Llama-1 不可免费商用。
LLaMA-2(2023.7)
时隔 5 个月,Meta 在 2023 年 7 月发布了免费可商用版本 Llama-2,有 7B、13B、34B 和 70B 四个参数量版本,除了 34B 模型外,其他均已开源。
相比于 Llama-1,Llama-2 将预训练的语料扩充到了 2T token,同时将模型的上下文长度从 2,048 翻倍到了 4,096,并引入了分组查询注意力机制(grouped-query attention, GQA)等技术。
有了更强大的基座模型 Llama-2,Meta 通过进一步的有监督微调(Supervised Fine-Tuning, SFT)、基于人类反馈的强化学习(Reinforcement Learning with Human Feedback, RLHF)等技术对模型进行迭代优化,并发布了面向对话应用的微调系列模型 Llama-2 Chat。
随后,得益于 Llama-2 的优异性能,Meta 在 2023 年 8 月发布了专注于代码生成的 Code-Llama,共有 7B、13B、34B 和 70B 四个参数量版本。
LLaMA-3(2024.4)
2024 年 4 月,Meta 正式发布了开源大模型 Llama 3,包括 8B 和 70B 两个参数量版本。相比 Llama-2,Llama-3 支持 8K 长文本,并采用了一个编码效率更高的 tokenizer,词表大小为 128K。在预训练数据方面,Llama-3 使用了超过 15T token 的语料。
LLaMA-4(2025.4)
LLaMA 4 系列的首批模型包括 LLaMA 4 Scout、LLaMA 4 Maverick、LLaMA 4 Behemoth。
LLaMA 4 Scout 是一款拥有 170 亿(17B) 活跃参数、16 个专家模块的模型,在同类模型中是全球最佳的多模态模型,比所有前代 Llama 模型都更强大,同时可在单张 NVIDIA H100 GPU 上运行。此外,LLaMA 4 Scout 提供业界领先的 10M 上下文窗口,在广泛报道的各种基准测试中,其表现优于 Gemma 3、Gemini 2.0 Flash-Lite 和 Mistral 3.1。
LLaMA 4 Maverick 是一款拥有 170 亿(17B) 活动参数、128 个专家的模型,是同类中最出色的多模态模型。在广泛报道的一系列基准测试中,它击败了 GPT-4o 和 Gemini 2.0 Flash,同时在推理和编码方面取得了与全新的 DeepSeek v3 相当的成绩,而其活动参数不到后者的一半。
LLaMA 4 Behemoth 是一款拥有 2880 亿(288B) 活跃参数的模型,配备 16 个专家模块,是 Meta 迄今功能最强大的模型,也是全球最智能的大语言模型之一。在多个 STEM 基准测试中,LLaMA 4 Behemoth 的表现优于 GPT-4.5、Claude Sonnet 3.7 和 Gemini 2.0 Pro。LLaMA 4 Behemoth 仍在训练中,前面两个模型则是由此蒸馏而来。
LLaMA 4 模型是首批采用混合专家(MoE, mixture of experts)架构的模型。在 MoE 模型中,单个词元仅激活总参数的一小部分。MoE 架构在训练和推理方面计算效率更高,并且在给定固定的训练浮点运算次数预算的情况下,与密集模型相比,能提供更高的质量。
DeepSeek(2024 - )
DeepSeek LLM(2024.1.5)
主要内容:
- 基于 Transformer 架构,采用 分组查询注意力(GQA)优化推理成本。
- 支持多步学习率调度器,提升训练效率。
- 在预训练和对齐(监督微调与 DPO)方面进行了创新。
数据集规模:DeepSeek LLM 使用了一个包含 2 万亿 Token 的双语数据集进行预训练,比 LLaMA 的数据集更大。
DeepSeek MoE(2024.1.11)
它采用创新的 MoE 架构,主要涉及两个策略:细粒度专家细分和共享专家隔离。 它使用 2T 英文和中文 Token 从头开始训练,并表现出与 DeekSeek 7B 和 LLaMA2 7B 相当的性能,仅用了大约 40% 的计算量。
也表明未来 DeepSeek 大模型的方向转向 MoE 架构。
DeepSeek-V2(2024.5)
DeepSeek-V2 使用了 混合专家(MoE)模型, 它包含 236B 总参数,其中每个 token 激活 21B,支持 128K token 的上下文长度。
DeepSeek-V2 采用了包括多头潜在注意力 (MLA) 和 DeepSeekMoE 在内的创新架构。 MLA 通过将键值 (KV) 缓存显著压缩为潜在向量来保证高效推理, 而 DeepSeekMoE 通过稀疏计算以经济的成本训练强大的模型。
与 DeepSeek 67B (DeepSeek-V1) 相比, DeepSeek-V2 实现了显著增强的性能, 同时节省了 42.5% 的训练成本、 减少了 93.3% 的 KV 缓存、 并将最大生成 吞吐量提升至 5.76 倍。
DeepSeek-V3(2024.12)
DeepSeek-V3 开创了无辅助损失的负载均衡策略,并设定了多 token 预测训练目标以增强性能。该模型引入了三种关键架构:
- 多头潜在注意力(Multi-Head Latent Attention,MLA):通过压缩注意力的键和值来减少内存使用,同时保持性能,并利用旋转位置嵌入(Rotary Positional Embedding,RoPE)增强位置信息。
- DeepSeek 混合专家(DeepSeek Mixture of Experts,DeepSeekMoE):在前馈网络(Feed-Forward Networks,FFNs)中采用共享专家和路由专家相结合的方式,提高效率并平衡专家的利用率。
- 多令牌预测(Multi-Token Prediction):增强了模型生成连贯且与上下文相关输出的能力,尤其适用于需要复杂序列生成的任务。
Deepseek-MoE | Deepseek-v2 | Deepseek-v3 | |
---|---|---|---|
总参数 | 1.89B | 236B | 671B |
激活参数 | 0.24B | 21B | 37B |
专家数量 | 1+7 | 2+6 | 1+8 |
激活专家 | 1+63 | 2+160 | 1+256 |
DeepSeek-R1(2025.1)
DeepSeek-R1 的 **R ** 表示 Reasoning
推理的意思,也就是其深度思考的能力。基于 DeepSeek-V3-Base,DeepSeek-R1 在后训练阶段大规模使用了 强化学习 技术,在仅有极少标注数据的情况下,极大提升了模型推理能力,支持思维链(CoT)和过程透明化输出。在数学、代码、自然语言推理等任务上,性能比肩 OpenAI o1 正式版。
DeepSeek-R1-Zero 基于 DeepSeek-V3 构建,通过强化学习(RL)提升了推理能力。它完全省去了监督微调阶段(SFT),直接从一个名为 DeepSeek-V3-Base 的预训练模型开始训练。它采用了一种基于规则的强化学习方法,即组相对策略优化(Group Relative Policy Optimization,GRPO),该方法根据预定义规则计算奖励,使训练过程更简单、更具扩展性。
DeepSeek-R1-Zero 展示了自我验证、反射和生成长 CoT 等功能, 标志着研究界的一个重要里程碑。 值得注意的是,这是第一项公开研究,验证了 LLM 的推理能力可以纯粹通过 RL 来激励, 而无需 SFT。这一突破为该领域的未来发展铺平了道路。
为了解决 DeepSeek-R1-Zero 存在的 可读性低和语言混杂 等问题,DeepSeek-R1 引入了一组有限的高质量冷启动数据,并进行了额外的强化学习训练。该模型经过多个阶段的微调与强化学习,包括拒绝采样和第二轮强化学习训练,以此提升其通用能力,并使其更符合人类偏好。
常见大模型对比
参数对比
模型名称 | 模型尺寸 | 模型架构 | 输入模态 | 输出模态 | 发布时间 | 发布厂商 |
---|---|---|---|---|---|---|
OpenAI o3/o4-mini | 未公布 | 未公布 | 文本、图像、音频 | 文本、图像、音频 | 2025.4.16 | OpenAI |
Claude 4 | 未公布 | 未公布 | 文本、图像 | 文本 | 2025.5.23 | Anthropic |
Gemini 2.5 | 参数:未公布 输入/输出 Token:1M/64k |
稀疏混合专家(Sparse MoE) | 文本、图像、音频、视频、PDF | 文本 | 2025.3.26 | |
Llama 4 | Behemoth:288B 激活参数、16 个专家、2T 总参数 | 混合专家(MoE) | 文本、图像、视频 | 文本 | 2025.4.5 | Meta AI |
ERNIE 4.5(文心一言) | 最大总/激活参数:424B/47B 最大总/激活专家:128/16 |
混合专家(MoE) | 文本、图像、视频 | 文本 | 2025.6.30 | 百度 |
Qwen3(通义千问) | 最大总/激活参数:235B/22B 最大总/激活专家:128/8 |
混合专家(MoE) | Qwen3(思考模式)、QwQ 模型仅支持文本输入,不支持输入图片或文档。QVQ 模型 支持对图片进行深度思考,Qwen- Long 模型支持文档输入。 | 文本 | 2025.4.29 | 阿里巴巴 |
Spark-X1(讯飞星火) | 70B | Dense | 文本、图像、音频 | 文本、图像、音频 | 2025.4.21 | 科大讯飞 |
Kimi K2 | 最大总/激活参数:1T/32B 最大总专家:384 |
混合专家(MoE) | 文本 | 文本 | 2025.7.11 | 月之暗面 |
Hunyuan-A13B(混元) | 最大总/激活参数:80B/13B | 混合专家(MoE) | 文本 | 文本 | 2025.6.27 | 腾讯 |
DeepSeek-R1 | 最大总/激活参数:671B/37B 0528 版最大总参数:685B |
混合专家(MoE) | 文本 | 文本 | 2025.5.28 | 深度求索 |
性能对比
通用任务
指标 | DeepSeek-R1-0528 | Hunyuan-A13B | Kimi K2 | Spark-X1-0420 | Qwen3-235B-A22B | ERNIE-4.5-300B-A47B | Llama 4 Behemoth | Gemini 2.5 Pro | Claude Opus 4 | OpenAI o3 |
---|---|---|---|---|---|---|---|---|---|---|
MMLU | - | 88.17 | 89.5 | - | 87.81 | 86.5 | - | - | - | - |
MMLU-Redux | 93.4 | 87.67 | 92.7 | - | 87.40 | - | - | - | - | - |
MMLU-Pro | 85.0 | 67.23 | 81.1 | 82.7 | 68.18 | 78.4 | 82.2 | - | - | - |
SimpleQA | 27.8 | - | 31.0 | - | - | 45.9 | - | 54.0 | - | - |
代码能力
指标 | DeepSeek-R1-0528 | Hunyuan-A13B | Kimi K2 | Spark-X1-0420 | Qwen3-235B-A22B | ERNIE-4.5-300B-A47B | Llama 4 Behemoth | Gemini 2.5 Pro | Claude Opus 4 | OpenAI o3 |
---|---|---|---|---|---|---|---|---|---|---|
LiveCodeBench | 73.3 (2408-2505) | 63.9 (Hunyuan-A13B-Instruct) | 53.7 (2408-2505) | - | 70.7 (2410-2502) | 38.8 | 49.4 (2410-2502) | 69.0 (2501-2505) | - | - |
Codeforces | 1930 | - | - | - | 2056 | - | - | - | - | 2706 (with terminal) |
SWE Verified | 57.6 | - | 65.8 (Agentic Coding) (Single Attempt) | - | - | - | - | 59.6 (Single Attempt) | 72.5 (Agentic Coding) | 69.1 |
MultiPL-E | - | 69.33 | 85.7 | - | 65.94 | - | - | - | - | - |
数学能力
指标 | DeepSeek-R1-0528 | Hunyuan-A13B-Instruct | Kimi K2 | Spark-X1-0420 | Qwen3-235B-A22B | ERNIE-4.5-300B-A47B | Llama 4 Behemoth | Gemini 2.5 Pro | Claude Opus 4 | OpenAI o3 |
---|---|---|---|---|---|---|---|---|---|---|
AIME 2024 | 91.4 | 87.3 | 69.6 | 76.7 | 85.7 | 54.8 | - | - | - | 91.6 (no tools) |
AIME 2025 | 87.5 | 76.8 | 49.5 | 73.3 | 81.5 | 35.1 | - | 88.0 | 75.5 | 88.9 (no tools) |
HMMT 2025 | 79.4 | - | 38.8 | - | - | - | - | - | - | - |
CNMO 2024 | 86.9 | - | 74.3 | - | - | - | - | - | - | - |
MATH-500 | - | 94.3 | 97.4 | 97.7 | 71.84 | 96.4 | 95.0 | - | - | - |
工具调用能力
指标 | DeepSeek-R1-0528 | Hunyuan-A13B | Kimi K2 | Spark-X1-0420 | Qwen3-235B-A22B | ERNIE-4.5-300B-A47B | Llama 4 Behemoth | Gemini 2.5 Pro | Claude Opus 4 | OpenAI o3-high |
---|---|---|---|---|---|---|---|---|---|---|
Tau-Bench | 53.5(航空)/ 63.9(零售) | 54.7 | 56.5(tau2 航空)/ 70.7(tau2 零售) | - | - | - | - | - | 59.6(航空)/ 81.4(零售) | 52.0(航空)/ 73.9(零售) |
多语种、视觉推理能力
指标 | DeepSeek-R1-0528 | Hunyuan-A13B | Kimi K2 | Spark-X1-0420 | Qwen3-235B-A22B | ERNIE-4.5-VL-424B-A47B | Llama 4 Behemoth | Gemini 2.5 Pro | Claude Opus 4 | OpenAI o3 |
---|---|---|---|---|---|---|---|---|---|---|
MMMLU | - | - | - | - | - | - | 85.8 | 89.2 (Lite) | 88.8 | 88.8 |
MMMU | - | - | - | - | - | 70.0 | 76.1 | 82.0 | 76.5 | 82.9 |
大模型架构
在仅仅通过扩大模型尺寸可能无法直接解锁这些更深层次的认知能力的背景下,Dense 模型(Dense Models)和混合专家模型(Mixture of Experts, MoE)作为两种关键的架构范式应运而生。
Dense 模型以其全连接的特性,所有参数都参与每个输入 的处理,构成了许多早期以及部分现代大型语言模型的基础 。
与之相对,MoE 模型则提供了一种不同的思路,它采用稀疏激活的方式,将网络划分为多个专门的子网络(专家),并根据输入的不同,动态地选择激活其中一小部分专家进行处理。
Dense 模型
Dense(密集连接)模型采用全激活计算模式,所有参数在每次前向传播中都参与计算。
以 GPT-4 为代表的 Dense 架构,其核心特点包括:
- 结构简洁:模型内部连接密集,计算流程清晰直观
- 训练稳定:全激活模式下梯度传播路径确定,优化过程相对稳定
- 部署成熟:硬件加速技术(如 CUDA、TPU)对 Dense 矩阵计算支持完善
- 推理延迟低:单一计算路径使延迟较为稳定,适合实时交互场景
Dense 模型的优势在于其确定性与简洁性,这使得它在资源受限的环境下表现出色,例如 边缘设备和移动端应用。
在推理时,对于每个输入数据点,网络中的所有参数(包括连接权重和神经元偏置项)都会被激活并参与计算。一个典型的 Dense 层中神经元的输出计算过程是:首先对所有输入进行加权求和,然后加上偏置项,最后将结果通过非线性激活函数转换。
MoE 模型
MoE,全称 Mixture of Experts,混合专家模型,是一种基于 “术业有专攻” 设计思路的大模型架构。与作为 “通才” 的 Dense 模型相对,MoE 模型将任务分门别类交给多个 “专家” 解决。 一个通才能处理多种任务,但一群专家能更高效、更专业地解决多个问题。
MoE 模型的基本特征是稀疏激活的使用。对任何输入,只有模型总参数的一小部分(少数几个 “专家” 子网络)会被激活并参与计算,与 Dense 模型形成鲜明对比。实现这种稀疏激活的关键是动态路由。MoE 架构 包含一个门控网络(路由器或开关),它基于输入特征,动态确定应由哪些专家处理每个输入标记。常见路由策略有:
- “top-k” 路由:门控网络选择与输入最相关的 k 个专家
- “专家选择” 路由:专家自身选择最适合处理的标记
与 Dense 模型相比,MoE 训练过程更复杂,需要协调门控网络学习和多个专家学习,确保路由机制正确分配输入,每个专家适当专业化而不过度专注或使用不足。由于涉及多个专家网络,MoE 模型通常比同等活动参数量的 Dense 模型有更大总体尺寸,导致训练和推理需要大量内存,对资源受限环境构成部署挑战。
特性 | Dense 模型 | MoE 模型 |
---|---|---|
参数激活方式 | 所有参数全激活 | 只有部分专家被激活 |
计算资源需求 | 计算成本高,资源消耗大 | 计算成本低,资源利用率高 |
训练稳定性 | 训练过程相对稳定 | 训练过程可能更复杂,存在路由崩溃风险 |
应用场景 | 小规模高精度任务、资源受限环境 | 大规模预训练、多任务学习、多模态任务 |
推理时延 | 需要加载所有参数,时延较高 | 仅加载部分激活专家,时延较低 |
推理模型 vs 普通大模型
与普通大模型相比,推理大模型倾向于在回答给定问题之前将问题分解为更小的步骤(通常称为推理步骤或思维过程)。
训练方式差异
传统非推理模型通常采用大规模通用语料进行预训练,优化目标是语言建模(预测下一个词)或类似目标,在此过程中模型并未被显式要求展示中间推理步骤。这意味着模型主要学习到语言模式和知识,但缺乏针对性解决复杂推理问题的监督信号。
相反,推理模型为了具备“思考”能力,往往需要在训练中引入特殊策略。例如,研究者可以 构造含有中间推理步骤标注的数据集,对模型进行 监督微调,使其学会先输出推理过程再给答案。
以数学问题求解为例,Minerva 模型在 PaLM 基础上进一步训练了一个 118GB 的大型数学和科学语料库,其中包含大量带有 LaTeX 公式推导过程的文本。通过在这种定制语料上继续训练,模型掌握了数学推理所需的步骤推导技能 。因此,推理模型的训练数据更注重 过程监督(过程导向的标注),而不仅仅是输入到输出的结果对。
非推理模型是推理模型的基础吗?
优秀的推理大模型几乎无一不是从优秀的非推理基础模型演化而来。大规模预训练模型为下游推理奠定了必要的基础,包括广博的知识、语言理解与生成能力,以及一定程度的模式联想能力。
研究指出,当基础模型更强时,经过适当微调,其推理性能相应地更强。例如,OpenAI 的 o1/o3 推理模型据报道是在 GPT-4 等强大基础模型的底子上,结合新的思维框架训练而成。
大模型训练过程
预训练阶段
预训练利用大量无标签或弱标签的数据,通过某种算法模型进行训练,得到一个初步具备通用知识或能力的模型。
在进行预训练之前,我们需要先选择一个预训练的模型基座。
但一个较为普遍的问题是:大部分优秀的语言模型都没有进行充分的中文预训练。
因此,许多工作都尝试将在英语上表现比较优秀的模型用中文语料进行 二次预训练,期望其能够将英语上的优秀能力迁移到中文任务中来。
词表扩充
但在进行正式的训练之前,我们还有一步很重要的事情去做:词表扩充。
通俗来讲,tokenizer 的目的就是将一句话进行切词,并将切好词的列表喂给模型进行训练。通常,tokenizer 有 2 种常用形式:WordPiece 和 BPE。
- WordPiece 就是将所有的「常用字」和「常用词」都存到 词表 中,当需要切词的时候就从词表里面查找即可。当遇到词表中不存在的字词时,tokenizer 会将其标记为特殊的字符 [UNK]。
- BBPE(Byte-level BPE) 考虑将一段文本的 UTF-8 编码(UTF-8 保证任何语言都可以通用)中的一个字节 256 位不同的编码作为词表的初始化基础 Subword。
- 优势:不会出现 OOV(Out Of Vocabulary)的情况。不管是怎样的汉字,只要可以用 unicode 表示,就都会存在于词表中。
- 劣势:模型训练起来将会更吃力。毕竟像「待」这样的汉字特定 unicode 组合其实是不需要模型学习的,但模型却需要通过学习来知道合法的 unicode 序列。
为了降低模型的训练难度,人们通常会考虑在原来的词表上进行「词表扩充」,也就是将一些常见的汉字 token 手动添加到原来的 tokenizer 中,从而降低模型的训练难度。
数据集
预训练过程中使用的是大规模的文本数据集(公开 / 非公开)(例如 Wikipedia、BooksCorpus、Common Crawl 等),这些数据通常是未经标注的原始文本。这些原始文本通常要进行以下处理:
- 分词(Tokenization) :原始文本需要进行分词处理(将文本拆分成 tokens)。现代预训练模型大多采用子词级别的分词方法(如 Byte Pair Encoding, BPE,或者 SentencePiece 等),使得词表能够灵活地处理未登录词(OOV)问题。
- 嵌入(Embedding) :每个 token 会通过一个嵌入层(Embedding layer)映射成一个高维向量表示,作为输入送入模型的后续处理流程。
格式示例
# 数据摘自LLaMA-Factory/data/c4_demo.json |
数据源采样
存在多个训练数据源时,通常对不同的数据源会选择不同采样比例(见 LLaMA-1 数据集),这样能够缓解模型在训练的时候受到「数据集规模大小」的影响。
监督微调(SFT)
尽管在预训练阶段,模型已经通过大量的文本数据学习到语言的统计特性和一些基础的语法、语义信息,但它通常并不能很好地处理特定任务。通过监督微调(Supervised Fine-Tuning, SFT)阶段的训练,模型将学习如何在特定的任务或领域内表现得更加出色,尤其是在应对具体问题时能够更精准、更高效。
例如:
用户问题 | 用户预期回答 | 模型续写结果 |
---|---|---|
《无间道》的主演有哪些? | 刘德华、梁朝伟 | 《无间道》的主演有哪些?不少观众期待看到阵容公告,今天小编… |
因为训练大多来自互联网中的数据,我们无法保证数据中只存在存在规范的「一问一答」格式,这就会造成预训练模型通常无法直接给出人们想要的答案。
但是,这并不代表预训练模型「无知」,只是需要我们用一些巧妙的「技巧」来引导出答案:
用户问题 | 用户预期回答 | 模型续写结果 |
---|---|---|
《无间道》的主演有 | 刘德华、梁朝伟 | 《无间道》的主演有刘德华、梁朝伟和黄秋生, 而这部电影也是香港警匪片的代表作之一。 |
不过,这种需要用户精心设计从而去「套」答案的方式,显然没有那么优雅。既然模型知道这些知识,只是不符合我们人类的对话习惯,那么我们只要再去教会模型「如何对话」就好了。
这一阶段一般采用的方式是 指令微调(Instruction Finetuning)。
既然我们需要去「教会模型说人话」,那么我们就需要去精心编写各式各样人们在对话中可能询问的问题,以及问题的答案。
数据集
格式示例
文本数据格式
{ |
例:
{ |
数据编码格式
首先是使用与预训练时相同的分词器(如 BPE、SentencePiece)进行分词操作,即将文本拆分为 token。然后将输入和输出拼成一个序列,通常按照如下的方式:[Instruction] + [分隔符] +([Input])+ [分隔符] + [Output]
数据来源
- 人工标注数据
- Self Instruction(如 stanford_alpaca、BELLE 1M、……)。Alpaca 则是使用「种子指令(seed)」,使得 ChatGPT 既生成「问题」又生成「答案」。
奖励模型(RM)
奖励模型(Reward Model, RM)是强化学习与人类反馈(RLHF)过程中至关重要的一环,它的作用是评估大语言模型输出的文本质量,给出一个分数,指导模型在后续生成过程中更好地符合人类偏好和需求。
为什么需要奖励模型?
在指令微调(SFT)阶段,虽然模型已经被训练并具备一定的语言生成能力,但其输出结果仍然可能不符合人类的偏好,可能存在「幻觉」问题(模型生成的内容不真实或不准确)或者「有害性」问题(输出有害、不合适或令人不安的内容)。
这是因为,SFT 仅通过有限的人工标注数据来微调预训练模型,可能并未完全纠正预训练阶段中潜在的错误知识或不合适的输出。为了进一步提高模型的生成质量,解决这些问题,必须引入奖励模型,利用强化学习进行进一步优化。
训练数据
奖励模型的训练数据通常由 人工标注人员对模型输出进行排序 生成。在训练过程中,标注人员会根据多个生成回答的质量进行排序,而不是为每个答案打分。这种相对排序的方式比直接给每个答案打分更加高效且一致,因为评分会受到标注人员个人主观看法的影响,而相对排序则减少了这种影响,使得多个标注员的标注结果能够更加统一。
格式示例
{ |
基于人类反馈的强化学习(RLHF)
基于人类反馈的强化学习(Reinforcement Learning from Human Feedback,RLHF)是一种将强化学习与人类反馈结合的方法,旨在优化模型的行为和输出,使其更加符合人类的期望。通过引入人类反馈作为奖励信号指导模型更好地理解和满足人类的偏好,生成更自然、更符合人类意图的输出。
核心组件
强化学习算法(RL Algorithm):强化学习算法负责训练模型,以优化其行为。在 RLHF 中,常用的强化学习算法是近端策略优化(Proximal Policy Optimization,PPO)。PPO 是一种“on-policy”算法,模型通过当前策略直接学习和更新,而 不依赖于过去的经验。通过 PPO 算法,模型能够根据奖励信号调整策略,最终生成符合期望的输出。
行动(Action):在 RLHF 框架中,行动是指模型根据给定的提示(prompt)生成的输出文本。每个输出都可以视为模型在执行任务时的选择。行动空间包括词汇表中所有可能的 token 及其排列组合。
环境(Environment):环境是模型与外界交互的场景,提供模型需要执行任务的状态、动作和对应的奖励。在 RLHF 中,环境是模型根据提示生成输出并根据反馈调整行为的外部世界。
状态空间(State Space):环境呈现给模型的所有可能状态,通常是输入给模型的提示或上下文信息。
动作空间(Action Space):模型可以执行的所有可能动作,即根据提示生成的所有输出文本。
奖励函数(Reward Function):根据模型的输出,奖励函数为其分配奖励或惩罚。通常,这些奖励由训练好的奖励模型预测,该模型依据人类反馈评估输出质量。
观察(Observation):观察是模型生成输出时接收到的输入提示(prompt)。这些提示作为模型决策和执行任务的基础。观察空间(Observation Space) 是指可能的输入 token 序列,即模型处理的提示文本。
奖励机制(Reward):奖励机制是 RLHF 框架的核心组成部分,负责基于奖励模型的预测分配奖励或惩罚。奖励模型通常通过大量人类反馈数据进行训练,以确保能够准确预测人类对不同输出的偏好。反馈数据通常通过对模型输出的排序、打分集。
模型微调(FT)
微调(Fine Tuning)处于大模型调整最后阶段,也就是应用前,最后对大模型参数(即权重)按照业务领域知识进行学习调整的过程,而且没有前面几步这么重,完成定向微调后,大模型能完成特定的任务和业务工作(对话、推理、内容生成等等)。
当然,大模型在业务上使用,也并不是一定需要微调的,还可以结合知识库采用 RAG 方案,具体在后面微调过程章节中会提到怎么选择。
为什么大模型微调很重要?
一般预训练出来的大模型都是通用大模型,在特定领域内无法胜任相关任务要求,需要调整参数,学习特定领域知识。但是大模型动辄数百亿参数的庞大规模,使得它们对个人设备而言不仅难以训练,甚至连部署都显得遥不可及,但是微调往往不需要这么高的成本条件,随着模型技术的发展,微调越来越变得容易,甚至消费级电脑都能进行。
指令微调(IFT)
指令微调也可以叫“监督微调”,也就是对于输入文本有标准答案,用标准答案来训练模型。一般预训练完毕后就要进行指令微调,经过指令微调后,大语言模型能够展现出较强的指令遵循能力,可以通过零样本学习的方式解决多种下游任务。
全参数微调(FFT)
全参数微调(Full Fine Tuning)指 在预训练模型的基础上,针对特定任务或领域 调整所有模型参数 的过程。其核心目标是利用预训练模型的通用语言能力,通过进一步训练使其适应下游任务的具体需求,例如文本分类、对话生成或专业领域问答等。
核心特点
- 参数全面更新
全参数微调会更新模型的 所有层和权重(包括预训练阶段学到的参数),而非仅调整部分模块或新增适配器。这意味着模型的所有参数都会根据新任务的数据分布重新优化 - 依赖高质量数据
由于需要调整大量参数,全参数微调通常要求下游任务的数据与预训练数据分布相似,且数据量充足,以避免过拟合。例如,在医疗、法律等专业领域,需准备大量标注数据以充分训练模型 - 计算资源密集
调整所有参数会导致显存和算力需求大幅增加。以 65B 参数的 LLaMA 模型为例,传统全参数微调需多块高性能 GPU(如 A100),但通过优化技术(如 LOMO 优化器),可在 8 块 RTX 3090 GPU 上完成训练
优势与局限性
优势:
- 性能表现优异:由于全面调整参数,模型能更精准地捕捉任务特征,在复杂任务(如科学推理、多轮对话)中表现优于参数高效微调方法(如 LoRA、Adapter)
- 通用性强:适用于任务与预训练目标差异较大的场景(如跨模态适配)
局限性:
- 资源消耗大:显存占用和训练时间远超部分参数微调方法。例如,微调 7B 模型需约 15GB 显存(使用 LOMO 优化器),而传统方法可能需 100GB 以上
- 数据依赖性高:在数据不足或分布差异大的情况下,容易出现过拟合
参数高效微调(PEFT)
参数高效微调(Parameter-Efficient Fine-Tuning,PEFT)旨在通过 最小化微调参数数量和计算复杂度,实现高效的迁移学习。它仅更新模型中的部分参数,显著降低训练时间和成本,适用于计算资源有限的情况。
PEFT 技术包括 LoRA、QLoRA、适配器调整(Adapter Tuning)、前缀调整(Prefix Tuning)、提示调整(Prompt Tuning)、P-Tuning 及 P-Tuning v2 等多种方法。
此处仅介绍 LoRA(Low-Rank Adaptation),其他技术参考:一文看完大模型微调技术:微调背景、分类和微调全流程介绍 - AI 全书
LoRA
LoRA(Low-Rank Adaptation)是一种旨在微调大型预训练语言模型(如 GPT-3 或 BERT)的技术。其核心理念在于,在模型的决定性层次中引入小型、低秩的矩阵来实现模型行为的微调,而无需对整个模型结构进行大幅度修改。
这种方法的优势在于,在不显著增加额外计算负担的前提下,能够有效地微调模型,同时保留模型原有的性能水准。
LoRA 的操作流程如下:
- 确定微调目标权重矩阵:首先在大型模型(例如 GPT)中 识别出需要微调的权重矩阵,这些矩阵一般位于模型的多头自注意力和前馈神经网络部分。
- 引入两个低秩矩阵:然后,引入两个维度较小的低秩矩阵 A 和 B。假设原始权重矩阵的尺寸为 dd,则 A 和 B 的尺寸可能为 dr 和 r*d,其中 r 远小于 d。
- 计算低秩更新:通过这两个低秩矩阵的乘积 AB 来生成一个新矩阵,其秩(即 r)远小于原始权重矩阵的秩。这个乘积实际上是对原始权重矩阵的一种低秩近似调整。
- 结合原始权重:最终,新生成的低秩矩阵 AB 被叠加到原始权重矩阵上。因此,原始权重经过了微调,但大部分权重维持不变。这个过程可以用数学表达式描述为:新权重 = 原始权重 + AB。
难点:插入位置/秩值参数调试需要经验,部署时需要兼容 LoRA 框架
大模型的局限性
知识局限
知识的局限性,是指大模型所具备的知识,完全停留在了它训练完成的那一刻。也就是说,训练数据中所包含的知识,就是大模型的所有知识。比如 ChatGPT3.5 的知识停留在 2021 年 9 月,ChatGPT4 的知识停留在 2023 年 4 月。
如果你问它这个日期之后的知识,在 不联网的情况下,它是不可能知道的。这是从时间的维度去讲,它不具备时时更新的数据。
如果从领域的维度去讲,它只具备通用领域的知识,也就是那些可以公开在网上搜索到的知识,尽管它包含海量的数据,但是它不太可能知道你个人的隐私数据,更不会知道某个公司内部的业务数据。
幻觉问题
大模型的幻觉问题指它有时候会胡编乱造出一些看上去合理其实根本不符合事实的内容。
比如说,你想用大模型来帮助你查询某个主题的文献内容,然后大模型给出了很多参考文献,你真正去谷歌学术上面搜的时候,会发现很多文献全是假的,根本就没有。
还比如说,有时候大模型会一本正经地胡说八道,尤其在解数学题的时候,明明结果不正确,它非要说自己是正确的。
那么幻觉问题是怎么产生的呢?它和大模型的训练机制有关,现在大模型背后都是采用 Transformer 架构。
它在本质上是根据概率来预测下一个 token,或者说,根据前面文本内容来预测下一个字。
比如说,当大模型发现前面的文本是:“今天我很…”,那么它会从海量的数据里面,寻找和“我很”向量距离比较近的词语,它可能会找到“开心”、“难过”、“饿”等等一系列的词语。
然后从中选择一个可能出现 概率最高 的词汇,比如说:“开心”。那么大模型就会完成续写:今天我很开心。
本质上来说,大模型并不理解它所说的话,尽管它能写诗,能写作,能干很多事。但其实,它做的只是一个数学上的统计概率的问题,解出最优答案,然后迅速续写前面的文本。
这样一个底层机制,也导致了大模型的幻觉问题,因为它总能找出下一个文本是什么,而从不关心这样衔接是否正确,这就大模型出现幻觉的根本原因。
如何缓解幻觉问题?
- 使用更多真实、可信的数据进行训练。
- 用 RAG 技术,将外部知识库作为依据。
- 思维链(CoT)+自洽性机制(多生成几个回答,比较回答)
数据安全问题
大模型的诞生,基于海量的训练数据,而这些数据里面大多数都是公开可查的,但有时也会涉及数据安全和版权问题。像 OpenAI 就被多家公司或者机构投诉,侵犯了它们的数据版权,擅自使用它们的数据进行大模型训练。
由于现在这方面的法律法规还不是很完善,所以这种情况也很难有清晰的界定,去区分哪些是属于版权的数据信息。
从使用者的角度来说,当企业想要使用大模型给公司降本增效时,同样面临的数据安全问题。
一方面希望利用大模型的能力,帮助企业业务实现提效,另一方面又不希望公司的隐私和安全数据,暴露在大模型里面。因此,就需要在大模型的基础之上,搭配其它的技术,来实现不同企业各自的个性化目标。
模型部署
GPU 概述
GPU vs CPU
CPU
CPU(Central Processing Unit,中央处理单元)通常被称为计算机的“大脑”。它负责执行指令和进行系统运行所必需的计算。CPU 包括控制单元、算术逻辑单元(ALU)和缓存内存等各种组件:
- 控制单元(Control Unit):从计算机内存中检索指令并解码,确定 CPU 需要执行的操作
- 算术逻辑单元(Arithmetic Logic Unit, ALU):ALU 接收输入数据并遵循指令产生输出。主要功能包括算术运算、逻辑运算和移位运算
- 缓存内存(Cache Memory):存储频繁访问的数据,允许更快的检索和改善整体性能
CPU 通过遵循存储在内存中的一组指令来操作,这些指令通常被称为程序。它获取指令,解码指令,执行必要的操作,并将结果存回内存。这一过程不断重复,使 CPU 能够按顺序执行程序。
CPU 的主要处理需要复杂计算和快速决策的通用任务。它执行与操作系统操作、软件应用和管理各种硬件组件相关的指令。运行程序、执行数学计算、处理系统请求和管理内存分配等任务都是 CPU 的责任。
GPU
GPU(Graphics Processing Unit,图形处理单元)是一种专门设计用于处理和加速图像、视频和动画渲染的专用电子电路。
与专注于通用计算任务的 CPU 不同,GPU 特别优化用于并行处理。 它由数千个较小的处理核心组成,每个核心能够同时执行多个操作。这种并行架构使 GPU 能够并行执行大量计算,使其在涉及大型数据集和高计算需求的任务中非常高效。GPU 强大的计算能力和架构使其成为适用于图形渲染之外任务的理想选择。它越来越多地被用于机器学习、科学模拟、加密货币挖矿和视频编码等领域。这些应用极大地受益于 GPU 同时进行数千次计算的能力,显著减少了处理时间。
GPU 的另一个关键特性是其 专用内存,称为 VRAM(视频随机存取内存)。这种高速内存使 GPU 能够快速存储和访问图形数据,实现平滑的图形渲染和减少延迟。GPU 上的 VRAM 量决定了其处理大型纹理、复杂场景和高分辨率显示的能力。
CPU 与 GPU 的区别
CPU | GPU | |
---|---|---|
架构设计 | 由 少量核心 组成,擅长 以单线程方式执行顺序任务,针对需要高单线程性能的任务进行优化,如操作系统操作、软件应用和通用计算。 | 拥有 数千个更小、更专业的核心。这种 并行 架构使 GPU 能够同时处理大量计算,使其在处理高度并行任务时异常高效。 |
计算量与计算复杂度 | 计算量小,可计算复杂的运算。 | 计算量大,只可计算简单的运算。 |
使用内存类型 | 使用具有低容量的快速缓存内存来存储频繁访问的数据 | 使用具有更大容量的专用视频内存(VRAM) |
时钟速度 | 更高 | 更低 |
模型训练时两者的作用
CPU:
- 数据预处理:在自然语言处理(NLP)中,数据预处理等一系列准备工作通常是 顺序 的,得益于 CPU 的通用性,由 CPU 负责加载和预处理训练数据的任务。
- 数据读写:对于大部分硬件(GPU、TPU、FPGA),CPU 会负责数据的读写。在进行训练时,有时为了加速需要选择更多核的机器。
- 模型算法定义:CPU 执行负责定义模型结构、连接层和超参数配置的代码。
- 反向传播:反向传播中计算梯度后,使用梯度下降等优化算法更新模型参数的过程,则需要 CPU 管理整体优化过程
- 整体管理:在整个训练期间,CPU 负责处理 内存资源的管理,确保高效的数据访问和存储。监督主内存(RAM)与 GPU 内存(VRAM)之间的数据传输,以提供必要的输入和检索输出。
GPU:
- 前向传播&反向传播:前向传播和反向传播的梯度计算过程都涉及 矩阵乘法和元素级操作,高度可并行化,由 GPU 来负责。
- 参数更新:如 Adam、SGD 等优化器,需对模型中上亿甚至数十亿个参数进行快速调整,也需要由 GPU 负责。
GPU vs FPGA
FPGA(Field Programmable Gate Array,现场可编程门阵列),是一种 硬件可重新编程的半定制芯片。可编程是 FPGA 最明显的标签。这意味着,你可以根据具体的机器学习算法,自定义 FPGA 的电路设计,最大程度地提高算法的运行效率。可编程过程包括三个步骤:
(1)使用硬件描述语言生成描述硬件电路的配置文件;
(2)采用配套 FPGA 专用的 EDA 软件将配置文件编译生成二进制位流数据;
(3)将二进制位流数据烧录到芯片中实现所需的功能。
上文介绍的 CPU、GPU 遵循的是 冯·诺依曼体系结构,指令要经过存储、译码、执行,共享内存在使用时要经历仲裁和缓存。而 FPGA 每个逻辑单元的功能在重编程时就已经确定,因此无须指令。而 FPGA 的内存专属于各个控制逻辑,无需不必要的仲裁和缓存。得益于体系架构的优势,先天具有更高能效的特长。
体系结构不同带来的另外一个优势就是,FPGA 具有极低的延迟,它无须依赖通用 OS,也无须通过总线即可完成通讯,拥有流水线和数据并行(GPU 由于流水线深度受限,只能做到数据并行),延迟在微秒级别。
一般来说,FPGA 涉及到三大核心技术:
(1)结构布局:内部布局细腻程度,影响芯片的运行效率,全球主要分为两种流派——逻辑和路由都是固定的、逻辑和路由是可以互换的;
(2)接口支持:决定了与外围设备兼容性,常用的外围设备包括 CPU、GPU、DDR、ADC 等;
(3)EDA:EDA 工具是 FPGA 可编程的关键,也是目前 FPGA 芯片设计的关键门槛,是 FPGA 厂商竞争的关键。
GPU 与 FPGA 的区别
功耗与时延
GPU 的功耗非常高,因为其无法很好地利用片上内存,需要频繁读取片外的 DRAM。尽管在吞吐量上的优势使得 GPU 几乎垄断了深度学习领域, 但 GPU 依赖片外存储的处理流程,使其在功耗和时延上对比 FPGA 有非常大的弱势。
以英伟达的 GPU 为例, 使用 CUDA 进行训练,主要有四个步骤:
- 将数据从 CPU 的外 部存储 (DRAM) 复制到 GPU 的存储中;
- CPU 加载(Lauch) 需要进行的计算, 即 Kernel 到 GPU 中;
- GPU 执行 CPU 发送过来的指令;
- GPU 将结果最终存回 CPU 的 DRAM 中,再进行下一个 Kernel 的 计算。
因此,CUDA 涉及了 两次存储读写。而 FPGA 可以将第一个 Kernel 的结果缓存到片上星罗棋布的 BRAM 中, 完全可以不需要读写外部存储就能完成整个算法。由于读取 DRAM 所消耗的能量是 SRAM 的 100 倍以上, 是加法的 6400 倍,GPU 这一需要频繁读取 DRAM 的处理,使其功耗远高于 FPGA,而且 DRAM 的带宽往往成为了性能的瓶颈。FPGA 可以灵活运用片上存储, 因此功耗远低于 GPU。FPGA 完全可以不需要读 DRAM,整个算法在片上完成。
FPGA“无批次 (Batch-less)“的架构, 使其在 AI 推理中具有非常强的时延优势。边缘计算受限于网络条件和时延,许多决策来不及上传云端, 只能本地执行,通常面临时延和功耗两大约束。GPU 需要等待批次的特点,使其时延要高于 FPGA。
易用与灵活
GPU 的易用性也是它广受欢迎的一个重要原因。市面上的 GPU 产品也是百花齐放,能够满足从游戏爱好者到专业设计师的不同需求。大多数 GPU 产品都可以「即插即用」,无需复杂地设置,就能轻松上手。
FPGA 的最大优势在于其高度的可编程性,开发者可以自由设计硬件逻辑和功能,为特定算法打造最适合的硬件平台。例如,你正在开发一款需要进行特定类型计算的人工智能算法。使用 GPU 时,你可能会受到固定架构的限制,无法最大限度地提升算法效率。而 FPGA 则完全不同,你可以根据算法的需求,对 FPGA 的内部电路进行修改,打造出最适合算法运行的硬件平台。
GPU 还是 FPGA?
在深度学习领域,模型训练几乎都是使用 GPU,为什么几乎见不到 FPGA 的身影?
FPGA 的缺陷是难于编程。配置 FPGA 需要具备硬件描述语言 (如 Verilog 或 VHDL) 的知识和专业技能。机器学习程序是用 Python 或 C 等高级语言编写的,将其逻辑转换为 FPGA 指令非常困难。在 FPGA 上运行 TensorFlow、PyTorch、Caffe 和其他框架建模的神经网络通常需要消耗大量的人力时间和精力。
“要对 FPGA 进行编程,你需要组建一支懂得如何开发 FPGA 的硬件工程师团队,并聘请一位了解神经网络的优秀架构师,花费几年时间去开发一个硬件模型,最终编译运行在 FPGA 上,与此同时你还需要处理 FPGA 使用效率和使用频率的问题。“Larzul 说。此外你还需要具备广泛的数学技能,以较低的精度准确地计算模型,并需要一个软件团队将 AI 框架模型映射到硬件架构。
此外,FPGA 虽然在特定任务上效率很高,但在原始计算能力和性能方面,与现代 GPU 相比还是略逊一筹,尤其是在处理图形密集型应用时,差距就更加明显。
为什么 Transformer 和 LLM 需要用 GPU?
深度学习的发展,特别是大模型的广泛应用,对计算资源的要求呈指数级增长。以 GPT-3 为例,其包含 1750 亿个参数,训练一次所需的 FLOPs(浮点运算次数)高达 3.14×10²³,普通的 CPU 无法在可接受的时间内完成如此庞大的计算。因此,GPU 成为训练大模型时不可或缺的核心硬件。
加速训练过程
大模型通常意味着更深的网络结构(更多层)、更宽的网络宽度(更多通道)、更大的输入维度(如高分辨率图像或长文本序列)。这些因素共同导致计算复杂度显著增加。
GPU 的并行计算能力可以显著加速以下训练阶段:
- 前向传播(Forward Pass) :计算神经网络的输出,需要大量矩阵乘法与加法操作。
- 反向传播(Backward Pass) :计算梯度并进行参数更新,涉及大量矩阵转置与乘法。
- 参数更新(Optimization) :如 Adam、SGD 等优化器,需对模型中上亿甚至数十亿个参数进行快速调整。
高效执行矩阵运算与张量操作
深度学习本质上是 张量计算的堆叠。网络中的每一层几乎都可抽象为矩阵运算(如卷积、全连接层、注意力机制等),例如:
- 卷积操作可视为稀疏矩阵乘法;
- Transformer 中的自注意力机制大量依赖矩阵乘法;
- BatchNorm、LayerNorm 等归一化操作涉及向量求均值和方差。
GPU 的 SIMD(Single Instruction Multiple Data)架构特别适合这种批量、重复的计算。通过 CUDA(NVIDIA)或 OpenCL(通用平台),开发者可以直接控制并行化粒度与调度策略,使张量操作高效利用数千个计算核心。
带宽优势
GPU 不仅计算强大,内存带宽也远高于 CPU。例如:
- 主流 CPU 带宽为几十 GB/s;
- 而一张 NVIDIA A100 GPU 的内存带宽可达 1555 GB/s,提升一个数量级以上。
这意味着在数据传输、模型参数加载、梯度交换等过程中,GPU 可以更快地完成内存访问操作,减少瓶颈,提升整体训练效率。
此外,GPU 专有显存(如 HBM2、GDDR6X 等)在速度和吞吐量上也远超普通 DDR 内存,使得大模型的权重和中间激活值可以高效存储与读取,避免频繁的内存调度。
支持大规模并行与分布式训练
大模型往往不仅需要单卡 GPU 的算力,还依赖于 多 GPU 甚至跨节点集群的分布式训练。GPU 生态系统为此提供了完善的技术支持:
- 数据并行(Data Parallelism) :不同 GPU 处理不同批次的数据,但共享模型参数。训练中参数通过 NCCL、Horovod 等库高效同步。
- 模型并行(Model Parallelism) :当模型大到单个 GPU 无法容纳时,可将不同网络层拆分分布在多个 GPU 上。
- 混合并行(Hybrid Parallelism) :结合数据并行与模型并行,用于超大规模模型训练,如 GPT-4、PaLM 等。
这些策略只有在 GPU 的高带宽互联(如 NVLink、PCIe 4.0、InfiniBand)与成熟的通信库(如 NCCL、MPI)支持下才能实现稳定、高效的训练过程。
深度学习框架的 GPU 优化支持
主流深度学习框架(如 PyTorch、TensorFlow、JAX 等)都对 GPU 进行了高度优化:
- 利用 cuDNN、cuBLAS 等 NVIDIA 深度优化库;
- 支持自动混合精度(AMP),在不影响训练质量的前提下降低计算复杂度与内存消耗;
- 内建分布式训练能力(如 PyTorch DDP、TensorFlow MirroredStrategy);
框架级别的优化进一步提升了 GPU 在实际训练中的表现,简化了开发者部署大模型训练的流程。
各类 GPU 对比
NVIDIA | AMD | 华为 | Google TPU | |
---|---|---|---|---|
显卡 | NVIDIA A100 | AMD Instinc MI100 | 华为昇腾910B | Google TPU v4 |
推出时间 | 2020.3.31 | 2020.11.16 | - | 2021.5.19 |
架构 | Ampere(7nm) | CDNA(7nm) | 达芬奇(7nm) | TensorCore |
显存 | 80GB | 32GB | 64GB | - |
FP32 | 19.5 TFLOPs | 23.1 TFLOPs | 81 | - |
TF32 (Tensor Float 32) | 156 TFLOPs | - | - | - |
FP16 | 312 TFLOPs | 184.6 TFLOPs | 313 | - |
INT8 | 512 TFLOPs | 92.3 TOPs | 512 | - |
功耗 | 300W | 300W | - | - |
带宽 | 1,935 GB/s | 1.2 TB/s(峰值) | 1.6 TB/s | - |
Google TPU
TPU(Tensor Process Unit,张量处理单元) 是 Google 设计的应用专用集成电路 (ASIC),用于加速机器学习工作负载。Cloud TPU 是一种 Google Cloud 服务,可将 TPU 用作可扩缩资源。TPU 旨在快速执行矩阵运算,因此非常适合机器学习工作负载。
TPU 包含数千个乘法累加器,这些累加器彼此直接连接以形成大型物理矩阵,称为脉动阵列架构。
TPU 主机将数据流式传输到馈入队列中。TPU 从馈入队列加载数据,并将其存储在 HBM 内存中。计算完成后,TPU 会将结果加载到馈出队列中。然后,TPU 主机从馈出队列读取结果并将其存储在主机的内存中。
为了执行矩阵运算,TPU 将 HBM 内存中的参数加载到矩阵乘法单元 (MXU) 中。
然后,TPU 从内存加载数据。每次执行乘法运算时,系统都会将结果传递给下一个乘法累加器。输出是数据和参数之间所有乘法结果的总和。在矩阵乘法过程中,不需要访问内存。
开源大模型部署工具
入门级轻量部署
适用于消费级硬件(个人 PC、笔记本,甚至是边缘设备)。
Ollama | LM Studio | GPT4All | |
---|---|---|---|
平台 | macOS, Linux, Windows | macOS, Linux, Windows | macOS, Ubuntu, Windows |
简介 | 支持一键部署开源 LLM(如 Llama、Mistral) | 带有 GUI 界面,可以下载并本地运行 LLaMA、Mistral 等模型 | 支持多种开源 LLM(如 LLaMA、Mistral),有 GUI 版本和 CLI 版本 |
优点 | 安装简单,支持 GPU 加速,命令行交互直观 | 界面友好,易于管理多个模型,支持 GPU 加速 | 可在 CPU 运行 |
高性能推理
适用于拥有高性能 GPU(如 RTX 3090、A100)的用户或服务器端推理。
Llama.cpp | vLLM | TensorRT-LLM | |
---|---|---|---|
平台 | macOS, Linux, Windows | Linux | Linux |
简介 | Meta LLaMA 模型的高效 C++ 推理引擎,支持 CPU 和 GPU(OpenCL/CUDA) | 专为高吞吐量优化的 LLM 推理引擎,支持 Hugging Face Transformer 模型 | NVIDIA 推出的 LLM 推理优化库,支持 Transformer 架构,适用于 A100/H100 GPU |
优点 | 性能优化,适合本地推理 | 传统 PyTorch 推理快数倍,适用于部署高性能 API | 极致优化推理速度,减少显存占用 |
专用 AI 服务器部署
适用于企业级部署,可用于本地服务器或私有云环境。
FastChat | OpenWebUI | |
---|---|---|
简介 | 适用于 OpenAI 兼容 API 部署,可以搭建自己的 ChatGPT 服务器 | 支持本地运行的大模型 Web UI,适用于 GPT-4、LLaMA 2 |
参考链接
LLM 的 3 种架构:Encoder-only、Decoder-only、encode-decode - 知乎
史上最详细 Transformer 讲解以及 transformer 实现中文版完形填空(掩蔽字训练 MASK) 内容详细易懂且附有全部代码_transformer mask-CSDN 博客
【超详细】【原理篇&实战篇】一文读懂 Transformer-CSDN 博客
第四篇:一文搞懂 Transformer 架构的三种注意力机制 - 知乎 (zhihu.com)
[ai 笔记 13] 大模型架构对比盘点:Encoder-Only、Decoder-Only、Encoder-Decoder_encoderonly 和 decoderonly 的区别-CSDN 博客
大模型进化史:从 Transformer 到 DeepSeek-R1 的 AI 变革之路 - 知乎
长文梳理!近年来 GPT 系列模型的发展历史:从 GPT-1 到 GPT-4o(前世、今生)_gpt 发展历程-CSDN 博客
GPT-1/GPT-2/GPT-3/GPT-3.5 语言模型详细介绍 - 知乎
T5 模型:NLP Text-to-Text 预训练模型超大规模探索 - 知乎
深入理解深度学习——BERT 派生模型:T5(Text to Text Transfer Transformer)_t5 模型-CSDN 博客
【独家】万字长文带你梳理 Llama 开源家族:从 Llama-1 到 Llama-3-腾讯云开发者社区-腾讯云
The Llama 4 herd: The beginning of a new era of natively multimodal AI innovation
【DeepSeek 论文精读】1. 从 DeepSeek LLM 到 DeepSeek R1-CSDN 博客
DeepSeek 开源之路全景回顾:从 V1 到 R1,解读每个模型的技术突破与参数演进 - 知乎
一文详解大模型训练全过程,看懂这篇就够了!_大模型预训练-CSDN 博客
Dense 与 MoE 大模型架构后续发展解读_dense model-CSDN 博客
Dense 与 MoE 系列模型架构的全面对比与应用策略 - 知乎
推理模型与非推理模型 by o3(deep research) - 哔哩哔哩
Unmatched Performance and Efficiency | Llama 4
ERNIE 4.5 模型系列正式开源 | ERNIE Blog
人工智能的局限性:大模型面临的三大难题_大模型的局限性-CSDN 博客
一文看完大模型微调技术:微调背景、分类和微调全流程介绍 - AI 全书
AI 模型训练中的双剑侠 dd:GPU 和 CPU 的分工 - 知乎
大模型入门:一文读懂算力与 CPU、GPU、GPGPU、TPU、DPU_矢量算力和 tensor 算力的区别-CSDN 博客
GPU vs. FPGA:比较两种处理器有什么区别 - 系统极客
FPGA 在深度学习应用中或将取代 GPU - 知乎 FPGA 在深度学习应用中或将取代 GPU - 知乎
大模型训练中的 GPU 作用解析_大语言模型 cpu 和 gpu 的作用-CSDN 博客