AI寒武纪 2025-10-14 09:35:03
刚刚,Andrej Karpathy发布了一个新的项目:nanochat。
与之前只覆盖预训练的nanoGPT不同,nanochat是一个从头开始、代码极简的全栈式ChatGPT克隆体训练/推理流水线。它被集成在一个单一、依赖极少的代码库中
【资料图】
Karpathy表示,用户只需启动一个云端GPU机器,运行一个脚本,最快4小时后,就能在类似ChatGPT的网页界面中与自己训练的LLM对话
整个项目代码量约8000行,覆盖了以下完整流程:
训练分词器:使用新的Rust实现
预训练:在FineWeb上预训练一个Transformer LLM,并根据多项指标评估CORE分数
中间训练:在来自SmolTalk的用户-助手对话、多项选择题和工具使用数据上进行训练
SFT(监督微调):在世界知识选择题(ARC-E/C, MMLU)、数学(GSM8K)和代码(HumanEval)上对聊天模型进行微调和评估
RL(强化学习):可选地使用“GRPO”在GSM8K上对模型进行强化学习
高效推理:在带有KV缓存的引擎中进行高效推理,支持简单的prefill/decode和工具使用(在轻量级沙箱中调用Python解释器),并可通过命令行或类似ChatGPT的WebUI进行交互
生成报告卡:撰写一份markdown格式的报告卡,对整个过程进行总结和游戏化呈现
成本与性能
Karpathy详细介绍了不同投入下的模型表现:
约100美元成本(在8xH100节点上训练约4小时):可以训练出一个能进行简单对话、写故事/诗歌、回答简单问题的小ChatGPT克隆体
约12小时训练:CORE指标超过GPT-2
更高投入,约1000美元成本(约41.6小时训练):模型会变得更加连贯,能够解决简单的数学和代码问题,并参加多项选择题测试
例如,一个深度为30、训练24小时的模型(其FLOPs约等于GPT-3 Small 125M,是GPT-3的1/1000),在MMLU测试上得分40多分,ARC-Easy上70多分,GSM8K上20多分
Karpathy的目标是将完整的强基线技术栈整合到一个有凝聚力、最小化、可读、可破解、最大程度可fork的仓库中。nanochat也将成为他仍在开发的LLM101n课程的顶点项目。他认为,这个项目有潜力发展成为一个研究工具或基准,就像之前的nanoGPT一样
他也坦言,项目远未完成、调优或优化,可能还有很多容易优化的部分,但目前的整体框架已经足够好,可以发布到GitHub上,让社区共同改进。
GitHub仓库地址:
https://github.com/karpathy/nanochat
更详细的技术介绍:
https://github.com/karpathy/nanochat/discussions/1
技术细节与问答
在发布后,Karpathy也回答了网友们关心的一些问题。
问:这个模型训练的架构是什么?
Karpathy:基本上类似Llama,但更简单一些,也受到一些修改版nanoGPT的影响。我试图为这个规模找到一个坚实的基线:
密集Transformer
旋转嵌入(RoPE),无位置嵌入
QK Norm
Embedding和Unembedding权重不绑定
Token embedding后接Norm
MLP中使用relu^2激活函数
RMSNorm中无可学习参数
线性层中无偏置项
多查询注意力(MQA)
Logit softcap
优化器是Muon+AdamW,深受修改版nanoGPT的影响。我有一个TODO是尝试很好地调整Adam的学习率(例如按模块调整)以移除Muon,但我还没有足够努力地去尝试。
问:我可以用它来训练我自己的数据吗?比如我所有的Notion笔记、健康数据和其他LLM聊天记录,来做一个理解我的个人聊天机器人?
Karpathy:好问题。我认为这个仓库不适合做这件事。你应该把这些微型模型更多地看作是非常年幼的孩子(比如幼儿园水平),它们不具备那些更大模型的原始智能。如果你用自己的数据对它进行微调/训练,你可能会得到一些有趣的模仿,风格上感觉像你的写作,但内容会很糟糕。
要实现你想要的效果,你需要更复杂的流程:
1.获取你的原始数据。2.在其之上进行大量的合成数据生成和重写(这很棘手,不简单,属于研究范畴)。3.在一个最先进的开源LLM上进行微调。4.你可能还需要混合大量的预训练数据,以避免在微调过程中损失过多的原始智能。
基本上,要让这个工作得很好,仍然是研究领域的范畴,并不简单。你最好的非研究选择是,把你的所有写作内容交给像NotebookLM这样的工具,它会通过RAG(检索增强生成)来处理你的数据。你的数据通过RAG进入上下文窗口,但不会影响模型权重。所以模型并不真正“了解你”,但这可能是你最容易接近的效果。
问:这些代码有多少是你手写的?
Karpathy:好问题,基本上完全是手写的(配合Tab自动补全)。我试过几次使用Claude/Codex的AI智能体,但它们的效果根本不够好,最终没什么帮助,可能是因为这个仓库偏离了它们的数据分布太远
电脑
精彩推送