train-llm-from-scratch

从数据到生成,手把手教你训练自己的大模型

这是一个从零开始训练大型语言模型(LLM)的完整教程与工具集,旨在帮助开发者理解并实践LLM训练的全流程。项目覆盖了从数据下载、预处理、分词器训练、模型架构设计、预训练、微调(包括指令微调和RLHF)到最终文本生成的所有关键步骤。它采用清晰、直接的方法,避免复杂抽象,让用户能够通过实际代码和详细文档,逐步构建自己的LLM。核心能力包括:提供可运行的训练脚本、支持多种模型架构(如GPT、Llama)、包含数据管道构建、以及详细的训练技巧和调参建议。该项目解决了初学者和中小团队在LLM训练中面临的知识门槛高、工程复杂、资源消耗大等问题,使得在有限硬件条件下也能进行实验和学习。

开源 free 开源模型
访问官网 ↗ GitHub ↗ 文档 ↗
GitHub 星标 ★ 10808
维护状态 维护中
是否开源
定价模式 free

项目数据

分类开源模型
开发团队FareedKhan-dev
所属国家
定价模式free
价格说明开源项目,MIT许可证,完全免费,可自行部署训练LLM。
访问状态
是否开源
开源协议MIT
主要语言Python
技术栈/模型gemini,large-language-models,llm,openai,training,transformers
GitHub 星标★ 10808
30天Star增速
HF 下载量
上线时间2025-01-12 00:00:00
最近更新2026-09-22 00:00:00
维护状态维护中
中文支持
访问方式
移动端支持
综合评分
收录时间2026-08-09
浏览次数6

使用教程

难度:进阶 约 10 分钟 部署方式:本地安装 7 步

环境要求

  • Python 环境与 pip(README 未指定具体版本)
  • PyTorch(项目用原生 PyTorch 手写实现 Transformer)
  • git(用于克隆仓库)
  • 单块 GPU 即可训练百万至十亿参数模型,冒烟测试可在 CPU 上运行

安装与启动步骤

  1. 1克隆仓库

    把项目源码克隆到本地并进入项目目录,后续所有命令都在该目录下执行。

    git clone https://github.com/FareedKhan-dev/train-llm-from-scratch.git
    cd train-llm-from-scratch
  2. 2可编辑模式安装

    以 editable 模式安装后,config、src、data_loader、ui 会自动进入导入路径,无需手动设置 PYTHONPATH。

    pip install -e .
  3. 3安装可选依赖

    按需选择:train 用于下载数据与 wandb 日志,ui 用于控制面板,docs 用于文档站点,all 装全部。

    pip install -e ".[all]"
  4. 4了解两套配置

    传统预训练用 config/config.py 的 Python 常量;其余阶段用 configs/ 下的 JSON,可命令行覆盖字段。

  5. 5跑冒烟测试

    验证核心数学逻辑,几秒内在 CPU 上跑完,用来快速确认环境安装无误。

    python tests/test_post_training_smoke.py
  6. 6单阶段微调试跑

    用 smoke 配置跑一次极小的真实 SFT 训练,模型被缩小,几秒内即可完成。

    python scripts/train_sft.py --config configs/smoke/sft.json
  7. 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
NPROCtorchrun 使用的进程/显卡数量,设为 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

项目介绍

train-llm-from-scratch 是模型训练领域的开源项目,由 FareedKhan-dev 开发,2025 年首次发布。

在全站 13,014 个收录项目中,它的 GitHub 星标数(10,808)位列前 5%,在模型训练分类的 518 个项目里位列前 4%。

近 41 天,它的 GitHub 星标从 9,069 增加到 10,808,净增 1,739。

项目仍在小幅维护中,最近一次代码更新于 2026-09-22。MIT许可证,完全免费,可自行部署训练LLM。

它主要面向的使用场景是:学术研究:快速搭建LLM训练实验环境,验证新想法。同类可对比的替代方案包括 Karpathy/nanoGPT、Hugging Face Transformers、Lit-Parrot。

上一篇:ludwig

下一篇:bitsandbytes

同类项目推荐

Long-RL 开源

让强化学习轻松驾驭超长序列,训练更稳更快

Long-RL: Scaling RL to Long Sequences (NeurIPS 2025)

★ 729 2026-08-09
TPA 开源

把注意力复杂度从平方降到线性,长序列不再卡顿

[NeurIPS 2025 Spotlight] TPA: Tensor ProducT ATTenTion Transformer (https://arxiv.or···

★ 463 2026-08-09
minimind 开源

两小时造出你的小模型,练手入门不求人

Train a 64M-parameter LLM from scratch in just 2h!

★ 62178 2026-08-09
pruna 开源

一键优化 AI 模型,推理提速又省资源。

Pruna is a model optimization framework built for developers, enabling you to delive···

★ 1286 2026-08-13