这个项目能做什么
nanochat 是一个极简、可定制的实验性框架,用于在单个GPU节点上训练大型语言模型(LLM)。它覆盖了完整的LLM流水线:分词(tokenization)、预训练(pretraining)、微调(finetuning,包括监督微调SFT和强化学习RL)、评估(evaluation)以及推理(inference)。
该项目的核心理念是简洁性——与其提供数十个配置选项,nanochat 使用一个复杂度调节器(`--depth`,即transformer层数)来自动推导出所有其他超参数(模型宽度、注意力头数、学习率、训练周期、权重衰减等),以计算最优方式生成模型。调整该参数可以得到一系列不同规模的模型。
在一个8×H100节点上训练一个类GPT-2模型(大约深度为24–26层)大约需要1.5小时,成本约为48美元(约3美元/ GPU/小时)。如果使用竞价实例,成本可降至约15美元。而2019年原始GPT-2的训练成本约为43,000美元。
主要特性包括:
- 支持BPE分词器,并采用类似GPT-4风格的对话渲染方式
- 使用原生PyTorch实现的GPT Transformer结构
- 通过`torchrun`进行分布式训练,支持自动降级至单GPU训练和梯度累积
- 显式混合精度管理(bfloat16、float16、float32),不依赖`autocast`
- 通过DCLM CORE评分、每字节比特损失及任务基准测试(ARC、GSM8K、MMLU、HumanEval)进行评估
- 提供用于聊天模型的RL和SFT训练脚本
- 支持KV缓存的推理引擎
- 运行速度赛跑排行榜,追踪达到GPT-2水平所需的实际耗时
该代码库专为研究迭代设计:一个12层的快速实验(约5分钟)使开发者可以在运行完整训练前测试更改。该项目由Andrej Karpathy编写并维护。
评论
0 评分人数达到10人后显示
登录后参与讨论。