大语言模型简要介绍

98 阅读8分钟

一、什么是大语言模型?

大模型本质上是机器学习模型,但是它相比常规的模型有如下特点:

①、参数规模巨大:

如DeepSeek-V3(MOE)总共有671B参数,激活37B参数,推理时仅激活部分专家参数,但需加载全部权重到显存里。但显存需求也要看参数精度,如在精度FP8的情况下,显存大概需要1.1-1.2TB。

假设现在有个1B的模型,那么一般需要多少显存?

1、参数数量:1B=1billion=10亿参数
2、参数数据类型:

  • INT8:整数类型,8个bit=1字节
  • FP16:浮点数类型,半精度浮点数,16bit=2字节
  • FP32:浮点数类型,单精度浮点数,32bit=4字节

3、计算大小:

假设按FP16,1B=10亿个参数=10亿✖2字节=20亿字节=2GB字节

上面的2GB只是理论上的数值。实际上,除了模型本身大小,还有一些开销需要计算:

  • 梯度:反向传播过程中的梯度占用显存基本与模型参数相同
  • 优化器:优化器是最小化loss的工具。其占用显存大小通常是模型参数的两倍
  • 激活值:忽略不计

综上,一个FP16数据类型的1B模型占用显存预计需要8GB!

所以像GPT4、deepseek满血版的,所占用显存需要更多!

②、海量训练数据

image.png

如DeepSeek-V3模型的预训练数据集tokens达到14.8万亿

什么是token?

token是文本的最小处理单元,它不是直接对应一个词,而是根据分词工具处理后的片段。

一个token大概占用多少字节?

一个token大概需要五个英文字符,一个字符大概需要1-4个字节,所以这个token存储可能占用5-20字节。

③、强大的涌现能力

涌现能力是指当模型规模达到一定程度,会涌现出小模型不所具备的能力:

如推理能力、one-shot/few-shot/zero-shot能力,代码能力等。这个涌现能力不是随着模型规模逐渐变大而逐渐变好的,也就是不是线性特征,而是非线性特征,就像达到了“某个阈值”之后突然变好,就好比水到0度以下就突然结冰,水达到100度就突然变成水蒸气一样。

④、强大的泛化能力与通用性

训练过程中所学习到的能力和模式,能很好地应用到新的任务和新的问题上。同时对于同一个模型,能够通过简单的提示和微调来适配不同的任务,如翻译、写作、作诗。。。

二、预训练语言模型的三种网络架构

①、以BERT为代表的Encoders

BERT(Bidirectional Encoder Representations from Transformers),根据英文也可以大概知道,它是基于双向注意力机制的一个语言模型。与以往模型相比,它能够双向理解上下文,能够更好的理解语言。

核心架构:

使用了transformer的encoder编码器,encoder的核心特征之一是双向注意力机制,一个词在编码时会同时关注文本中其他所有位置的词,也就是说前边的后边的都要关注;而Decoder是单向注意力机制。

那这时候有人就要问了:这个Transformer中的Decoder层当中,第二个Attention层不是接收了来自Encoder层当中的K和V吗?这个K、V不是有双向上下文的编码表示吗?那么这个decoder层不应该也可以理解为双向的结构吗?

注意,这就是一个经典的错误。首先,第一个Masked Multi - Head Attention,它在生成第i个单词的时候,它只关注前面i-1个单词。第二个Multi - Head Attention 自身不关注后文,而是通过借用Encoder输入的双向理解,来生成序列。Decoder的生成顺序本身是严格的从左到右的,生成的后文本身就是要实时创造的内容,不可能让decoder去提前关注自己还没生成的词。

预训练:

通过大量没有标签的数据和少量的微调。以及通过掩码语言模型来进行训练:

随机将文本中15%的词进行MASK,然后去预测被MASKED的单词。就类比英文卷子里面的完型填空一样,让你挖空填选项。

②、以GPT为代表的Decoders

GPT(Generative Pre-trained Transformer),顾名思义,叫生成式语言模型,使用了Transformer的Decoder架构,通过单向注意力机制来生成连贯文本。

一句话总结

GPT预测生成的连贯性较强,对上下文理解能力相对较弱,适用于生成式任务

BERT对上下文理解能力较强,生成文本连贯性较弱,适用于文本分析任务。

③、ENcoder-Decoders

这种结构结合了编码器和解码器的特点。这种就适用于非常需要理解输入信息并且输出相应的信息,如机器翻译、文本摘要等。

三、大模型训练过程

①、预训练

通过大量的没有标签的数据来学习,此过程主要依赖于无监督学习

②、监督微调SFT

通过针对特定任务的标定数据进行微调,这些标注数据通常为一系列的问题和期望的回答,模型基于这些数据进行训练,能够在特定领域获得特定的能力

③、强化学习RLHF

引入人类反馈作为奖励信号,通过让模型对同一个问题,生成多次回答,然后人类对这些回答进行打分和排序,模型通过这些打分排序进行调参,从而生成更加符合人类偏好的回答。

四、大语言模型当中的关键技术

稀疏注意力

标准的transformer自注意力计算复杂度为O(N*2),对于长序列文本,计算复杂度会线性增长,那么可以通过不让每个词都关注序列中其他所有词,而是只是关注算法设计好的选择过的一部分词,从而降低复杂度到O(N)。这里只是简单提一嘴,如果想要深入研究的可以参考Google的论文

MOE混合专家架构

不再是一个完整的模型来解决问题,而是培养一群专科医生,当问题来了的时候,通过分诊台(门控网络)指引到哪个专科进行处理(专家网络)。

deepseek中关键技术

①、MLA(Multi-head latent attention)

将原始的KV投影到固定大小的潜在空间,从而减少了计算量和内存占用 Attention(Q、K、V)=》Attention(Q、K_latent、V_latent)

②、MTP 多token预测

通俗解释就是,传统模型是一个token一个token生成,而MTP就是一次预测多个token,能够更快生成结果。

③、R1的GRPO算法

GRPO 是 DeepSeek 专门为大模型设计的 “偷懒又高效” 的优化方法,咱们用 “教机器人回答数学题” 举例:

1. 第一步:让机器人 “一次多写几个答案”(采样动作组)

比如给机器人一个题:“1+1=?”不让它只写 1 个答案,而是让它一次生成 3 个答案(比如:A=2,B=3,C=5)—— 这就叫 “采样一组动作”(动作 = 回答)。

2. 第二步:给这 3 个答案 “排高低”(算相对奖励)

找个人来打分:A=2(对,给 10 分),B=3(错,给 3 分),C=5(错,给 1 分)。GRPO 不纠结 “10 分、3 分具体代表啥”,而是算 “相对好坏”:把这 3 个分归一化(比如变成 “+1、-0.5、-1”),意思是 “A 比组里其他人都好,B 和 C 比 A 差”—— 这就是 “相对优势”。

3. 第三步:“好的答案多学,差的少学”(更新策略)

告诉机器人:“下次再遇到 1+1,你要更大概率生成 A 这样的答案,少生成 B、C 这样的”。同时加个 “规矩”:不能一下子改太猛(比如原来生成 A 的概率是 30%,不能直接改成 90%),用 “KL 散度” 控制变化幅度 —— 保证机器人 “慢慢学,不跑偏”。

相比PPO

PPO 是目前最常用的强化学习算法(比如 ChatGPT 的 RLHF 阶段就用它),思路也简单,还是用 “教机器人答数学题” 举例:

  1. 第一步:让机器人 “先答一次”(采样动作)

给题 “1+1=?”,机器人生成 1 个答案:A=3(错)。

  1. 第二步:让 “裁判” 算 “这答案该得多少分”(价值网络估分)

“裁判”(价值网络)提前学过 “数学题评分标准”,它会说:“1+1=3 最多值 2 分,要是答 2 能值 10 分”—— 这个 “2 分” 和 “10 分的差距”,就是 “优势”(意思是 “这答案还差 8 分,得改进”)。

  1. 第三步:“按裁判意见改,但别改太狠”(裁剪更新)

告诉机器人:“下次答 1+1,别老答 3 了,多试试答 2”。但 PPO 怕机器人 “一下子改太猛”(比如原来答 3 的概率是 50%,直接改成 1%),会加个 “裁剪规则”:“改动作的幅度不能超过原来的 1.2 倍或低于 0.8 倍”—— 比如原来答 3 的概率 50%,最多改成 60%,最少 40%,保证 “稳扎稳打”。

PPO 最关键的特点:依赖 “裁判”(价值网络)

PPO 必须有个 “裁判” 来判断 “单个答案的绝对好坏”(比如 “答 2 值 10 分” 是固定标准),这个 “裁判” 需要单独训练,而且对大模型来说,“裁判” 的大小和主模型差不多。