news 2026/2/1 14:51:16

大模型面试必备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/1/30 17:39:10

山东港口科技借助 TDengine 构建智慧港口“数据基石”

作者:山东港口, 张艳明 小T导读:在智慧港口的建设过程中,面对海量物联网设备产生的时序数据(如设备状态、能耗、作业效率等)的高效接入与实时分析需求,山东港口科技选择采用 TDengine TSDB 时序数据库作为…

作者头像 李华
网站建设 2026/1/29 18:49:43

如何将LobeChat与自有GPU资源结合实现低成本高并发?

如何将LobeChat与自有GPU资源结合实现低成本高并发? 在AI应用从“能用”迈向“好用”的今天,越来越多企业开始重新审视自己的技术选型:当一个客服机器人每天要处理上千次对话时,调用OpenAI这类云端API的成本是否可持续&#xff1f…

作者头像 李华
网站建设 2026/2/1 0:12:49

论文AI率爆表?实测这款降AI工具,10分钟把AIGC从95%降到安全线以内!

✅ 一文看懂如何降低ai率、稳过论文检测 后台不少人问我: “论文的AI率太高怎么办?导师说要降低ai率,但我试了好几个免费降ai率工具都不太行。” 我当时也焦虑过。首稿检测AI率95%,直接被退回来。后来陆续试了十几款论文降aigc、a…

作者头像 李华
网站建设 2026/1/29 16:19:59

ubuntu编译安装FreeRDP Version 3.x.x 版本

一次性把依赖装齐 sudo apt install -y \build-essential git cmake ninja-build pkg-config \libssl-dev libx11-dev libxext-dev libxinerama-dev \libxcursor-dev libxdamage-dev libxv-dev libxkbfile-dev \libasound2-dev libcups2-dev libpulse-dev libjpeg-dev \libusb-…

作者头像 李华
网站建设 2026/1/30 13:41:24

基于python的宠物管理系统

基于Python的宠物管理系统设计与实现 一、系统开发背景与核心价值 在宠物经济快速发展与养宠人群日益庞大的背景下,传统宠物管理模式面临诸多痛点:宠物档案依赖纸质记录或零散电子文档,查询统计不便;疫苗接种、体检、驱虫等健康记…

作者头像 李华
网站建设 2026/1/30 14:09:20

【计算机毕业设计案例】基于java的小零食销售系统的设计与实现基于javaweb的小零食销售系统的设计与实现(程序+文档+讲解+定制)

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

作者头像 李华