当前位置:首页 > 科技资讯 > 正文

AI大神Karpathy开源nanochat:100美元打造ChatGPT

「这款代码让我倍感疯狂。」

本周一,AI界翘楚Andrej Karpathy推出了自己的最新开源项目,瞬间吸引了整个社区的瞩目。

AI大神Karpathy开源nanochat:100美元打造ChatGPT nanochat ChatGPT 开源 LLM 第1张

该项目名为nanochat,据传能够引导用户从零开始,以100美元的成本自建ChatGPT。它覆盖了LLM的训练与推理,只需跟随学习即可掌握构建大型模型的所有步骤。

总计8000行代码,在GitHub发布后不到12小时,其star数量已超过4500:

AI大神Karpathy开源nanochat:100美元打造ChatGPT nanochat ChatGPT 开源 LLM 第2张

GitHub链接:https://github.com/karpathy/nanochat

与Karpathy先前发布的仅覆盖预训练阶段的nanoGPT仓库不同,nanochat是一个从零开始实现的、极简但完整的ChatGPT克隆版训练/推理全流程项目,所有内容均集中在一个依赖极少、结构整洁的代码库中

您只需启动一台云GPU机器,运行一个脚本,大约4小时后,便可在类似ChatGPT的Web界面中与您的LLM进行聊天。

仓库约8,000行代码,但已实现以下全部功能:

采用全新Rust实现训练分词器。

在FineWeb数据集上预训练Transformer LLM,并在多个指标上评估CORE分数。

Mid-train阶段训练SmolTalk的用户-助手对话、多选问答、工具使用等数据。

SFT微调,并评估模型在世界知识类多选题(ARC-E/C、MMLU)、数学(GSM8K)、代码(HumanEval)上的表现。

可选:使用GRPO在GSM8K上进行RL强化训练。

高效推理引擎,支持KV Cache、prefill/decode推理、工具调用(轻量级沙箱中的Python解释器),可通过CLI或ChatGPT风格WebUI交互。

自动生成Markdown评分报告卡,总结与游戏化展示整个训练过程。

Karpathy表示,仅需约100美元成本(8×H100上4小时训练),您就能训练一个「能聊的」迷你ChatGPT,可以编写故事/诗歌、回答简单问题。约12小时训练即可超越GPT-2的CORE指标。

若预算扩展至1000美元(训练41.6小时),模型连贯性将大幅提升,能解决基础数学/代码任务,并通过一些多选测试。例如,一个30层深度、训练24小时的模型(相当于GPT-3 Small 125M的FLOPs,约为GPT-3的1/1000规模)即可在MMLU拿到40+分、ARC-Easy 70+分、GSM8K 20+分等。

Karpathy的目标是将一整套「强势基线」能力完整地打包进一个结构统一、可读性强、易于hack、方便fork的仓库中。nanochat将成为LLM101n课程的压轴项目(课程仍在开发中)。

Karpathy认为nanochat也有潜力像nanoGPT一样,逐渐成长为一个研究平台或标准基准。它现在虽远未完美,也未特别调优或性能优化(他认为已很接近)。不过,整体框架已成型,因此适合放在GitHub上,让社区协同迭代改进每个模块。

AI大神Karpathy开源nanochat:100美元打造ChatGPT nanochat ChatGPT 开源 LLM 第3张

使用WebUI与价值100美元、耗时4小时的nanochat进行的示例对话。

下图是Karpathy这次100美元快速训练(speedrun)示例在报告中产出的一些指标摘要。

AI大神Karpathy开源nanochat:100美元打造ChatGPT nanochat ChatGPT 开源 LLM 第4张

由此可见,构建一个具备聊天功能的大型模型是如此简单且低成本,并且有了Karpathy成熟的开源代码支持,我们是否可以创建一个属于自己的个性化模型来辅助工作呢?

有网友提出了大家普遍关心的问题:

AI大神Karpathy开源nanochat:100美元打造ChatGPT nanochat ChatGPT 开源 LLM 第5张

但Karpathy对这类应用泼了一盆冷水,他认为这并非适合个性化目的的代码。

AI大神Karpathy开源nanochat:100美元打造ChatGPT nanochat ChatGPT 开源 LLM 第6张

Karpathy认为,应更多地将这个微型模型视为非常年幼的孩子,并未拥有那么强大的原始智能。如果您在自己的数据上微调/训练它,您可能会得到一些有趣的鹦鹉学舌效果,感觉像是在以您的风格写作,但它会一团糟。

要实现个性化模型的效果,大致需要以下步骤:

准备原始数据

在此基础上进行大量合成数据生成和重写(复杂、不明显、需研究)

用这些数据去微调一个当前较强的开源大模型(例如tinker)

微调时还可能需要混入大量预训练数据,以避免模型丢失太多通用智能能力

可以说,要真正将这一方案运行得效果好,目前仍偏向科研事务。

更多详细技术介绍与分步构建示例,请参阅以下链接:

https://github.com/karpathy/nanochat/discussions/...