Andrej Karpathy 发布新项目 nanochat:一个从零开始构建的极简全栈式 ChatGPT 克隆

刚刚,Andrej Karpathy 推出了他的最新开源项目 nanochat。与之前聚焦于预训练阶段的 nanoGPT 不同,nanochat 提供了一个从头开始、代码极简的全栈式类 ChatGPT 模型的训练与推理流水线。 整个项目被整合在一个依赖极少的单一代码库中,旨在帮助开发者和研究者深入理解大语言模型(LLM)的完整生命周期。

根据 Karpathy 的介绍,用户只需启动一台云端GPU服务器并运行一个脚本,最快在4小时后,便能通过一个类似 ChatGPT 的网页界面,与自己亲手训练的语言模型进行交互。

完整的端到端实现流程

nanochat 项目的代码量约 8000 行,覆盖了构建一个聊天机器人的完整技术流程,具体包括:

  • 分词器训练 (Tokenizer Training): 采用了一个基于 Rust 的全新实现来训练分词器。
  • 预训练 (Pre-training): 在 FineWeb 数据集上预训练一个 Transformer 架构的语言模型,并依据多项指标评估其 CORE 分数。
  • 中间训练 (Intermediate Training): 使用来自 SmolTalk 的用户-助手对话数据、多项选择题及工具使用数据,对预训练模型进行进一步训练。
  • 监督微调 (SFT): 在多个领域的基准测试上对聊天模型进行微调与评估,涵盖世界知识(ARC-easy/challenge, MMLU)、数学推理(GSM8K)和代码生成(HumanEval)。
  • 强化学习 (RL): 提供一个可选的强化学习阶段,使用 "GRPO" 算法(PPO的简化变种)在 GSM8K 数据集上进一步优化模型。
  • 高效推理 (Inference): 实现了一个带有 KV 缓存的高效推理引擎,支持 prefill/decode 模式和工具使用(通过轻量级沙箱调用 Python 解释器)。用户可以通过命令行或网页界面与模型交互。
  • 生成式报告卡 (Report Card Generation): 自动生成一份 Markdown 格式的报告卡,以游戏化的方式总结和呈现整个训练过程的各项指标与成果。

成本与性能预期

Karpathy 详细说明了不同计算投入所能达成的模型性能水平:

  • 约 100 美元成本(在 8x H100 节点上训练约 4 小时): 可以训练出一个能够处理简单对话、生成故事或诗歌,并回答基础问题的小型 ChatGPT 克隆体。 经过约 12 小时的训练,模型的 CORE 指标能够超越 GPT-2。
  • 约 1000 美元成本(训练约 41.6 小时): 随着投入增加,模型将表现出更强的连贯性,能够解决简单的数学和代码问题,并在多项选择题测试中取得更好的成绩。

例如,一个拥有 30 层深度、训练 24 小时(其总计算量约等于 GPT-3 Small 125M 模型的千分之一)的模型,能在 MMLU 测试中获得 40+ 的分数,在 ARC-Easy 上得分超过 70,在 GSM8K 上的得分也达到了 20+。

项目愿景与技术细节

Karpathy 的核心目标是创建一个高度集成、代码极简、易于理解、可被任意修改和复刻(forkable)的强大基线技术栈。 nanochat 也将成为他正在开发的 LLM101n 课程的顶点项目。 他认为,该项目具备发展成为一个重要研究工具或行业基准的潜力,正如 nanoGPT 此前所取得的成功一样。

同时,Karpathy 也坦言,项目目前远未达到完全优化或精调的状态,但他认为其整体框架已经足够成熟,可以发布并交由社区共同改进。

技术细节与官方问答

在项目发布后,Karpathy 回答了社区关心的一些技术问题。

问:该项目训练所用的模型架构是什么?

Karpathy: 其架构基本与 Llama 类似,但经过了简化,并受到了一些修改版 nanoGPT 的启发。具体的技术选型包括:

  • 核心架构: 密集的 Transformer (Dense Transformer)。
  • 位置编码: 旋转位置嵌入 (RoPE),不使用绝对位置嵌入。
  • 归一化: 查询(Query)和键(Key)应用了归一化(QK Norm)。同时,在 Token 嵌入后和 MLP 层前使用了 RMSNorm,且 RMSNorm 中不包含可学习参数。
  • 权重共享: 词嵌入(Embedding)与分类头(Unembedding)的权重不进行绑定。
  • 激活函数: MLP 层中使用的激活函数为平方 ReLU,其数学表达式为:
    f(x)=(ReLU(x))2=(max⁡(0,x))2 f(x) = (\text{ReLU}(x))^2 = (\max(0, x))^2 f(x)=(ReLU(x))2=(max(0,x))2
  • 偏置项: 所有线性层(Linear layers)均不使用偏置项(bias)。
  • 注意力机制: 采用多查询注意力(Multi-Query Attention, MQA)。
  • 输出处理: 对 Logits 应用 Softcap。
  • 优化器: 采用 Muon + AdamW 优化器,这一选择深受修改版 nanoGPT 的影响。

问:我是否可以用这个项目来训练一个处理我个人数据(如 Notion 笔记、健康数据等)的私人聊天机器人?

Karpathy: Karpathy 认为 nanochat 目前并不适合此用途。他将这类小型模型比作"幼儿园水平的孩子",它们不具备大型模型所拥有的原始智能。 直接用个人数据对这类模型进行微调,虽然可能在风格上模仿用户的写作,但生成内容的质量会很差。

要实现高质量的个人机器人,需要更复杂的流程,这在很大程度上仍属于前沿研究领域:

  1. 首先,获取原始个人数据。
  2. 在此基础上进行大量的合成数据生成与重写。
  3. 在一个性能顶尖的开源大语言模型上进行微调。
  4. 在微调过程中,可能还需要混合大量的预训练数据,以防止模型"遗忘"其原有的通用能力(即灾难性遗忘)。

对于非研究用途,Karpathy 推荐的替代方案是使用如 NotebookLM 这样的工具,它通过检索增强生成(RAG)技术来处理个人数据。 在此模式下,数据作为上下文被输入模型,但并不改变模型的权重。因此,模型并非真正地"了解"你,但这可能是当前最容易实现的方案。

相关链接

GitHub 仓库地址: https://github.com/karpathy/nanochat
更详细的技术介绍: https://github.com/karpathy/nanochat/discussions/1

相关推荐
Agent产品评测局7 小时前
企业生产报工自动化落地,数据采集全流程实现方案 —— 2026制造业数字化转型深度选型指南
运维·人工智能·ai·chatgpt·自动化
小鹿软件办公8 小时前
OpenAI 面向高频用户推出全新 100 美元档 ChatGPT Pro 套餐
人工智能·chatgpt
斯坦SteinY10 小时前
github年度热门开源项目
ai·chatgpt·开源·github·排名·热门项目
健康人猿10 小时前
ChatGPT 推出了 Pro 5x,Codex使用额度又会做出什么新调整?
人工智能·ai·chatgpt·codex·奥特曼
Agent产品评测局1 天前
互联网行业自动化平台选型,运营全流程提效指南:2026企业级智能体架构与实战全解析
运维·人工智能·ai·chatgpt·架构·自动化
小真zzz1 天前
搜极星:你的免费“AI内容验真器”
大数据·人工智能·ai·chatgpt·seo·geo
White-Legend1 天前
codex gpt-5.4 日卡200刀
chatgpt
Agent产品评测局1 天前
企业 IT 运维自动化落地,故障处理全流程实现方法:2026智能体驱动下的运维架构演进与实战解析
运维·人工智能·ai·chatgpt·架构·自动化
yumgpkpm2 天前
华为昇腾910B上用Kubernetes(K8s)部署LLM和用Docker部署LLM的区别
docker·chatgpt·容器·stable diffusion·kubernetes·llama·gpu算力
啦啦啦!2 天前
ChatGPT和Gemini的接入和封装
人工智能·ios·chatgpt