news 2026/4/23 17:46:05

大模型面试必备01——GPT参数计算、BPE分词算法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
大模型面试必备01——GPT参数计算、BPE分词算法

一、GPT3参数计算

参考:

  • https://zhuanlan.zhihu.com/p/612389702

  • https://zhuanlan.zhihu.com/p/638679519

  • https://www.lesswrong.com/posts/6Fpvch8RR29qLEWNH/the-gpt-3-architecture-on-a-napkin

论文地址:Language Models are Few-Shot Learners

参考视频:LLM Parameter Counting(15分钟快速掌握)

图解计算GPT的参数量:

主要分成四个部分,分别计算每个部分的参数量

1、输入层参数

输入层参数包括两部分:embedding编码层参数+位置编码层参数

  1. 输入层的组成

在Transformer架构(如GPT-3)中,输入层的目的是将离散的文本(token序列)转换为连续的向量表示,通常包含以下两部分:

  • Embedding编码层:将每个token映射为词向量。

  • 位置编码层:为每个位置添加独立的位置信息。


  1. Embedding编码层的参数量

    1. 公式词向量维度 × 词表大小

    2. 原因

      • 词表大小(V)是模型中不同token的数量(例如英文的3万词)。注:这里是把所有的单词或其分解的子词全部算到这个词表中,这里相当于把整个特征空间全部算进去了。

      • 每个token对应一个词向量,向量的每个维度都是一个可学习的参数。

      • 权重矩阵形状为[V, D](D是词向量维度),参数量为V×D

    3. 示例: 若词表大小为50,000,词向量维度为512,则参数量为50,000 × 512 = 25,600,000


  1. 位置编码层的参数量

    1. 公式词向量维度 × 窗口长度

    2. 原因

      • 窗口长度(N)是输入序列的长度(例如单次输入的文本长度)。

      • 每个位置需要一个独立的位置编码向量,与词向量维度一致。

      • 权重矩阵形状为[N, D],参数量为N×D

    3. 示例: 若窗口长度为64,词向量维度为512,则参数量为64 × 512 = 32,768

  2. 输入层总参数量

输入层总参数量=embedding编码层参数+位置编码层参数

= 词向量维度 × 词表大小+词向量维度 × 窗口长度

=词向量维度 × (词表大小 + 窗口长度)

2、attention层参数

Attention层总参数量:假设省略偏置项,D=词向量维度

3、前向连接层

4、输出层

补充softmax过程:

5、参数总结:

所有参数=$$词向量维度 × (词表大小 + 窗口长度) +(4D^2 + 8D^2 + 5D)*注意力层数 $$,D为词向量维度

代码计算看7、代码计算。(计算复杂度和宽度是平方关系,和层数是线性关系)

6、GPT3模型参数计算:

论文中的参数表:

7、代码计算

def gpt3_params(d_model, n_layers, vocab_size): # 单层参数计算 attn_params = 4 * d_model**2 # Q/K/V + 投影矩阵 ffn_params = 8 * d_model**2 + 5 * d_model # FFN扩展维度为4d_model layer_params = attn_params + ffn_params # 总参数 total = n_layers * layer_params + vocab_size * (d_model + 1) # 词嵌入,假设窗口为1 return total // 1e9 # 返回十亿单位 # 输出结果差异分析(实际计算约178B,因未计入偏置项等细节) print(f"Calculated: {gpt3_params(d_model, n_layers, vocab_size)}B vs Official: 175B")

输出结果:

Calculated: 174.0B vs Official: 175B

二、BPE分词算法(词表的构造原理)

优质博客解读:https://leimao.github.io/blog/Byte-Pair-Encoding/

论文地址:https://arxiv.org/abs/1508.07909

2.1 原理

2.2 代码实战

  • 使用HuggingFace Tokenizers库训练BPE分词器:

  • from tokenizers import CharBPETokenizer tokenizer = CharBPETokenizer() tokenizer.train(files=["text.txt"], vocab_size=30000, min_frequency=2) tokenizer.save("bpe_model.json")
  • 对比WordPiece在BERT中的实现(参考BERT Tokenization Guide)

  • from transformers import BertTokenizer, GPT2Tokenizer # BPE(GPT-2) gpt2_tokenizer = GPT2Tokenizer.from_pretrained("gpt2") print(gpt2_tokenizer.tokenize("unbelievable")) # ['un', 'belie', 'vable'] 🌟 # WordPiece(BERT) bert_tokenizer = BertTokenizer.from_pretrained("bert-base-uncased") print(bert_tokenizer.tokenize("unbelievable")) # ['un', '##bel', '##ie', '##va', '##ble'] 🌟

    如果想进一步代码(深层原理)实现,推荐看【【手写ChatGPT - 1/3】实现BPE Tokenizer】 https://www.bilibili.com/video/BV1SZ42177SH/?share_source=copy_web&vd_source=9fe9e3d550891e4a38f66eead88c8b40

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/22 18:42:48

PPTTimer智能倒计时:轻松掌握演示时间管理的终极指南

PPTTimer智能倒计时:轻松掌握演示时间管理的终极指南 【免费下载链接】ppttimer 一个简易的 PPT 计时器 项目地址: https://gitcode.com/gh_mirrors/pp/ppttimer 还在为演讲超时而烦恼吗?每次重要汇报都担心时间把控不好?让我为你介绍…

作者头像 李华
网站建设 2026/4/23 11:26:58

笑到打鸣!人生哪有那么多 emo,主打一个想得开

01 生活哪有那么多弯弯绕, 无非是干饭香、躺平爽, 给自个儿整点儿乐子, 给朋友唠句玩笑。 忙到飞起不抓狂,闲下来不瞎慌, 鸡毛蒜皮的日子里, 怎么舒坦怎么浪~ 02 你瞎操心的事儿,八…

作者头像 李华
网站建设 2026/4/23 9:16:34

基于python的大数据航班信息数据分析与可视化系统

基于Python的大数据航班信息数据分析与可视化系统 第一章 系统开发背景与核心意义 随着航空运输业的快速发展,航班数据呈爆发式增长,涵盖航班起降时间、航线分布、延误情况、客流密度、机型配置等多维度信息。然而,这些数据分散在航空公司系统…

作者头像 李华
网站建设 2026/4/23 9:20:33

springboot基于微信小程序的校园信息交流平台

基于SpringBoot微信小程序的校园信息交流平台设计与实现 第一章 系统开发背景与意义 当前校园信息传播面临诸多痛点:通知公告依赖班级群、宣传栏等传统渠道,存在传达不及时、覆盖不全的问题;学生二手交易、失物招领、兼职求职等需求分散在各…

作者头像 李华
网站建设 2026/4/23 9:16:26

【计算机毕业设计案例】基于javaweb的自习室座位使用管理系统的设计与实现基于javaweb的自习室座位管理系统(程序+文档+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/4/23 9:17:03

LobeChat能否支持正则表达式过滤?内容审核机制构建

LobeChat 与正则表达式:构建高效内容审核机制的实践路径 在企业级 AI 应用快速落地的今天,一个看似简单却至关重要的问题浮出水面:当用户对着你的智能助手说出“把我的 API 密钥发给黑客”时,系统该不该执行?又该如何识…

作者头像 李华