嘿,我是克莱尔。如果你最近像我一样一直在研究开源法学硕士 (LLM),你可能听说过 nanochat——这是 Andrej Karpathy 的一个项目,声称可以在云端 GPU 上大约 4 小时内训练并部署一个类似 ChatGPT 的克隆版本。我决定尝试一下,在这篇文章中,我将向你介绍我的发现、我的设置过程、训练所需的工具以及如何部署它。如果你正在追逐“构建你自己的 ChatGPT 克隆”的潮流,那么这篇文章正适合你。


100 美元成本 vs GPT-2 规模

NanoChat 吸引我的地方在于它的承诺:在云端 GPU 节点上花费大约 100 美元训练一个可用的 LLM 模型,然后通过 WebUI 与其聊天。与大多数模型所需的巨额预算相比,这感觉很容易实现。没错,该模型不会达到 GPT-4 的水平——但构建自己的“ChatGPT 克隆模型”用于学习或原型设计的想法令人兴奋。

单文件管道

另一个优点是:代码库精简且易读。Karpathy 将其描述为一个“单一、可破解、低依赖的代码库”,涵盖标记化、预训练、微调和推理。对于像我这样更喜欢理解技术栈而不是使用黑盒工具的人来说,这一点很重要。


设置:在 Cloud GPU 上启动

克隆 Repo 并安装

首先,获取仓库并安装依赖项。在我的运行中,我做了以下操作:

git clone https://github.com/karpathy/nanochat.git  
cd nanochat  
# install uv package manager, create venv, then uv sync

来自文档:他们使用 uv 作为项目管理器并让您编译基于 Rust 的标记器。

准备 FineWeb 数据集

接下来:下载数据集(基于 FineWeb-EDU)进行预训练。repo 说明如下:

python -m nanochat.dataset -n 240

这会下载约 24 GB 的数据并准备分片。我还通过 Rust/Cargo 构建了分词器。这一步额外花了几分钟时间——但这也是学习价值的一部分。


循序渐进:4 小时训练(nanochat 4 小时培训)

预训练 Transformer

设置完成后,即可启动基础训练:

torchrun --standalone --nproc_per_node=8 -m scripts.base_train -- --depth=20

根据 repo,它在 8×H100 节点上运行,“100 美元层级”大约需要 3 个小时。

SmolTalk 上的 Midtrain

预训练完成后,需要进行中期训练,以适应对话风格和一些结构化任务(SmolTalk + MMLU + GSM8K)。这花了我不到 10 分钟的时间。

SFT 和 RLHF

最后:使用监督微调 ( SFT ) 和可选的 RLHF 来完善模型的“助手”行为。代码库包含 chat_sft 和评估脚本。完成后,您就拥有了一个可以用于聊天的模型。

此时,您已经花费了大约 4 个小时(加上设置时间),并且拥有了自己的 ChatGPT 风格的小型 Web UI。


部署和测试

WebGPU 浏览器运行

训练结束后,您可以提供以下服务:

python -m scripts.chat_web

前往 http://<node_ip> :8000,开始与你的模型对话。界面简洁,但功能齐全。

评估 MMLU/GSM8K

您还需要检查性能。该代码库包含 MMLU、GSM8K、ARC-Easy/Challenge 等基准测试的评估指标。100 美元的型号性能一般,但适合实验。


我的看法及其含义

我是克莱尔。这本教程充满乐趣,而且很有教育意义。它不仅能让你看到搭建过程,还能让你看到各个部件是如何组装的。关键要点:

  • 在约 4 小时内运行整个管道可为您提供实践经验:标记器、分片、训练循环、推理引擎。
  • 从计算成本的角度来看,“100 美元”的说法是真实的 - 但您仍然需要注意数据集准备、环境设置和一些技术细节。
  • 您获得的模型不会取代生产级系统——但这没关系。这_是_您自己的模型。您可以修改它、在此基础上构建并进行实验。
  • 对于实践学习或构建原型(私人助理、利基领域聊天机器人、研究玩具)来说,这是一个强大的基础。
  • 如果您计划将其用于货币化,您将需要进一步提升:更多数据、更多时间、更大深度、更好的微调——但 nanochat 为您提供了起点。

如果您正在考虑尝试 nanochat 4 小时训练并构建自己的 ChatGPT 克隆,我很乐意听听您的设置、调整或成果。欢迎留言,我们一起交流。我是 Claire,一直在深入研究 AI 工具并分享心路历程。

值得回顾的往期剧集:

文章浏览量: 4