无需写代码能力,手搓最简单BabyGPT模型:前特斯拉AI总监新作

我们知道,OpenAI 的 GPT 系列通过大规模和预训练的方式打开了人工智能的新时代,然而对于大多数研究者来说,语言大模型(LLM)因为体量和算力需求而显得高不可攀。在技术向上发展的同时,人们也一直在探索「最简」的 GPT 模式。

近日,特斯拉前 AI 总监,刚刚回归 OpenAI 的 Andrej Karpathy 介绍了一种最简 GPT 的玩法,或许能为更多人了解这种流行 AI 模型背后的技术带来帮助。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

无需写代码能力,手搓最简单BabyGPT模型:前特斯拉AI总监新作

是的,这是一个带有两个 token 0/1 和上下文长度为 3 的极简 GPT,将其视为有限状态马尔可夫链。它在序列「111101111011110」上训练了 50 次迭代,Transformer 的参数和架构修改了箭头上的概率。

例如我们可以看到:

在训练数据中,状态 101 确定性地转换为 011,因此该转换的概率变得更高 (79%)。但不接近于 100%,因为这里只做了 50 步优化。状态 111 以 50% 的概率分别进入 111 和 110,模型几乎已学会了(45%、55%)。在训练期间从未遇到过像 000 这样的状态,但具有相对尖锐的转换概率,例如 73% 转到 001。这是 Transformer 归纳偏差的结果。你可能会想这是 50%,除了在实际部署中几乎每个输入序列都是唯一的,而不是逐字地出现在训练数据中。

通过简化,Karpathy 已让 GPT 模型变得易于可视化,让你可以直观地了解整个系统。

你可以在这里尝试它:https://colab.research.google.com/drive/1SiF0KZJp75rUeetKOWqpsA8clmHP6jMg?usp=sharing

面试猫 面试猫

AI面试助手,在线面试神器,助你轻松拿Offer

面试猫 352 查看详情 面试猫

实际上,即使是 GPT 的最初版本,模型的体量很相当可观:在 2018 年,OpenAI 发布了第一代 GPT 模型,从论文《Improving Language Understanding by Generative Pre-Training》可以了解到,其采用了 12 层的 Transformer Decoder 结构,使用约 5GB 无监督文本数据进行训练。

但如果将其概念简化,GPT 是一种神经网络,它采用一些离散 token 序列并预测序列中下一个 token 的概率。例如,如果只有两个标记 0 和 1,那么一个很小的二进制 GPT 可以例如告诉我们:

[0,1,0] ---> GPT ---> [P (0) = 20%, P (1) = 80%]

在这里,GPT 采用位序列 [0,1,0],并根据当前的参数设置,预测下一个为 1 的可能性为 80%。重要的是,默认情况下 GPT 的上下文长度是有限的。如果上下文长度为 3,那么它们在输入时最多只能使用 3 个 token。在上面的例子中,如果我们抛出一枚有偏差的硬币并采样 1 确实应该是下一个,那么我们将从原始状态 [0,1,0] 转换到新状态 [1,0,1]。我们在右侧添加了新位 (1),并通过丢弃最左边的位 (0) 将序列截断为上下文长度 3,然后可以一遍又一遍地重复这个过程以在状态之间转换。

很明显,GPT 是一个有限状态马尔可夫链:有一组有限的状态和它们之间的概率转移箭头。每个状态都由 GPT 输入处 token 的特定设置定义(例如 [0,1,0])。我们可以以一定的概率将其转换到新状态,如 [1,0,1]。让我们详细看看它是如何工作的:

# hyperparameters for our GPT# vocab size is 2, so we only have two possible tokens: 0,1vocab_size = 2# context length is 3, so we take 3 bits to predict the next bit probabilitycontext_length = 3

GPT 神经网络的输入是长度为 context_length 的 token 序列。这些 token 是离散的,因此状态空间很简单:

print ('state space (for this exercise) = ', vocab_size ** context_length)# state space (for this exercise) = 8

细节:准确来说,GPT 可以采用从 1 到 context_length 的任意数量的 token。因此如果上下文长度为 3,原则上我们可以在尝试预测下一个 token 时输入 1 个、2 个或 3 个 token。这里我们忽略这一点并假设上下文长度已「最大化」,只是为了简化下面的一些代码,但这一点值得牢记。

print ('actual state space (in reality) = ', sum (vocab_size ** i for i in range (1, context_length+1)))# actual state space (in reality) = 14

我们现在要在 PyTorch 中定义一个 GPT。出于本笔记本的目的,你无需理解任何此代码。

现在让我们构建 GPT 吧:

config = GPTConfig (block_size = context_length,vocab_size = vocab_size,n_layer = 4,n_head = 4,n_embd = 16,bias = False,)gpt = GPT (config)

对于这个笔记本你不必担心 n_layer、n_head、n_embd、bias,这些只是实现 GPT 的 Transformer 神经网络的一些超参数。

GPT 的参数(12656 个)是随机初始化的,它们参数化了状态之间的转移概率。如果你平滑地更改这些参数,就会平滑地影响状态之间的转换概率。

现在让我们试一试随机初始化的 GPT。让我们获取上下文长度为 3 的小型二进制 GPT 的所有可能输入:

def all_possible (n, k):# return all possible lists of k elements, each in range of [0,n)if k == 0:yield []else:for i in range (n):for c in all_possible (n, k - 1):yield [i] + clist (all_possible (vocab_size, context_length))
[[0, 0, 0], [0, 0, 1], [0, 1, 0], [0, 1, 1], [1, 0, 0], [1, 0, 1], [1, 1, 0], [1, 1, 1]]

这是 GPT 可能处于的 8 种可能状态。让我们对这些可能的标记序列中的每一个运行 GPT,并获取序列中下一个标记的概率,并绘制为可视化程度比较高的图形:

# we'll use graphviz for pretty plotting the current state of the GPTfrom graphviz import Digraphdef plot_model ():dot = Digraph (comment='Baby GPT', engine='circo')for xi in all_possible (gpt.config.vocab_size, gpt.config.block_size):# forward the GPT and get probabilities for next tokenx = torch.tensor (xi, dtype=torch.long)[None, ...] # turn the list into a torch tensor and add a batch dimensionlogits = gpt (x) # forward the gpt neural netprobs = nn.functional.softmax (logits, dim=-1) # get the probabilitiesy = probs [0].tolist () # remove the batch dimension and unpack the tensor into simple listprint (f"input {xi} ---> {y}")# also build up the transition graph for plotting latercurrent_node_signature = "".join (str (d) for d in xi)dot.node (current_node_signature)for t in range (gpt.config.vocab_size):next_node = xi [1:] + [t] # crop the context and append the next characternext_node_signature = "".join (str (d) for d in next_node)p = y [t]label=f"{t}({p*100:.0f}%)"dot.edge (current_node_signature, next_node_signature, label=label)return dotplot_model ()
input [0, 0, 0] ---> [0.4963349997997284, 0.5036649107933044] input [0, 0, 1] ---> [0.4515703618526459, 0.5484296679496765] input [0, 1, 0] ---> [0.49648362398147583, 0.5035163760185242] input [0, 1, 1] ---> [0.45181113481521606, 0.5481888651847839] input [1, 0, 0] ---> [0.4961162209510803, 0.5038837194442749] input [1, 0, 1] ---> [0.4517717957496643, 0.5482282042503357] input [1, 1, 0] ---> [0.4962802827358246, 0.5037197470664978] input [1, 1, 1] ---> [0.4520467519760132, 0.5479532480239868]

我们看到了 8 个状态,以及连接它们的概率箭头。因为有 2 个可能的标记,所以每个节点有 2 个可能的箭头。请注意,在初始化时,这些概率中的大多数都是统一的(在本例中为 50%),这很好而且很理想,因为我们甚至根本没有训练模型。

下面开始训练:

# let's train our baby GPT on this sequenceseq = list (map (int, "111101111011110"))seq
[1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0]
# convert the sequence to a tensor holding all the individual examples in that sequenceX, Y = [], []# iterate over the sequence and grab every consecutive 3 bits# the correct label for what's next is the next bit at each positionfor i in range (len (seq) - context_length):X.append (seq [i:i+context_length])Y.append (seq [i+context_length])print (f"example {i+1:2d}: {X [-1]} --> {Y [-1]}")X = torch.tensor (X, dtype=torch.long)Y = torch.tensor (Y, dtype=torch.long)print (X.shape, Y.shape)

我们可以看到在那个序列中有 12 个示例。现在让我们训练它:

# init a GPT and the optimizertorch.manual_seed (1337)gpt = GPT (config)optimizer = torch.optim.AdamW (gpt.parameters (), lr=1e-3, weight_decay=1e-1)
# train the GPT for some number of iterationsfor i in range (50):logits = gpt (X)loss = F.cross_entropy (logits, Y)loss.backward ()optimizer.step ()optimizer.zero_grad ()print (i, loss.item ())
print ("Training data sequence, as a reminder:", seq)plot_model ()

我们没有得到这些箭头的准确 100% 或 50% 的概率,因为网络没有经过充分训练,但如果继续训练,你会期望接近。

请注意一些其他有趣的事情:一些从未出现在训练数据中的状态(例如 000 或 100)对于接下来应该出现的 token 有很大的概率。如果在训练期间从未遇到过这些状态,它们的出站箭头不应该是 50% 左右吗?这看起来是个错误,但实际上是可取的,因为在部署期间的真实应用场景中,几乎每个 GPT 的测试输入都是训练期间从未见过的输入。我们依靠 GPT 的内部结构(及其「归纳偏差」)来适当地执行泛化。

大小比较:

GPT-2 有 50257 个 token 和 2048 个 token 的上下文长度。所以 `log2 (50,257) * 2048 = 每个状态 31,984 位 = 3,998 kB。这足以实现量变。GPT-3 的上下文长度为 4096,因此需要 8kB 的内存;大约相当于 Atari 800。GPT-4 最多 32K 个 token,所以大约 64kB,即 Commodore64。I/O 设备:一旦开始包含连接到外部世界的输入设备,所有有限状态机分析就会崩溃。在 GPT 领域,这将是任何一种外部工具的使用,例如必应搜索能够运行检索查询以获取外部信息并将其合并为输入。

Andrej Karpathy 是 OpenAI 的创始成员和研究科学家。但在 OpenAI 成立一年多后,Karpathy 便接受了马斯克的邀请,加入了特斯拉。在特斯拉工作的五年里,他一手促成了 Autopilot 的开发。这项技术对于特斯拉的完全自动驾驶系统 FSD 至关重要,也是马斯克针对 Model S、Cybertruck 等车型的卖点之一。

今年 2 月,在 ChatGPT 火热的背景下,Karpathy 回归 OpenAI,立志构建现实世界的 JARVIS 系统。

无需写代码能力,手搓最简单BabyGPT模型:前特斯拉AI总监新作

最近一段时间,Karpathy 给大家贡献了很多学习材料,包括详解反向传播的课程 、重写的 minGPT 库、从零开始构建 GPT 模型的完整教程等。

以上就是无需写代码能力,手搓最简单BabyGPT模型:前特斯拉AI总监新作的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/834638.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月27日 09:38:55
下一篇 2025年11月27日 09:44:21

相关推荐

  • 欧易App官方下载 欧易OKX交易所安装地址及下载教程

    欧易OKX是全球领先的数字资产交易平台,提供BTC、ETH等数百种资产交易服务,用户可通过官网注册账户并完成KYC认证,下载最新v6.5.0版App后按指引安装使用,支持现货、合约与理财功能,同时推荐币安、火币等平台,强调安全防护与风险防范。欧易App官方下载 欧易OKX交易所安装地址及下载教程 欧…

    2025年12月11日 好文分享
    000
  • 欧易app下载: 官方版下载指南与安全安装教程

    欧易OKX平台核心概览 欧易okx是一个全球化的数字资产服务平台,为用户提供广泛的数字资产服务。平台支持包括btc、eth在内的多种主流和新兴数字资产的交易与管理。欧易okx在技术架构、风控体系和运营流程上构建了坚实的安全防护,致力于为用户提供一个稳定、可靠的交易环境。本文将为您提供欧易okx的官方…

    2025年12月11日 好文分享
    000
  • 火币HTX交易平台网页版入口 火币官方手机APP下载地址

    火币htx交易平台(原 huobi)是全球知名的数字资产交易平台之一,服务覆盖现货、合约、理财等多种功能。对于刚入门币圈的新手来说,通过正规渠道访问htx官网入口并下载官方app,是保障账户与资金安全的重要起点。本文将为您一一介绍htx官网访问、app下载安装及注册流程。 HTX官网访问入口 ① 打…

    2025年12月11日
    000
  • 币安交易所官网入口 币安交易所app官方手机版下载安装详情

    币安(Binance)交易所官方网站与最新APP下载指南 币安(binance)是全球范围内广受欢迎的数字资产交易平台,为用户提供广泛的数字资产服务。平台支持包括btc、eth在内的数百种主流和新兴数字资产的交易。币安以其强大的技术实力、多层次的安全防护体系和丰富的综合功能,构建了一个稳定可靠的交易…

    2025年12月11日 好文分享
    000
  • 什么是Chainlink (LINK)币?值得长期持有吗?LINK投资价值与2025年价格预测

    Chainlink是去中心化预言机网络,通过安全连接链下数据与智能合约,支撑DeFi、RWA和跨链互操作性发展,其LINK代币因真实需求、质押机制及CCIP技术推动,长期价值显著,2025年若技术落地顺利,在牛市中有望达80至150美元区间。 Chainlink是一个去中心化预言机网络,其核心使命是…

    2025年12月11日
    000
  • 哪些币是稳定币?稳定币的作用详解?类型分类指南

    稳定币是数字资产领域的关键基础设施,通过锚定法定货币或商品实现价格稳定,结合了传统金融的稳定性与区块链的高效性。主流稳定币包括中心化的USDT、USDC及去中心化的DAI,分别依赖法币储备、数字资产抵押或算法调节维持价值。它们在市场中发挥着避险工具、交易媒介、连接现实与数字世界的桥梁以及DeFi生态…

    2025年12月11日
    000
  • 什么是稳定币?十大主流稳定币排名一览

    稳定币是价值锚定法定货币的加密资产,通过1:1美元挂钩机制实现价格稳定,主要分为法定抵押、加密抵押和算法型三类,其中USDT、USDC、DAI等十大主流稳定币按市值排名,广泛应用于交易、DeFi及支付场景,成为连接传统金融与数字资产的关键桥梁。 什么是稳定币? 在瞬息万变的数字资产世界里,价格的剧烈…

    2025年12月11日
    000
  • Cardano (ADA) 深度剖析:学术派公链的缓慢之路,2025年能否迎来爆发?

    卡尔达诺以严谨的学术研究和分层架构确保安全与可持续性,虽因发展缓慢错失先机,生态规模落后于主流公链,但其Ouroboros共识机制和高安全性奠定长期基础;2025年Voltaire治理时代开启、Hydra扩容方案落地及新兴市场拓展将成为关键增长催化剂。 卡尔达诺(ADA)作为知名的“学术派”公链,始…

    2025年12月11日
    000
  • 稳定币赛道潜力无限!十大潜力稳定币项目盘点

    稳定币赛道潜力无限,DAI、FRAX、LUSD等十大项目各具创新优势,涵盖去中心化、混合机制与合规入场等多种路径,推动加密与传统金融融合。 稳定币赛道潜力无限!十大潜力稳定币项目盘点 稳定币作为连接加密世界与传统金融世界的桥梁,其重要性不言而喻。它们不仅为数字资产市场提供了必要的流动性和价值尺度,也…

    2025年12月11日
    000
  • 比特币的基石是什么石头?比特币的基石是什么东西?

    比特币的基石是哈希函数与区块链协议,二者保障其安全与去中心化;而“石头”比喻源自雅浦岛雷石,象征共识价值超越物理形态。 “基石”一词在技术语境中指代支撑比特币系统的核心要素,而“石头”则可能暗示历史或象征性比喻。以下从两个维度进行精确阐述,确保分析基于可靠的技术与历史视角。 1. 技术层面的基石:哈…

    2025年12月11日
    000
  • 一文了解币圈:比特币的影响范围有哪些?

    比特币已成为重塑金融、技术、能源和地缘政治的结构性力量。首先,现货ETF获批推动机构资金涌入,提升市场流动性,使其被视为“数字黄金”并纳入资产配置;其次,闪电网络与智能合约扩展了支付与DeFi应用,跨链技术增强生态互联;再次,挖转向可再生能源,并向AI算力服务转型,优化能源利用与产业模式;最后,各国…

    2025年12月11日
    000
  • 稳定币公链生态是什么?为何备受关注?支持跨链转移?

    稳定币公链生态是专为稳定币高效流转设计的区块链网络及其应用体系,它通过极致降本增效、简化用户体验和专注支付金融场景,推动稳定币成为日常支付工具,并依赖跨链桥等互操作技术实现多链资产流动,以构建开放的下一代金融基础设施。 稳定币公链生态: 定义、价值与未来 在数字资产领域,技术的迭代和应用场景的拓宽总…

    2025年12月11日
    000
  • TNSR是什么币?怎么买?未来前景怎么样?

    TNSR是Tensor协议的治理代币,用于社区投票与激励;可通过中心化平台或Solana链上DApp兑换,操作时需核对交易细节并注意安全。 欧易官网: 欧易官方app: 币安官网: 币安官方app: gate.io官网: gate.io官方app: TNSR是Tensor协议的治理代币。Tensor…

    2025年12月11日
    000
  • Gate交易所官方注册入口 gate.io登录网页版地址

    gate交易所官方注册入口 gate.io登录网页版地址在哪里?这是不少网友都关注的,接下来由php小编为大家带来gate交易所官方注册入口及登录网页版地址,感兴趣的网友一起随小编来瞧瞧吧! Gate交易所官网入口: Gate交易所官方APP下载: 平台账户注册与登录流程 1、进入官方网站后点击页面…

    2025年12月11日
    000
  • 什么是稳定币?2025市值前五稳定币盘点

    稳定币是价值与外部资产挂钩的加密货币,旨在解决价格波动问题。主要分为三类:由法币抵押的如USDT、USDC,由加密资产超额抵押的如DAI,以及通过算法调节供应量的算法稳定币。其中USDT因流动性强预计2025年仍居首位,USDC凭借合规优势稳居第二,DAI作为去中心化代表在DeFi中不可或缺,FDU…

    2025年12月11日
    000
  • 稳定币有哪些类型?稳定币运作原理剖析

    稳定币是连接传统金融与数字世界的桥梁,通过锚定法定货币或资产实现价值稳定,主要分为三类:法定货币抵押型(如USDT)依赖1:1储备,稳定性高但中心化风险突出;加密资产抵押型(如DAI)通过超额抵押和智能合约实现去中心化,但资本效率低;算法型稳定币依靠算法调节供需,理论上高效且去中心化,但机制复杂、易…

    2025年12月11日
    000
  • OKX链Web3入口 欧易链应用v6.144APP官方获取方式

    OKX 链 Web3 入口 %ignore_a_1%链应用 v6.144 官方获取方式 okx 链(okx chain) 作为欧易推出的去中心化基础设施,为 web3 应用提供高性能、公链生态支持,涵盖 dex、链上钱 包、跨链服务及多种 defi 应用。同时,okx 生态可无缝连接 btc、eth…

    2025年12月11日
    000
  • 2025年欧易怎么买数字货币?欧易买USDT简易教程

    首先完成账户注册与身份认证,进入欧易C2C交易区后选择购买USDT,筛选信誉良好的商家并下单,按要求支付并确认付款,待商家释放资产后即可在账户中查看到账的USDT。 欧易官网: 欧易官方app: 在欧易平台获取数字资产,通常通过其C2C交易区进行。用户可在此区域与商家进行点对点交易,以购入USDT等…

    2025年12月11日
    000
  • USDT与美元不完全等值:揭秘汇率波动原因

    USDT价格波动主要受市场供需、储备透明度、平台流动性及监管政策影响。当市场需求激增或供应过剩时,价格出现溢价或折价;储备资产若缺乏透明度或足额支持,会削弱信任导致脱钩;不同交易平台因流动性差异产生价差;宏观环境变化与监管政策调整也会影响市场信心与资金流向,进而引发价格波动。 欧易官网: 欧易官方a…

    2025年12月11日
    000
  • 欧易交易所手续费怎么算?欧易交易所安全吗?

    欧易交易手续费根据用户等级和交易类型(现货、合约)区分挂单吃单,资金费用由多空方互付;安全性通过PoR验证和2FA等措施保障。 欧易官网: 欧易官方app: 欧易(OKX)的交易手续费依据用户等级与交易类型而定,其安全性则由多重技术和制度保障。了解这两个方面是用户进行交易决策的基础。 一、现货交易手…

    2025年12月11日
    000

发表回复

登录后才能评论
关注微信