项目概述 - 项目nanochat是一个极简、从零开始构建的全栈训练/推理pipeline,用最少量依赖的单一代码库实现了简易版ChatGPT [1] - 项目整体约8000行代码,基于Rust语言实现,可实现训练分词器、预训练大语言模型、指令微调、强化学习及高效推理等功能 [2] - 在8×H100 GPU上训练约4小时,整体成本仅需约100美元,即可训练出一个可进行基础对话、创作故事诗歌、回答简单问题的模型 [1][2] 技术架构与流程 - 训练流程始于在FineWeb-EDU数据集上预训练Transformer架构模型,该数据集被重新打包为简单、完全打乱的分片,总计约24GB [15][16] - 项目训练了自定义分词器,词汇表大小为65,536个tokens,在训练集包含2B字符上训练约1分钟,实现了约4.8的压缩比 [16][18] - 预训练后进行了中期训练,在SmolTalk对话数据集和多项选择题数据集上微调,使模型适应对话格式并理解多选题机制,此过程约8分钟 [35][36][37] - 随后进行监督微调(SFT)以提升对话质量,并可选地进行强化学习(RL)训练,针对GSM8K数学数据集使用简化的GRPO算法优化模型答案正确率 [41][46][48] 性能表现 - 模型在预训练后CORE指标达到0.2219,略高于GPT-2 large(0.21)但略低于GPT-2 xl(0.26) [3][32] - 经过中期训练和监督微调后,模型在多项基准测试上表现提升:ARC-Easy从0.3561提升至0.3876,GSM8K从0.0250提升至0.0455,HumanEval从0.0671提升至0.0854 [3][52] - 进行强化学习训练后,模型在GSM8K数据集上的表现进一步提升至0.0758 [3][52] - 训练深度为30的模型24小时后(算力消耗为GPT-3的千分之一),在MMLU数据集上可达40多分,在ARC-Easy上达70多分,在GSM8K上达20多分 [6] 项目特点与影响 - 项目代码完全手写,作者尝试使用AI编程助手但效果不佳,最终产出约8000行代码,旨在提供统一、极简、易读、可修改的技术栈 [9][7] - 项目作为LLM101n课程的压轴项目,有潜力发展为研究工具框架或基准测试工具,类似之前的nanoGPT项目 [7] - 项目发布后迅速获得社区关注,GitHub Star数飙升至4.8k,被评论为具有高教育价值和可理解智慧 [8] 成本与效率 - 使用云服务(如Lambda GPU Cloud)启动一台8卡H100服务器,每小时成本约24美元,总训练时间约4小时,成本约100美元 [10][53] - 若将成本提升至约1000美元(训练约41.6小时),模型表现显著提升,能解决简单的数学/代码问题及多项选择题 [4] - 到监督微调阶段为止的总用时为3小时51分钟,总成本约为92.4美元 [53]
卡帕西8000行代码手搓ChatGPT,成本仅100美元,训练12小时CORE表现超越GPT-2,手把手教程来了
36氪·2025-10-14 11:40