Karpathy 表示,“你只需启动一个云 GPU 设备,运行一个脚本,只需 4 小时,就可以在类似 ChatGPT 的 Web UI 中与你的 LLM 进行交流。”
Karpathy 称,这是他写过最疯狂的文章之一。
nanochat 具备以下特征:
使用新的 Rust 实现来训练标记器
在 FineWeb 上预训练 Transformer LLM,通过多项指标评估 CORE 得分
对 SmolTalk 的用户助理对话、多项选择题、工具使用进行中期训练
SFT,在世界知识多项选择题(ARC-E/C、MMLU)、数学(GSM8K)、代码(HumanEval)上评估聊天模型
RL 模型可选地在 GSM8K 上使用“GRPO”
在具有 KV 缓存的引擎中高效推理模型,简单的预填充/解码,工具使用(轻量级沙箱中的 Python 解释器),通过 CLI 或类似 ChatGPT 的 WebUI 与其对话。
写一份 markdown 报告卡,总结并游戏化整个事情。
大约 12 小时的训练时间超过了 GPT-2 的核心指标。当成本增加到 1000 美元左右时,Nanochat 会变得更加连贯,可以解决简单的数学/代码问题并进行多项选择题测试。
一个深度为 30 的模型训练了 24 小时,在 MMLU 上可以达到 40 秒,在 ARC-Easy 上可以达到 70 秒,在 GSM8K 上可以达到 20 秒。
Karpathy 的目标是将完整的“强基线”堆栈整合到一个内聚、精简、可读、可修改且最大程度可分叉的仓库中。nanochat 将成为 LLM101n 的顶点项目。Karpathy 认为,它有潜力发展成为一个研究工具或基准,类似于之前的 nanoGPT。
目前,nanochat 的整体框架已经足够完善,Karpathy 已将其上传到 GitHub 上。
训练过程
Karpathy 使用了 FineWeb-EDU 数据集,这是一组简单的、完全混洗过的数据集。
评估结果表明,平均 4.8 个原文字符就能变成 1 个 token。与 GPT-2(拥有 50257 个 token)相比,nanochat 的 token 生成器在文本压缩方面全面优于 GPT-2,但数学部分稍差一点。图源:Karpathy GitHub
他训练 LLM 通过预测序列中的下一个 token 来压缩网络文本,同时 LLM 也从中获得了大量关于世界的知识。
首先,训练一个 20 层的 Transformer,需要对 112 亿个标记进行训练。随着时间推移,模型对下一个 token 的预测更加准确。此外,CORE 得分也在上升。
训练/验证的每字节比特数 (bpb) 达到了约 0.81,核心指标也上升到了 0.22,略高于 GPT-2 Large(0.21)。
下一步是中期训练,Karpathy 将进一步在 smol-SmolTalk 上对模型进行微调。结果显示:
模型在各个知识领域的多项选择题中表现得更好。
数学性能仍然不太强,只能解决 2% 的问题。
训练中期之后是监督微调 (SFT) 阶段。SFT 会拉伸数据行并进行填充,完全模仿测试时格式。
这是微调后的效果:
仅花费不到 100 美元。
团队使用高度简化的 GRPO 训练循环,其优势在于简单的均值奖励转移。训练保留了 GR(“群体相关”)部分来计算奖励的优势。
可以看到,奖励增加了,这代表模型正在学习。准确率也在上升。模型规模越大,改进效果越显著。
最终结果显示:
包括 SFT 在内的整个过程耗时 3 小时 51 分钟,总成本为 92.4 美元。
Karpathy 表示,nanochat 可以调整任何内容,包括更改标记器、更改任何数据、调整超参数、改进优化等等。代码库设置得非常容易,只需使用 --depth 更改层数,其他所有内容都基于此。
更多技术细节请关注:https://github.com/karpathy/nanochat/discussions/1
参考资料:
https://github.com/karpathy/nanochat/discussions/1
(来源:维科网)







