项目预览
项目数据
项目介绍
Star 增长趋势
本站每日记录该项目 GitHub 星标变化,观测越久曲线越完整
数据来源:GitHub API 逐日快照 · 收录于 2026-08-09 · 当前星标 ★ 13172
使用教程
环境要求
- Python 环境与 pip(README 未指定具体版本)
- PyTorch(项目用原生 PyTorch 手写实现 Transformer)
- git(用于克隆仓库)
- 单块 GPU 即可训练百万至十亿参数模型,冒烟测试可在 CPU 上运行
安装与启动步骤
-
1克隆仓库
把项目源码克隆到本地并进入项目目录,后续所有命令都在该目录下执行。
git clone https://github.com/FareedKhan-dev/train-llm-from-scratch.git cd train-llm-from-scratch -
2可编辑模式安装
以 editable 模式安装后,config、src、data_loader、ui 会自动进入导入路径,无需手动设置 PYTHONPATH。
pip install -e . -
3安装可选依赖
按需选择:train 用于下载数据与 wandb 日志,ui 用于控制面板,docs 用于文档站点,all 装全部。
pip install -e ".[all]" -
4了解两套配置
传统预训练用 config/config.py 的 Python 常量;其余阶段用 configs/ 下的 JSON,可命令行覆盖字段。
-
5跑冒烟测试
验证核心数学逻辑,几秒内在 CPU 上跑完,用来快速确认环境安装无误。
python tests/test_post_training_smoke.py -
6单阶段微调试跑
用 smoke 配置跑一次极小的真实 SFT 训练,模型被缩小,几秒内即可完成。
python scripts/train_sft.py --config configs/smoke/sft.json -
7运行完整后训练链
base 预训练与数据准备好后,一键跑完整个后训练流程并打印跨阶段对比表;单卡加 NPROC=1。
bash scripts/run_posttraining.sh NPROC=1 bash scripts/run_posttraining.sh
关键配置
| 配置项 | 必填 | 说明 | 示例 |
|---|---|---|---|
config/config.py | 否 | 传统预训练脚本的简单配置,为纯 Python 常量 | scripts/train_transformer.py 使用 |
configs/*.json | 是 | 驱动预训练、SFT、奖励模型、DPO、PPO、GRPO 等各阶段的 JSON 配置 | configs/sft.json |
configs/smoke/*.json | 否 | 每个阶段的极小模型配置,用于几秒内完成快速检查 | configs/smoke/sft.json |
lr | 否 | 学习率,可在命令行覆盖 JSON 中的同名字段 | --lr 2e-5 |
batch_size | 否 | 批大小,可在命令行覆盖 JSON 中的同名字段 | --batch_size 16 |
NPROC | 否 | torchrun 使用的进程/显卡数量,设为 1 即单卡运行 | NPROC=1 |
如何确认成功
冒烟测试 python tests/test_post_training_smoke.py 在 CPU 上几秒内无报错跑完,即表示环境安装成功。
常见问题
Q:没有 GPU 可以跟着做吗?
A:可以。先用 tests/test_post_training_smoke.py 和 configs/smoke/ 下的配置,几秒内在 CPU 上即可完成一次检查;正式训练仍建议用单块 GPU。
Q:还需要手动设置 PYTHONPATH 吗?
A:不需要。README 说明 editable 安装已把 config、src、data_loader、ui 放入导入路径。
Q:为什么代码里没有 trl、peft、transformers?
A:本项目刻意不用这些库,所有算法都用原生 PyTorch 手写,便于理解每一步原理。
Q:该改哪个配置文件?
A:传统预训练改 config/config.py;预训练更大的 base、SFT、奖励、DPO、PPO、GRPO 则改 configs/ 下对应的 JSON 文件。
Q:想改超参必须改 JSON 吗?
A:不必。JSON 中的任意字段都能在命令行覆盖,例如加 --lr 2e-5 --batch_size 16。
注意事项
- 克隆后必须先 cd 进入 train-llm-from-scratch 目录再执行安装与训练命令。
- run_posttraining.sh 默认通过 torchrun 使用两块 GPU,单卡请加 NPROC=1。
- configs/smoke/ 会缩小模型规模,适合快速验证流程,不能代表真实训练效果。
- README 未给出具体 Python 版本与依赖版本号,以实际安装结果为准。
核心亮点
- 提供从数据下载到文本生成的完整端到端训练流程,步骤清晰可复现
- 代码结构模块化,易于理解和修改,适合学习研究
- 包含详细的文档和注释,降低了LLM训练的学习门槛
不足之处
- 训练LLM需要大量计算资源,项目可能未提供分布式训练优化方案
- 文档/社区待观察
适用场景
- 学术研究:快速搭建LLM训练实验环境,验证新想法
- 教育培训:作为课程项目,让学生动手实践LLM训练全流程
- 小型团队:在有限算力下,训练垂直领域专用小模型
替代项目
Karpathy/nanoGPT、Hugging Face Transformers、Lit-Parrot
上一篇:ludwig
下一篇:bitsandbytes
同类项目推荐
Trinity-RFT
开源
搭好LLM强化微调流水线,换算法扩规模不用重写
Trinity-RFT is a general-purpose, flexible and scalable framework designed for reinf···
miles
开源
企业级 RL 后训练框架,让大模型和多模态模型快速做强化微调
Miles is an enterprise-facing reinforcement learning framework for LLM and VLM post-···
CausalPFN
开源
用上下文学习,秒级估算因果效应,告别复杂建模
CausalPFN: Amortized Causal Effect Estimation via In-Context Learning
UniRL
开源
一套框架搞定多种数据训练,强化学习不再各搞各的
UniRL is a Framework for Unified Multimodal Model Reinforcement Learning
SVD-LLM
开源
用SVD给大模型瘦身,压缩后照样能打
[ICLR 2025] SVD-LLM & [NAACL 2025] SVD-LLM V2
OpenSeq2Seq
开源
用配置文件快速搭建语音识别、翻译和语音合成模型,支持多卡混合精度训练。
Toolkit for efficient experimentation with Speech Recognition, Text2Speech and NLP
MirrorFlow
开源
对话喂出来的数字分身,越聊越像你自己。
从对话数据到训练:数字分身 + 模型蒸馏 From Dialogue Data to Training Closed-Loop: D···
aikit
开源
一条命令微调并部署开源大模型,省去繁琐工程配置。
️ Fine-tune, build, and deploy open-source LLMs easily!
jeo
开源
用 JAX 快速训练遥感影像模型
Jeo: Jax model training lib for Earth Observation
