腾讯科技 10小时前
AI大神卡帕西开源项目爆火,仅用4小时、8000行代码克隆ChatGPT
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_keji1.html

 

文|金鹿

编辑|博阳

10 月 14 日凌晨,AI 领域知名专家安德烈 · 卡帕西(Andrej Karpathy)发布了名为 "nanochat" 的新开源项目,他形容这是自己写过的 " 最不受约束 " 的疯狂项目之一。

与早期仅涵盖预训练的 nanoGPT 不同,新的 nanochat 是一个极简的、从零开始的全栈训练 / 推理流程,通过依赖项最少的单一代码库实现了一个简易版 ChatGPT 的完整构建。

nanochat 的使用流程非常简单:你只需要租用云 GPU 服务器,运行单个脚本,最快 4 小时后就能在类似 ChatGPT 的网页界面中与自己训练的大语言模型(LLM)对话。

nanochat 是什么?

从卡帕西提供的原理来看,Nanochat 打包了从零开始制造一个 Chatbot 所需的所有步骤和工具,这其中包括:

1. 数据准备 : 从原始网络文本(如 FineWeb 数据集)开始,创建分词器(tokenizer),把海量文本变成模型能理解的数字。

2. 模型预训练 : 在大规模数据上训练一个基础的 Transformer 模型,让它学习语言的语法、事实和基本推理能力。这是最耗时、最核心的一步。

3. 对齐微调 :

a. 指令微调 : 使用高质量的问答、对话数据,教模型如何像一个助手一样遵循指令、与人对话。

b. 强化学习 : (可选阶段)通过奖励和惩罚,进一步提升模型在特定任务(如数学解题)上的表现。

4. 模型推理 : 提供了一个高效的引擎,让你可以在命令行或一个类似 ChatGPT 的网页界面中,与你亲手训练出来的模型进行实时对话。

5. 评估 ( 训练完成后,系统会自动生成一份详细的 " 成绩单 "(报告),展示模型在多个标准测试(如数学、代码、常识推理)上的表现。

Karpathy 之前的nanoGPT项目主要关注第 2 步:模型预训练。它是一个极简的 GPT 模型训练代码,目的是为了教学,让大家理解大模型是怎么训练出来的。

nanochat则是一个全栈(Full-Stack)项目,它不仅包含了 nanoGPT 的预训练部分,还补全了之后的所有关键步骤(指令微调、强化学习、推理、UI 界面),最终交付一个可以实际对话的聊天机器人。

而实现这一切,只靠着卡帕西手敲的 8000 行代码。

卡帕西做这个 nanochat 的意义是什么呢?

首先是教育和学习,它是目前理解 " 如何从零构建一个 ChatGPT" 的最佳学习资料。它让普通开发者和研究者有机会用相对低廉的成本亲手 " 烹饪 " 出一个属于自己的小型聊天模型,并完整地体验从一堆原始文本到一个智能对话助手的全过程。

其次是提供一个研究和实验平台。 为研究人员提供了一个轻量级、可控、可复现的实验平台。他们可以在这个框架上快速测试新的模型架构、训练方法或对齐技术,而不必动用昂贵的大规模计算资源。

最后,X 上的网友还发掘了它的新可能,他认为这套系统完全可以成为硬件评估的新基准。

这真是太棒了。这应该成为硬件评估的新基准——我们只需报告一个有序三元组:

● 端到端训练总成本(美元)

● 端到端训练总耗时(分钟)

● 在特定测试集上的综合性能表现

而且整个过程都具备高度可复现性。

100 美元,从头训练一个 AI

那这个 Nanochat 到底能多省钱?

● 仅需约 100 美元(在 8XH100 节点上训练约 4 小时),你就能训练出一个小型 ChatGPT 克隆版,可以进行基本对话,创作故事诗歌,回答简单问题

(在网页界面中,显示的是一个耗时 4 小时、花费 100 美元的 nanochat 模型进行对话。已经可以写诗了。)

(nanochat 报告卡片中展示了这次 100 美元 " 速通 " 训练所生成的部分总结性指标。整体效果很不错。)

● 训练约 12 小时即可在 CORE 指标上超越 GPT-2

● 如果将预算提升到约 1000 美元(训练 41.6 小时),模型会变得更加连贯,能够解决简单的数学和编程问题,并通过多项选择题测试。例如,一个深度为 30 的模型经过 24 小时训练(计算量相当于 GPT-3 Small 125M 或 GPT-3 的 1/1000),在 MMLU 上能达到 40 多分,在 ARC-Easy 上达到 70 多分,在 GSM8K 上达到 20 多分。

卡帕西亲自揭秘背后技术

在 X 平台上,卡帕西和网友展开问答对话,公开了 nanochat 的幕后开发详情和相关技术。

以下为问答精选:

问:这个模型的训练 / 基础架构是基于什么样的模型设计?

卡帕西:nanochat 的模型架构基本上与 Meta Llama 模型类似,但进行了一些简化,并吸收了一些来自其改进版 modded-nanoGPT 项目的设计思路。其目标是为此类规模的模型建立一个 " 稳健的基线 "。

主要架构特征包括:

Dense Transformer(稠密模型 Transformer)

Rotary Embeddings(旋转位置编码),无显式位置嵌入(positional embeddings)

QK Norm(对 Query 和 Key 向量进行归一化)

Embedding 与 Unembedding 权重不共享(untied weights)

在 Token Embedding 之后进行归一化处理

MLP 使用 ReLU² 激活函数

RMSNorm 中无可学习参数

线性层中无偏置项(bias-free linear layers)

采用多查询注意力机制(Multi-Query Attention, MQA)

输出层使用 Logit Softcap 技术

优化器采用的是 Muon + AdamW 组合,这很大程度上受到了 modded-nanoGPT 的影响。卡帕西提到,他计划未来通过精心调整 Adam 优化器每个模块的学习率来尝试移除 Muon,但目前这项工作尚未完成。

问:我是否可以用自己的数据来训练它?比如我所有的 Notion 笔记、健康数据,以及和其他大模型的对话记录?就像打造一个真正懂我的个人聊天机器人?

卡帕西:我觉得这个代码库并不适合这个用途。你可以把这些微型模型想象成幼龄儿童(比如幼儿园阶段),它们确实不具备那些大型模型的原生智力。如果你用自己的数据对它进行微调 / 训练,可能会得到一些看似模仿你文风的有趣回应,但最终效果会显得很粗糙。

要实现你期待的效果,可能需要这样的流程:先整理原始数据,在此基础上进行大量合成数据重写(这步骤很棘手,不确定性高,属于研究范畴),然后选用顶尖开源大模型进行微调。过程中可能还需要混合大量预训练数据,以免在微调过程中损失模型原有的智能水平。

因此,说实话,要让这套流程完美运作至今仍属于前沿研究领域。

目前最可行的非技术方案,是把所有资料导入 NotebookLM 这类工具,它可通过 RAG 技术(即分块检索参考)处理你的数据。你的信息会通过上下文窗口传递给模型,但不会改变模型本身的权重。虽然模型不会真正 " 认识你 ",但这可能是当前最容易实现的近似方案了。

问:这些代码有多少是你手写的?

卡帕西:代码基本上全是手写的(配合 Tab 键自动补全)。我尝试过几次使用 Claude/Codex 这类 AI 编程助手,但效果完全不行,总体上反而帮不上忙。可能我的代码库风格太偏离它们训练数据的风格了。

宙世代

宙世代

ZAKER旗下Web3.0元宇宙平台

一起剪

一起剪

ZAKER旗下免费视频剪辑工具

相关标签

ai 界面 开源 数学
相关文章
评论
没有更多评论了
取消

登录后才可以发布评论哦

打开小程序可以发布评论哦

12 我来说两句…
打开 ZAKER 参与讨论