train-llm-from-scratch

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

开源 🏷️完全免费 🔧 仅开源项目,无在线服务,需自行部署 开源模型 🍴 复刻 1828 🐛 待处理 2 👀 关注 93
访问官网 ↗ GitHub ↗
GitHub 星标 ★ 13172
维护状态 维护中
是否开源 开源
定价模式 🏷️完全免费 开源项目,MIT许可证,完全免费,可自行部署训练LLM。

项目预览

train-llm-from-scratch 项目界面预览图
图片来源:GitHub 官方仓库名片

项目数据

分类开源模型
开发团队FareedKhan-dev
定价模式🏷️完全免费
价格说明开源项目,MIT许可证,完全免费,可自行部署训练LLM。
访问状态🔧 仅开源项目,无在线服务,需自行部署
是否开源是
开源协议MIT
主要语言Python
技术栈/模型gemini,large-language-models,llm,openai,training,transformers
GitHub 星标★ 13172
上线时间2025-01-12 00:00:00
代码更新2026-10-02
仓库体积9.1 MB
本站数据更新2026-11-09
维护状态维护中
收录时间2026-08-09
浏览次数8

项目介绍

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

Star 增长趋势

本站每日记录该项目 GitHub 星标变化,观测越久曲线越完整

数据来源:GitHub API 逐日快照 · 收录于 2026-08-09 · 当前星标 ★ 13172

使用教程

难度:进阶 约 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
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···

★ 713 2026-09-15
miles 开源

企业级 RL 后训练框架,让大模型和多模态模型快速做强化微调

Miles is an enterprise-facing reinforcement learning framework for LLM and VLM post-···

★ 3284 2026-10-07
CausalPFN 开源

用上下文学习,秒级估算因果效应,告别复杂建模

CausalPFN: Amortized Causal Effect Estimation via In-Context Learning

★ 137 2026-08-09
UniRL 开源

一套框架搞定多种数据训练,强化学习不再各搞各的

UniRL is a Framework for Unified Multimodal Model Reinforcement Learning

★ 1045 2026-08-09
SVD-LLM 开源

用SVD给大模型瘦身,压缩后照样能打

[ICLR 2025] SVD-LLM & [NAACL 2025] SVD-LLM V2

★ 310 2026-08-09
OpenSeq2Seq 开源

用配置文件快速搭建语音识别、翻译和语音合成模型,支持多卡混合精度训练。

Toolkit for efficient experimentation with Speech Recognition, Text2Speech and NLP

★ 1560 2026-08-09
MirrorFlow 开源

对话喂出来的数字分身,越聊越像你自己。

从对话数据到训练:数字分身 + 模型蒸馏 From Dialogue Data to Training Closed-Loop: D···

★ 73 2026-08-09
aikit 开源

一条命令微调并部署开源大模型,省去繁琐工程配置。

️ Fine-tune, build, and deploy open-source LLMs easily!

★ 543 2026-08-09
jeo 开源

用 JAX 快速训练遥感影像模型

Jeo: Jax model training lib for Earth Observation

★ 172 2026-10-31