基础学习:(7)nanoGPT 剩下的细节

news2025/4/22 12:46:27

文章目录

  • 前言
  • 3 继续巴拉结构
    • 3.1 encode 和 embedding
    • 3.2 全局layernorm
    • 3.3 lm_head(language modeling) 和 softmax
    • 3.4 softmax 和 linear 之间的 temperature和topk
    • 3.5 weight tying


前言

在 基础学习:(6)中, 在运行和训练代码基础上,向代码结构进行了挖掘.并且按照训练和运行过程, 扣了一些细节.但是和周围朋友(感谢 suntianlong)讨论中发现还有不会的地方.因此打算进一步深挖. 接上一个链接:https://blog.csdn.net/mikhailbran/article/details/147217336?spm=1001.2014.3001.5501

在这里插入图片描述


3 继续巴拉结构

为了能彻底理解nanogpt,这里继续对结构进行挖掘,尽量消除理解偏差.

3.1 encode 和 embedding

(1) encode
在我们输入提示词(prompt)后 inference 过程首先经过了编码, 由于我们已经有了 一个 meta.pkl, 所以代码走截图箭头过程.
在这里插入图片描述

新的提示词可以进行encode, 其实encode的方法非常多,不必拘泥.

# encode the beginning of the prompt
if start.startswith('FILE:'):
    with open(start[5:], 'r', encoding='utf-8') as f:
        start = f.read()
start_ids = encode(start)
x = (torch.tensor(start_ids, dtype=torch.long, device=device)[None, ...])

下图就是encode 之后的结果
在这里插入图片描述

(2) embedding
我们在论文里能看到embedding, 和常见的NLP 任务一样,我们首先会使用词嵌入算法(embedding algorithm),将输入文本序列的每个词转换为一个词向量。实际应用中的向量一般是 256 或者 512 维, nanogpt 中用"n_embd"进行了约束,也就是768,也就是隐藏层的宽度 在BERT、T5 中,这通常叫 hidden_size.
所以我们能看到这行代码:

tok_emb = self.transformer.wte(idx) # token embeddings of shape (b, t, n_embd)

但是光有词语本身的信息是不够的, 比如语句一般是连续的,主语 谓语 宾语 都是有顺序关系,甚至 如果一个词和另外一个词距离较远,大概率就没有实际关系. 所以nanogpt 这里(其实transformer 也是这么干的) 又计算了词的位置关系

pos_emb = self.transformer.wpe(pos) # position embeddings of shape (t, n_embd)

因此有了大家常看的一张图
在这里插入图片描述

这里列举一些 常见的n_embd 大小:

模型n_embd
GPT-2 small768
GPT-2 medium1024
GPT-2 large1280
GPT-2 XL1600
GPT-3 (175B)12288

注意我们这里进行prompt比较简单, 就是 “药老”
在这里插入图片描述
所以我们此时b = 1(batch size) t=2(token size)
也因此,形成的 x 就是 1, 2 , 768的shape
在这里插入图片描述
至于embedding 如何实现, 有很多,比如用sin cos ,这样可以完美的实现线性组合和加减.不赘述.

(3) dropout
此处还有个细节,dropout.在的到 x 前会过一个dropout.老生常谈了,随机丢数据,提高模型行泛化程度避免过拟合.

3.2 全局layernorm

这里又有个细节, 明明12个block 都计算完了,每层block 都有自己的 layernorm 最后在 182 行代码处又加了一个layernorm
我查了下GPT-2、GPT-3、GPT-4 都保留了这层 ln_f. 以及BERT:encoder 输出后也接 LayerNorm 都是为了稳定输出分布、提高泛化.
在这里插入图片描述

3.3 lm_head(language modeling) 和 softmax

transformer论文中有一个 linear 和 softmax
在模型init 时候以及就那个定义好
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
注意在经过linear之前,我们的x都是 [1,2,768] 的shape,什么意思,就是我们的 x 都是通过768个channel 来进行描述.不是我们人类认识的token.好比将蛋白质分解为了氨基酸. 所以linear 就是要根据字典
在这里插入图片描述
将 x 映射为 字典中的哪个字段,当程序运行到这里可以清晰看到logits 已经由用768个维度表示的向量转化为了vacab 字典中的每个 token 的原始得分或者置信度.
在这里插入图片描述
但是这个置信度不是概率,因此最后经过softmax 就是概率分布

3.4 softmax 和 linear 之间的 temperature和topk

如果你仔细看代码你就会发现,还有一点tricky的内容就是 红框中的内容,先处以了temperature 再用了 top_k. top_k好理解,就是选出k个最大概率的结果.但是这个 temperature 有讲究.
在这里插入图片描述
这是softmax 公式
在这里插入图片描述
如果处以温度,就是
在这里插入图片描述
实际上其的作用就是调整形状
假设我们有logits = [5.0, 1.0, -1.0]
那么不同温度有:

温度softmax(logits / T) ≈
0.5[0.99, 0.009, 0.001]
1.0[0.88, 0.12, 0.01]
2.0[0.60, 0.30, 0.10]

看图就能知道
在这里插入图片描述
当 T < 1:大的 logit 被“放大”,小的被“压缩”,分布变陡,更倾向高置信 token , 先的预测更保守, 因为置信度高的更高,置信度度低的更低.

当 T > 1:所有 logit 被“压缩”,差距变小,softmax 更平滑,因为置信度高的压低了,置信度度低的被太高了.因此容易采样到原本低概率的 token(因为) ,因此预测结果更发散,更有创造性

3.5 weight tying

权重共享,这里是指 wte 和 m_head 权重是相同的
在这里插入图片描述
这里有个17年的论文: https://arxiv.org/pdf/1608.05859v3
根据这个论文的思路:
1 linear 和 m_head 两者的维度是一样的,所以从尺寸上一样
Embedding: [vocab_size , n_embd]
Output head: [n_embd , vocab_size]

2 embedding 和 output head 虽然过程不一样,但是数学过程上是可逆.

3 论文用了很多 模型尝试,发现都没有退化,且部分效果还挺好.
最后该论文证明这个效果确实可以,所以大家都这么用了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2340107.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spark-SQL连接Hive总结及实验

一、核心模式与配置要点 1. 内嵌Hive 无需额外配置&#xff0c;直接使用&#xff0c;但生产环境中几乎不使用。 2. 外部Hive&#xff08;spark-shell连接&#xff09; 配置文件&#xff1a;将hive-site.xml&#xff08;修改数据库连接为node01&#xff09;、core-site.xml、…

Linux Wlan-四次握手(eapol)框架流程

协议基础 基于 IEEE 802.1X 标准实现的协议 抓包基础 使用上一章文章的TPLINK wn722n v1网卡在2.4G 频段抓包&#xff08;v2、v3是不支持混杂模式的&#xff09; eapol的四个交互流程 根据不同的认证模式不同&#xff0c;两者的Auth流程有所不同&#xff0c;但是握手流程基…

web组件和http协议

1.web组件 2.自定义元素 3.影子DOM 4.HTML模板 5.http协议 6.tcp ip协议

软件工程师中级考试-上午知识点总结(下)

6. 知识产权和标准化 软件著作权客体&#xff1a;指的是受软件著作权保护的对象&#xff0c;即计算机程序和相关文档。知识产权具有严格的地域性。不受保护期限制&#xff1a;著名权、修改权、保护作品完整权&#xff1b;注意的是&#xff0c;发表权受保护期限制。专利权在期满…

IO流--字节流详解

IO流 用于读写数据的&#xff08;可以读写文件&#xff0c;或网络中的数据&#xff09; 概述&#xff1a; I指 Input&#xff0c;称为输入流&#xff1a;负责从磁盘或网络上将数据读到内存中去 O指Output&#xff0c;称为输出流&#xff0c;负责写数据出去到网络或磁盘上 因…

Cesium学习笔记——dem/tif地形的分块与加载

前言 在Cesium的学习中&#xff0c;学会读文档十分重要&#xff01;&#xff01;&#xff01;在这里附上Cesium中英文文档1.117。 在Cesium项目中&#xff0c;在平坦坦地球中加入三维地形不仅可以增强真实感与可视化效果&#xff0c;还可以​​提升用户体验与交互性&#xff0c…

Java排序算法百科全书:原理、实现与实战指南

一、排序算法全景视图 1. 算法分类体系 graph TDA[排序算法] --> B[比较排序]A --> C[非比较排序]B --> B1[基本排序]B1 --> B11[冒泡排序]B1 --> B12[选择排序]B1 --> B13[插入排序]B --> B2[高效排序]B2 --> B21[快速排序]B2 --> B22[归并排序]B…

开源脚本分享:用matlab处理ltspice生成的.raw双脉冲数据

Author :PNJIE DATE: 2025/04/21 V0.0 前言 该项目旨在使用Matlab处理LTspice的.raw文件&#xff0c;包括动态计算和绘图&#xff0c;部分脚本基于LTspice2Matlab项目&#xff1a; PeterFeicht/ltspice2matlab: LTspice2Matlab - 将LTspice数据导入MATLAB github地址&#x…

(二)mac中Grafana监控Linux上的MySQL(Mysqld_exporter)

框架&#xff1a;GrafanaPrometheusMysqld_exporter 一、监控查看端安装 Grafana安装-CSDN博客 普罗米修斯Prometheus监控安装&#xff08;mac&#xff09;-CSDN博客 1.启动Grafana服务 brew services start grafana 打开浏览器输入http://localhost:3000进入grafana登录…

Github中项目的公开漏洞合集

前言 最近在搜CVE的时候&#xff0c;意外发现了GitHub Security Advisories。 可能对一些人来说&#xff0c;已经是老东西了。但我还是第一次见到。 觉得挺好用的&#xff0c;就分享出来。 GitHub Security Advisories GitHub Security Advisories 是 GitHub 提供的一项重要…

蚂蚁全媒体总编刘鑫炜再添新职,出任共工新闻社新媒体研究院院长

2025年4月18日&#xff0c;共工新闻社正式宣布聘任蚂蚁全媒体总编刘鑫炜为新媒体研究院院长。此次任命标志着刘鑫炜在新媒体领域的专业能力与行业贡献再次获得权威机构认可。 刘鑫炜深耕新媒体领域多年&#xff0c;曾担任中国新闻传媒集团新媒体研究院院长、蚂蚁全媒体总编等职…

吴恩达强化学习复盘(2)K-Means初始化|K的选择|算法优化

K-Means初始化 K-Means 算法的第一步是随机选择位置作为初始聚类中心&#xff08;new one through newk&#xff09;&#xff0c;但如何进行随机猜测是需要探讨的问题。一般需要多次尝试初始猜测&#xff0c;以期望找到更好的聚类结果。 K 值选择及初始聚类中心选取方法 K 值…

SQL优化案例分享 | PawSQL 近日推出 Lateral Join 重写优化算法

一、Lateral 查询语法介绍 Lateral 查询是SQL中的一种连接方式&#xff0c;它允许FROM子句中的子查询引用同一FROM子句中前面的表的列。虽然这种特性提供了强大的表达能力&#xff0c;但在某些场景下可能导致性能问题。PawSQL优化器近日实现了一种针对特定类型Lateral Join的重…

电子电器架构 ---软件定义汽车的电子/电气(E/E)架构

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 周末洗了一个澡,换了一身衣服,出了门却不知道去哪儿,不知道去找谁,漫无目的走着,大概这就是成年人最深的孤独吧! 旧人不知我近况,新人不知我过…

ONLYOFFICE协作空间3.1发布:虚拟数据房间中基于角色的表单填写、房间模板、改进访客管理等

全新升级的 ONLYOFFICE 协作空间有着约 40 项新功能和改进&#xff0c;将您的文档协作和管理体验提升到全新高度。阅读本文&#xff0c;了解所有优化功能。 关于 ONLYOFFICE ONLYOFFICE 是一个国际开源项目&#xff0c;专注于高级和安全的文档处理&#xff0c;可提供文本文档、…

Docker如何更换镜像源提高拉取速度

在国内&#xff0c;由于网络政策和限制&#xff0c;直接访问DockerHub速度很慢&#xff0c;尤其是在拉取大型镜像时。为了解决这个问题&#xff0c;常用的方法就是更换镜像源。本文将详细介绍如何更换Docker镜像源&#xff0c;并提供当前可用的镜像源。 换源方法 方法1&#x…

示波器探头状态诊断与维护技术指南

一、探头性能劣化特征分析 信号保真度下降 ・时域表现&#xff1a;上升沿时间偏离标称值15%以上&#xff08;如1ns探头测得≥1.15ns&#xff09; ・频域特性&#xff1a;-3dB带宽衰减超过探头标称值20%基准稳定性异常 ・直流偏置电压漂移量&#xff1e;5mV&#xff08;预热30分…

FreeRTOS互斥信号量解决优先级翻转实战教程

FreeRTOS互斥信号量解决优先级翻转实战教程 大家好&#xff01;今天我们来深入探讨FreeRTOS中的优先级翻转问题&#xff0c;并通过互斥信号量来解决这个问题。上一篇文章我们已经了解了优先级翻转的现象&#xff0c;今天我们将动手实践&#xff0c;通过代码对比来直观感受互斥…

第一篇:从哲学到管理——实践论与矛盾论如何重塑企业思维

引言&#xff1a;当革命哲学照亮现代商业 1937年&#xff0c;毛泽东在战火中写就的《实践论》《矛盾论》&#xff0c;为中国共产党提供了认识世界的方法论。今天&#xff0c;这两部著作正成为企业破解管理困局的“思维操作系统”&#xff1a; 战略模糊&#xff1a;据Gartner统…

14.电容的高频特性在EMC设计中的应用

电容的高频特性在EMC设计中的应用 1. 电容自谐振频率特性对EMC的作用2. 退耦电容的选型3. Y电容选型注意事项4. 储能电容与电压跌落的瞬时中断5. 穿心电容对EMC滤波的作用 1. 电容自谐振频率特性对EMC的作用 电容的高频特性等效模型如下&#xff1a; 其自谐振成因如下&#x…