Repolode
karpathy

karpathy/nanochat

一个极简、易于修改的 LLM 训练框架,覆盖分词、预训练、微调、评估到对话推理全流程,可在单台 GPU 节点上运行。

Star
58,786
Fork
8,229
未关闭 Issue
122
最近提交
上个月

这是什么?

nanochat 是一个用于训练大语言模型的实验性框架,设计目标是在单个 GPU 节点上运行,代码量小、便于阅读和修改。它覆盖分词、预训练、微调、评估和推理各个阶段,并提供一个简单的命令行工具用于与训练好的模型对话。

项目的核心是一个复杂度旋钮 `--depth`,即 Transformer 的层数。模型宽度、注意力头数、学习率、训练步数和权重衰减等超参数都会根据深度自动计算,使不同规模的模型都接近计算最优。项目目标是在数十美元的云 GPU 开销内复现 GPT-2 级别的能力,并维护一个记录训练耗时的排行榜。

仓库提供了在 8 卡 H100 节点上快速训练的脚本、缩放律与模型系列实验脚本、基于 CPU 或 Apple Silicon 的小模型示例,并说明了 bf16、fp16、fp32 的精度管理方式。

核心功能

  • 01在一套代码中覆盖分词、预训练、微调、评估和推理。
  • 02通过单一 --depth 参数设定模型规模,其余超参数自动计算。
  • 03提供命令行工具与训练好的模型对话。
  • 04可在单张 GPU 上运行,只有一张卡时自动使用梯度累积。
  • 05支持 CUDA GPU,也可在 CPU 与 MPS 上用小模型运行。
  • 06提供 GPT-2 加速训练排行榜,记录实际训练耗时。

适用场景

  • 通过阅读精简代码理解完整的大模型训练流程。
  • 在单张 GPU 上进行小规模预训练实验。
  • 用深度可控的快速训练验证架构或优化器改动。
  • 在有限预算内端到端训练一个小型对话模型。

快速上手

  1. 1

    使用 GPU 额外依赖安装 uv 依赖

    uv sync --extra gpu
  2. 2

    激活虚拟环境

    source .venv/bin/activate
  3. 3

    运行 speedrun 训练脚本(设计用于 8XH100 节点,约 1.5 小时)

    bash runs/speedrun.sh
  4. 4

    通过命令行与训练好的模型对话

    python -m scripts.chat_cli

使用前须知

  • 完整的 GPT-2 速通流程设计用于 8XH100 GPU 节点,云端 GPU 费用约需 48 美元或更多。
  • 预训练需要大量 GPU 资源;显存低于 80GB 的 GPU 需要调整批大小。
  • 大部分代码基于 PyTorch,但作者尚未完整测试 MPS、XPU 等非 CUDA 后端。

标签

常见问题

nanochat 是什么?
一个极简、易于修改的 LLM 训练框架,覆盖分词、预训练、微调、评估到对话推理全流程,可在单台 GPU 节点上运行。 nanochat 是一个用于训练大语言模型的实验性框架,设计目标是在单个 GPU 节点上运行,代码量小、便于阅读和修改。它覆盖分词、预训练、微调、评估和推理各个阶段,并提供一个简单的命令行工具用于与训练好的模型对话。
nanochat 可以免费使用吗?用的什么许可证?
nanochat 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
nanochat 还在维护吗?
半年内有更新。nanochat 最近一次提交是在 2026年9月7日。
nanochat 适合用来做什么?
通过阅读精简代码理解完整的大模型训练流程。 在单张 GPU 上进行小规模预训练实验。 用深度可控的快速训练验证架构或优化器改动。 在有限预算内端到端训练一个小型对话模型。
nanochat 怎么安装和运行?
使用 GPU 额外依赖安装 uv 依赖: uv sync --extra gpu 激活虚拟环境: source .venv/bin/activate 运行 speedrun 训练脚本(设计用于 8XH100 节点,约 1.5 小时): bash runs/speedrun.sh 通过命令行与训练好的模型对话: python -m scripts.chat_cli
在哪里获取 nanochat?
源代码和安装说明在 GitHub 上:https://github.com/karpathy/nanochat

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目