兴奋地发布新仓库: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 速通的详细说明在回复中。
