很高兴发布新的代码库:nanochat! (这是我写过的最疯狂的之一)。 与我之前类似的代码库nanoGPT仅涵盖预训练不同,nanochat是一个从头开始的最小化全栈训练/推理管道,构建了一个简单的ChatGPT克隆,所有内容都在一个依赖最小的代码库中。你只需启动一个云GPU实例,运行一个脚本,最多4小时后,你就可以在一个类似ChatGPT的网页UI中与自己的LLM对话。 它大约有8000行我认为相当干净的代码,功能包括: - 使用新的Rust实现训练分词器 - 在FineWeb上预训练一个Transformer LLM,评估多个指标的CORE分数 - 在SmolTalk的用户助手对话、选择题、工具使用上进行中期训练。 - SFT,评估聊天模型在世界知识选择题(ARC-E/C,MMLU)、数学(GSM8K)、代码(HumanEval)上的表现 - 可选地在GSM8K上对模型进行RL训练,使用"GRPO" - 在引擎中高效推理模型,使用KV缓存,简单的预填充/解码,工具使用(轻量级沙箱中的Python解释器),通过CLI或类似ChatGPT的WebUI与其对话。 - 编写一份单一的markdown报告卡,总结并游戏化整个过程。 即使成本低至约100美元(在8XH100节点上约4小时),你也可以训练一个小型的ChatGPT克隆,能够进行简单对话,并能写故事/诗歌,回答简单问题。大约12小时的训练超越了GPT-2的CORE指标。当你进一步扩展到约1000美元(约41.6小时的训练)时,它会变得更加连贯,能够解决简单的数学/代码问题并参加选择题测试。例如,一个训练24小时的深度30模型(这大约等于GPT-3 Small 125M的FLOPs和GPT-3的1/1000)在MMLU上得分40分,在ARC-Easy上得分70分,在GSM8K上得分20分,等等。 我的目标是将完整的"强基线"堆栈整合到一个连贯、最小、可读、可黑客化、最大限度可分叉的代码库中。nanochat将是LLM101n的顶点项目(该项目仍在开发中)。我认为它也有潜力发展成一个研究工具或基准,类似于之前的nanoGPT。它绝不是完成、调优或优化的(实际上我认为可能还有很多低垂的果实),但我认为它的整体框架已经足够好,可以在GitHub上发布,所有部分都可以改进。 代码库链接和nanochat速跑的详细演练在回复中。
GitHub 仓库: 更详细和技术性的操作指南: 在 WebUI 中与 $100、4 小时 nanochat 的示例对话。它... 很有趣 :) 更大的模型(例如 12 小时深度 26 或 24 小时深度 30)会迅速变得更加连贯。
这是报告卡中$100速跑产生的一些摘要指标的示例。当前的代码库略超过8000行,但我尽量保持它们的整洁和良好的注释。 现在进入有趣的部分 - 调优和爬坡。
2.4M