低成本实现最佳ChatGPT全栈大型语言模型平替 nanochatnanochat 是以极低成本(100美元)实现最佳ChatGPT的全栈大型语言模型(LLM),提供一个单一、简洁、可修改且依赖轻量级的代码库,涵盖了LLM从分词、预训练、微调、评估到推理和通过Web UI提供服务的完整生命周期。nanochat 能端到端的运行脚本(如speedrun.sh),让用户可以在单个高性能GPU节点上,通过大约四小时的训练,部署一个可供交互的类ChatGPT模型,最后生成包含详细性能指标的评估报告。
nanochat 模块功能:
nanochat:核心代码目录,支持多GPU并行推理,提升模型运行效率。
rustbpe:负责tokenization(分词)相关功能,是模型处理文本的基础模块。
scripts:存放各类脚本文件,比如修复token解码问题的脚本,保障模型文本处理准确性。
tasks与tests:分别用于任务定义和代码测试,其中tests目录下有针对分词器的测试用例。
关键脚本:speedrun.sh用于快速启动训练流程,run1000.sh则针对1000美元级别的模型训练,还有pyproject.toml、uv.lock等配置文件,管理项目依赖。
想体验nanochat的功能,按以下步骤操作,整个过程在8XH100 GPU节点上约需4小时,成本可控:
1、准备环境:从云服务商(如Lambda)租用8XH100 GPU节点,确保节点能正常连接。
2、启动训练:
• 直接运行训练脚本:bash speedrun.sh
• 若需后台运行并记录日志,先创建screen会话:screen -L -Logfile speedrun.log -S speedrun bash speedrun.sh。不熟悉screen操作可参考相关速查手册,按Ctrl-a d可退出会话,通过tail speedrun.log查看训练进度。
3、启动网页交互:训练完成后,先激活本地uv虚拟环境(执行source .venv/bin/activate),再运行python -m scripts.chat_web启动服务。
4、访问交互界面:根据节点信息访问指定URL,比如在Lambda平台,用节点公网IP加端口的形式(如http://209.20.xxx.xxx:8000/),就能像使用ChatGPT一样与模型对话,让它写故事、诗歌,或是解答各类问题。
训练结束后,项目目录会生成report.md文件,包含模型的评估数据和指标总结,比如字符数、行数、文件数、近似token数等基础信息,还有不同阶段(BASE、MID、SFT、RL)的各项指标得分,示例如下:
| 指标 | BASE | MID | SFT | RL |
|---|---|---|---|---|
| CORE | 0.2219 | - | - | - |
| ARC-Challenge | - | 0.2875 | 0.2807 | - |
| ARC-Easy | - | 0.3561 | 0.3876 | - |
| GSM8K | - | 0.0250 | 0.0455 | 0.0758 |
| HumanEval | - | 0.0671 | 0.0854 | - |
| MMLU | - | 0.3111 | 0.3151 | - |
| ChatCORE | - | 0.0730 | 0.0884 | - |
默认情况下,表格可能缺少RL阶段的部分数据,完整信息可查看项目仓库讨论区的详细说明文档。
100美元级别的模型性能有限,若需更强性能,可尝试更高预算的模型,目前有两个可选方向:
300美元级别(d26模型):训练时长约12小时,性能略优于GPT-2的CORE得分。
1000美元级别:训练时长约41.6小时,性能进一步提升。
这两个级别的模型暂未完全整合到主分支,若要基于speedrun.sh脚本调整训练参数,只需修改3处内容:
1、预训练阶段:下载更多数据分片,确保训练数据充足。
2、参数计算:通过python -m nanochat.dataset -n 450 &调整参数数量相关配置。
3、训练命令:
• 预训练:torchrun --standalone --nproc_per_node=8 -m scripts.base_train -- --depth=26 --device_batch_size=16
• 中期训练:torchrun --standalone --nproc_per_node=8 -m scripts.mid_train -- --device_batch_size=16
调整时需注意两点:一是保证数据分片数量足够,避免模型重复使用同一数据集导致学习效率下降;二是根据GPU显存调整device_batch_size,若出现显存不足,可从默认的32逐步降低至16、8、4、2甚至1。
nanochat对计算环境的兼容性较强,不同硬件配置都能运行:
8XA100 GPU节点:可正常运行,速度比8XH100稍慢。
单GPU设备:去掉命令中的torchrun,代码会自动启用梯度累积,但训练时间会增加8倍左右。
显存小于80GB的GPU:需调整超参数,重点降低device_batch_size,直至模型能正常运行。
其他计算架构(xpu、mps等):代码基于PyTorch开发,理论上支持这些架构,但需自行调整部分代码才能运行。
可将仓库文件打包后,用大语言模型辅助解答问题。推荐用files-to-prompt工具打包,命令为files-to-prompt 、-e py -e md -e rs -e html -e toml -e sh --ignore "*target*" --cxml > packaged.txt,生成的packaged.txt约330KB,包含45个文件共8000行代码,方便导入模型分析。也能将GitHub仓库URL中的“github.com”替换为“deepwiki.com”,通过DeepWiki工具查询问题。
目前测试用例较少,重点覆盖分词器,运行python -m pytest tests/test_rustbpe.py -v -s就能执行测试。
AI学术写作助手:学术论文润色和语言优化工具
Gemini对话与提示管理扩展工具 Gemini Voyager
AI驱动的股票研究平台 Multi-Agent Investment Research Platform
AI驱动的加密货币自动化交易系统 open-nof1.ai
基于Next.js、AI SDK和Workflow DevKit构建的线索鉴定与人工审核代理工具 Lead Agent
XiaomiMiMo/MiMo-Audio-7B-Instruct模型微调工具MiMo-Audio-Training
基于DeepSeek-OCR模型的文档解析工具 DeepSeek-OCR Studio
AI-Trader:让多个AI模型在纳斯达克100股票市场中进行完全自主的零人工干预的竞争性交易
辅助软件开发任务和终端操作的命令行代理工具 Kimi CLI
AI 编码代理工具 deer-code,帮助开发者学习和构建智能的编码助手