返回 动态 apply CMS 文章

Karpathy 发布 nanochat:极简全栈 ChatGPT 克隆训练/推理流水线

nanochat 是一个极简的全栈 LLM 训练/推理流水线,让你在 4 小时内用 100 美元训练自己的 ChatGPT 克隆。

nanochatLLMChatGPT克隆全栈训练
成长分 / 100 83 综合收获、行动、留存与影响

Karpathy 发布 nanochat:极简全栈 ChatGPT 克隆训练/推理流水线
为什么值得读了解如何用最小依赖和低成本从零构建一个完整的 ChatGPT 克隆。

学习 Karpathy 对 LLM 训练全流程(预训练、中期训练、SFT、RL)的极简实现思路。

关键洞察
  1. nanochat 约 8000 行代码,覆盖分词器、预训练、中期训练、SFT、RL、推理和 WebUI。
  2. 在 8XH100 节点上约 4 小时(约 100 美元)即可训练出可对话的小型模型。
  3. 约 12 小时训练可超越 GPT-2 的 CORE 指标;约 1000 美元(41.6 小时)可解决简单数学/代码问题。
转成行动

深入阅读

正文与原文对照

原文保真覆盖:全文原文字符:2482

兴奋地发布新仓库:nanochat!

(这是我写过的最疯狂的代码之一)。

与我之前类似的仓库 nanoGPT(仅涵盖预训练)不同,nanochat 是一个极简的、从头开始的、全栈训练/推理流水线,用于实现一个简单的 ChatGPT 克隆,代码库单一且依赖最小化。你启动一个云 GPU 实例,运行一个脚本,最快 4 小时后就能在类似 ChatGPT 的 Web UI 中与自己的 LLM 对话。

它大约有 8000 行我认为相当干净的代码,用于:

  • 使用新的 Rust 实现训练分词器
  • 在 FineWeb 上预训练 Transformer LLM,评估多项指标上的 CORE 分数
  • 在 SmolTalk 的用户-助手对话、多项选择题、工具使用上进行中期训练
  • SFT,在世界知识多项选择(ARC-E/C、MMLU)、数学(GSM8K)、代码(HumanEval)上评估聊天模型
  • 可选地使用“GRPO”在 GSM8K 上对模型进行强化学习
  • 在带有 KV 缓存的引擎中高效推理模型,简单的预填充/解码,工具使用(轻量级沙箱中的 Python 解释器),通过 CLI 或类似 ChatGPT 的 WebUI 与之对话
  • 编写一份单一的 Markdown 报告卡,总结并游戏化整个过程

即使成本低至约 100 美元(在 8XH100 节点上约 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 多分,等等。

我的目标是将完整的“强基线”堆栈整合到一个连贯、极简、可读、可修改、最大程度可复用的仓库中。nanochat 将是 LLM101n(仍在开发中)的顶点项目。我认为它也有潜力发展成一个研究工具或基准,就像之前的 nanoGPT 一样。它远未完成、调优或优化(实际上我认为可能有不少唾手可得的成果),但我认为整体骨架已经足够好,可以上传到 GitHub,所有部分都可以得到改进。

仓库链接和 nanochat 速通的详细说明在回复中。