很多人能顺口说出 ChatGPT、DeepSeek、豆包这些名字,也能感觉到大模型在训练和推理,但一问 Transformer 的编码器/解码器、BERT 的掩码预测和 GPT 的自回归生成,就开始分不清。这篇就用 TaoToken 配一条 Codex 兼容通道,把架构问题拆开讲。先去 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content=codex_arch 创建 Key,再把 Codex 的 Base URL 填成 https://taotoken.net/api。之后把“BERT 为什么只保留编码器、GPT 为什么只保留解码器”抛给 Codex,让它在对话里按架构图重讲一遍;TaoToken 只转发请求,Token 消耗和模型选择都在控制台里看清楚。这样不用在官方额度、多把 Key、切模型之间来回折腾,也能把 LLM、Transformer、BERT、预训练、微调这几个词串成一条线。
1. 从“能说出 ChatGPT”到分不清 BERT 与 GPT:先把深度学习和 LLM 的底补上
1.1 深度学习、机器学习与 LLM 的关系
原文开头说,每个人都能说出一二三点,比如 OpenAI、ChatGPT、DeepSeek、豆包、Manus。但要把这些名字背后的技术链路讲顺,顺序通常是:人工智能 → 机器学习 → 深度学习 → 神经网络 → 大语言模型。深度学习是机器学习和 AI 里的一个分支,重点在神经网络。它让大语言模型能用海量文本训练,捕捉上下文和语言细节。翻译、情感分析、问答这些自然语言处理任务,性能提升都跟这个有关。
LLM 是一种用于理解、生成、响应人类语言文本的神经网络,属于深度神经网络。它通过大规模文本数据训练,训练资料可能覆盖互联网上大部分公开文本。当我们说“理解”,实际指它能处理和生成看起来连贯、符合语境的文本,不是说它有人类意识。这里的“大”既指训练数据集大,也指参数规模大,常常是数百亿甚至数千亿个可调整权重。训练时这些权重被不断优化,用来预测文本序列里的下一个词。
下一词预测这个任务利用了语言有顺序的特性,让模型学到上下文、结构和关系。因为能生成文本,LLM 也常被归到生成式 AI,也就是 GenAI。如今大多数 LLM 用 PyTorch 这类深度学习库实现。针对特定领域或任务的定制模型,性能往往优于通用模型。数据隐私是定制的一个优势:公司可能不愿意把敏感数据交给第三方大模型提供商;如果模型够小,还能部署到笔记本和手机上,减少延迟和服务器成本,也让开发者控制更新和修改。这些概念听起来多,但用 Codex 串一遍会快很多。
1.2 为什么“大”不只在参数量,还在数据与 Token
原文提到大语言模型的构建通常包括预训练和微调两个阶段。预训练是初始阶段,在大规模、多样化的数据集上训练,形成全面的语言理解能力。预训练后的模型常被称为基础模型。ChatGPT 的前身 GPT-3 就是一个典型例子,它能做文本补全,也能靠少量示例完成有限的新任务。微调阶段则在规模更小的特定任务或领域数据集上做针对性训练。
最流行的两类微调是指令微调和分类任务微调。指令微调的数据集由“指令−答案”对组成,比如翻译任务里的原文和正确翻译文本;分类任务微调的数据集由文本和类别标签组成,比如邮件文本和被标记为“垃圾邮件”或“非垃圾邮件”。这些词如果只靠背,很容易混。把它们放进一个具体问题:为什么基础模型补全句子很顺,但直接问它“帮我分类这封邮件”却不一定听话?原因就在预训练目标和微调目标的差异。
下一词预测让模型学会语言结构,但“按指令行动”和“输出类别标签”是后来用标注数据教出来的。Codex 在这时可以当一个“复述器”:你把原文段落贴给它,让它用更短的话重讲,再让它举一个翻译指令微调和一封邮件分类微调的例子。你检查它的例子是否偏离定义,偏离了就继续追问。这个过程消耗的是 Token,TaoToken 只负责把请求转到你选的模型上,模型能力还是来自背后模型本身。
1.3 用 Codex 通道把概念问成自己的话
很多人卡住不是因为资料少,而是资料太散。原文后面还列了学习阶段,从初阶应用、高阶应用、模型训练到商业闭环。这个路线本身没错,但对已经会用 AI 编程工具的人来说,更快的办法是把每个阶段的关键词拆成问题,让 Codex 按你的基础重讲。比如第一轮只问 LLM、Transformer、BERT、预训练、微调这五个词的关系;第二轮追问编码器和解码器的分工;第三轮把 BERT 的掩码预测和 GPT 的自回归生成放在一起对比。
每轮都要求 Codex 给出原文里的定位,比如“这一段对应 Transformer 架构介绍”。如果它只给结论不给推导,就让它画出文本版架构图:输入文本 → 分词 → 编码器 → 向量表示 → 解码器 → 输出文本。这里先不用急着配通道,你可以先打开 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content=codex_arch 把 Key 建好,后面配 Codex 时会用到。建 Key 这一步对应原文里“学习资料领取”的位置,只是这里不领资料,而是拿到一个能走统一 API 的凭据。
2. 什么是大语言模型:预训练、微调与 Codex 的 config.toml
2.1 预训练与微调两个阶段
原文把预训练和微调分得很清楚:预训练是模型训练的初始阶段,在海量、多样化的数据集上跑,目标是形成全面的语言理解能力。预训练后的大语言模型通常叫基础模型。GPT-3 就是 ChatGPT 的前身之一,它擅长文本补全,也能在少量示例下完成新任务。微调则是在更小的、带标注的、面向特定任务或领域的数据集上继续训练,让模型更贴合具体场景。
下一词预测任务采用自监督学习,这是一种自我标记的方法。不需要专门为训练数据收集标签,而是利用数据本身的结构:把句子或文档中的下一个词当作预测标签。因为标签可以“动态”生成,所以能利用大量无标注文本训练大语言模型。这一点直接影响你对 Token 的理解:预训练看的是海量词元,微调看的是少量高质量样本。原文也提到,预训练 GPT-3 的云计算费用估计高达 460 万美元,模型仅在 3000 亿个词元上训练。这个数字放到今天看依然能说明一件事:预训练不是普通开发者随随便便就能复现的,微调才是更现实的入口。
微调的价值在于,它可以用相对较小的数据集让基础模型适应特定任务,减少计算资源,同时提升特定任务上的表现。在自定义数据集上微调的大语言模型,能够在特定任务上超过通用大语言模型。对应到 Codex 的用法:你不需要自己训练模型,只需要把架构问题拆成明确指令,让模型在对话里重讲。你要控制的是模型 ID、Token 用量和请求通道,而不是从头训一个 BERT 或 GPT。
2.2 在 ~/.codex/config.toml 里配 TaoToken 兼容通道
打开 TaoToken 注册并创建 API Key,复制出来先放在手边。Codex 的配置放在~/.codex/config.toml。不要把 Claude Code 的ANTHROPIC_*环境变量套过来,Codex 用的是自己的 provider 配置。最小可用配置如下:
model = "YOUR_MODEL_ID" model_provider = "taotoken" [model_providers.taotoken] name = "TaoToken" base_url = "https://taotoken.net/api" env_key = "OPENAI_API_KEY"然后在 shell 里设置 Key:
export OPENAI_API_KEY=YOUR_API_KEY这里的YOUR_MODEL_ID不是固定值,要以 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content=codex_arch 模型广场当时列表为准。不要自己拼一个带日期后缀的模型名,也不要拿官方页面里的旧名字硬填。base_url写成https://taotoken.net/api,末尾不要加/v1,否则请求路径可能重复。env_key写OPENAI_API_KEY,你 shell 里 export 的变量名必须和它一致。保存后重开终端,让环境变量生效。
2.3 把“基础模型和指令微调差在哪”抛给 Codex
配置改完先别急着问架构大问题,用一个短问题验证通道。可以在 Codex 里输入:
用三句话解释基础模型和指令微调的区别,并各举一个例子。如果 Codex 能正常回答,说明 Base URL、Key 和模型 ID 至少有一组是通的。如果它报认证错误,先回到env_key和export那一步对一遍。接着再问:
结合预训练和微调两个阶段,解释为什么 GPT-3 能补全文本,但不一定直接听懂“帮我分类邮件”这种指令。这个问题的好处是它紧扣原文,不靠外部资料。你可以把 Codex 的回答和原文里的“指令微调、分类任务微调”对照。它如果说“预训练已经教会所有任务”,那就让它重新读一遍原文段落再答。这个过程里,TaoToken 只做请求转发,真正消耗的是你选的模型 Token,所以模型 ID 选得越准,回答越贴近你要的架构细节。
3. Transformer 编码器/解码器:BERT 掩码预测和 GPT 自回归的根
3.1 自注意力机制与编码器解码器分工
原文说 Transformer 架构最早来自谷歌 2017 年的论文《Attention Is All You Need》,最初是为机器翻译任务开发的。它由两个子模块构成:编码器和解码器。编码器处理输入文本,把文本编码成一系列数值表示或向量,用来捕捉输入的上下文信息。解码器接收这些编码向量,再生成输出文本。以翻译任务为例,编码器把源语言文本编码成向量,解码器解码这些向量,生成目标语言文本。编码器和解码器都由多层组成,这些层通过自注意力机制连接。
自注意力机制允许模型衡量序列中不同单词或词元之间的相对重要性。它让模型能捕捉长距离依赖和上下文关系,从而生成更连贯、更符合上下文的输出。可以把它想象成给一篇文章做索引:编码器先标出每个词和其他词的关系,解码器再根据这些关系写下一篇译文。没有自注意力,长句子里的指代和语序会很难处理。Codex 在解释这一段时,经常会把“注意力”说成“权重”,你可以让它用“查询、键、值”三个词重新描述一遍,再看它有没有漏掉“相对重要性”这个核心。
3.2 BERT 为什么只保留编码器,GPT 为什么只保留解码器
BERT 基于原始 Transformer 的编码器模块构建,训练方法和 GPT 不同。GPT 主要用于生成任务,BERT 及其变体专注于掩码预测,也就是预测给定句子中被掩码的词。GPT 侧重原始 Transformer 架构的解码器部分,主要用于处理生成文本的任务,包括机器翻译、文本摘要、小说写作、代码编写等。GPT 的通用架构比原始 Transformer 更简洁,只包含解码器,不包含编码器。像 GPT 这样的解码器模型通过逐词预测生成文本,因此被认为是一种自回归模型。自回归模型把之前的输出作为未来预测的输入。原文还提到 GPT-3 总共有 96 层 Transformer 和 1750 亿个参数。
为什么 BERT 只保留编码器?因为它不需要从左到右逐词生成,它要做的是看见整句的双向上下文,然后预测被遮住的词。编码器天然适合做这种“看全句、填空白”的任务。为什么 GPT 只保留解码器?因为它要逐词生成,每一步只能看左边已经生成的词,不能提前看到右边。解码器加上掩码自注意力,正好实现这种自回归生成。原始 Transformer 是编码器加解码器,为翻译而生;GPT 用更大、更简单的纯解码器架构,专注预测下一个词,但也能执行翻译任务。模型能完成未经明确训练的任务,这种能力叫涌现。它不是训练时被明确教会的,而是广泛接触多语言数据和各种上下文后的自然结果。零样本学习指没有特定示例也能泛化到新任务,少样本学习指从用户给的少量示例里学习。这些词和 BERT、GPT 的差异放在一起,就容易理解了。
3.3 用 Codex 按架构图重讲一遍并验证
现在把核心问题抛给 Codex:
请用编码器和解码器的分工,解释 BERT 为什么只保留编码器、GPT 为什么只保留解码器。 要求: 1. 各给一个训练目标; 2. 画出文本版架构图; 3. 指出 BERT 和 GPT 在“能否看到右侧上下文”上的差异; 4. 最后用一句话总结预训练和微调在这个差异里的位置。你检查回答时看三点。第一,BERT 是否强调双向上下文和掩码预测,而不是直接生成流畅长文。第二,GPT 是否强调自回归和下一词预测,把之前的输出作为未来输入。第三,它有没有把“编码器只能编码、解码器只能解码”说死。如果它把 BERT 说成能直接续写小说,就让它重新读原文里 BERT 和 GPT 的对比段。验证通道是否正常,可以打开 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content=codex_arch 里的模型对话,用同一把 Key 发一条测试消息,确认模型 ID 和 Base URL 没填错。模型对话里能答,Codex 里也应该能答,只是工具形态不同。
4. Token、预训练与微调:切模型前先搞清 Token 和模型 ID
4.1 Token 是模型读取文本的基本单位
原文说,词元是模型读取文本的基本单位。数据集中的词元数量大致等同于文本中的单词和标点符号的数量。分词就是把文本转换为词元的过程。并非所有 Transformer 都是大语言模型,因为 Transformer 也用于计算机视觉领域;同样,并非所有大语言模型都基于 Transformer,因为还存在基于循环和卷积架构的大语言模型。这些边界条件在切模型时很重要,因为模型广场里的模型不一定都是同一种架构,上下文长度、计费方式和能力也不一样。
Token 直接影响两件事:上下文窗口和费用。你让 Codex 重讲架构,输入越长,消耗的 Token 越多。如果你把整篇原文贴进去,再让它反复重讲,Token 会累积得很快。所以更省的方式是分段问:先问编码器/解码器分工,再问 BERT 和 GPT 的训练目标,最后让它合并成一张对比表。切模型前先看模型广场当时列表里的上下文长度和计费说明,不要凭记忆猜。
4.2 预训练、微调与自监督学习
下一词预测任务采用自监督学习模式,这是一种自我标记的方法。我们不需要专门为训练数据收集标签,而是可以利用数据本身的结构,把句子或文档中的下一个词作为模型的预测标签。由于标签可以动态创建,所以能利用大量无标注文本数据集来训练大语言模型。与原始 Transformer 架构相比,GPT 的通用架构更简洁,只包含解码器部分。GPT-3 有 96 层 Transformer 和 1750 亿个参数,这个规模说明预训练阶段的算力和数据需求都很高。
预训练完成后,模型作为基础模型,可以通过高效的微调适应各类下游任务。在自定义数据集上微调的大语言模型,能够在特定任务上超越通用大语言模型。对开发者来说,这意味着你不必自己训基础模型,而是选一个合适的模型 ID,用 TaoToken 的统一 API 把请求转过去,再用 Codex 做架构复述。你真正要花时间的是问题拆解和结果校验,而不是维护多把 Key、记多套接口地址。
4.3 在 TaoToken 模型广场选模型,回 Codex 改 model
打开 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content=codex_arch 模型广场,看当时可用的模型 ID、上下文长度和能力标签。把~/.codex/config.toml里的model = "YOUR_MODEL_ID"改成列表里的真实 ID。不要自己编造带日期后缀的版本号,也不要把官方页面里的旧名字直接搬过来。选模型时优先看它是否适合长文本解释和代码对话,因为你要让它重讲 Transformer、BERT、GPT 的差异,还会让它对照 SQL、配置或报错。
如果你只是偶尔问架构问题,模型对话就够用;如果要长期在 Codex 里写代码、读配置、对照报错,可以看 Coding Plan 是否覆盖你的用量。Key 仍然在控制台创建,Base URL 仍然是https://taotoken.net/api,不需要在模型之间换一套新地址。模型 ID 改了,保存config.toml,重开终端,再发一条测试消息确认。
5. Codex 通道报错对照:config.toml 节名、Base URL 和 Key
5.1 配置文件节名与 env_key 对照
Codex 读不到 provider 时,先看model_provider和[model_providers.taotoken]里的名字是否一致。model_provider = "taotoken"对应[model_providers.taotoken],大小写要完全一样。TOML 对节名敏感,写成[model_providers.TaoToken]但 provider 值是taotoken,就可能找不到。第二个常见问题是认证失败。检查env_key = "OPENAI_API_KEY"和你 shell 里export OPENAI_API_KEY=YOUR_API_KEY是否一致。如果env_key写了一个名字,shell 里 export 的是另一个名字,Codex 就会拿不到 Key。
第三个问题是 Base URL 路径。配置里写https://taotoken.net/api,末尾不要加/v1。有些工具会自动补/v1或/chat/completions,你手动再加一层,请求路径就可能重复。可以用表格对一遍:
| 配置项 | 正确写法 | 常见错误 |
|---|---|---|
| model_provider | taotoken | 与节名大小写不一致 |
| base_url | https://taotoken.net/api | 末尾多写/v1 |
| env_key | OPENAI_API_KEY | 与 shell 变量名不一致 |
| model | 模型广场里的 ID | 自己拼日期后缀 |
改完保存,重开终端。不要只改一个文件就立刻怪模型,先把配置层排干净。
5.2 回控制台核对这次调用
配置能跑通后,发一条测试消息,然后打开 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content=codex_arch 控制台看用量和调用记录。确认这次请求的模型 ID 是不是你填的那个,Token 消耗是否在预期范围内。这一步对应原文最后的“总结”和“如何学习”:学大模型不能只看回答,还要看请求有没有真的走通、走的哪个模型、花了多少 Token。如果你看到模型 ID 不对,回config.toml改model;如果看到没有记录,检查 Key 是否生效、Base URL 是否写对。
把控制台用量和 Codex 回答放在一起看,你就能判断问题出在通道、模型还是提示词。通道问题通常是 401、provider 找不到、路径重复;模型问题通常是回答风格和能力不符合预期;提示词问题通常是回答太泛、不引用原文。分开排查,比反复换 Key 有效。
6. 下一步:把架构问题变成 Codex 对话任务
6.1 建议的追问清单
配置和验证完成后,用下面五问把架构串一遍。每问都要求 Codex 引用原文对应段落,答完你再核对。
- 用一句话区分编码器和解码器,并说明自注意力在其中做什么。
- BERT 为什么不能像 GPT 那样直接从左到右续写?掩码预测和下一词预测的训练目标差在哪?
- GPT 的自回归生成为什么要把之前的输出作为未来预测的输入?这对翻译任务有什么影响?
- 预训练和微调分别解决什么问题?为什么基础模型需要指令微调才能更好听指令?
- 零样本学习和少样本学习分别指什么?涌现能力和它们是什么关系?
五问答完,你手里就不是零散名词,而是一张能自己讲出来的架构图。Codex 只负责生成和解释,真正的判断还是你来。
6.2 文末引导
跑完这五问后,可以去 TaoToken 模型对话 用同一把 Key 发一条测试消息,确认模型 ID 和 Base URL 没填错。若要长期在 Codex 里写代码、读配置,可以打开 Coding Plan 看套餐是否够用;Key 在 控制台 API Keys 创建。把~/.codex/config.toml里的base_url保持为https://taotoken.net/api,模型 ID 回模型广场核对,剩下的就是把 BERT、GPT、Transformer 这三张图用自己的话讲一遍。