FareedKhan-dev/train-llm-from-scratch

A straightforward method for training your LLM, from downloading data to generating text.

解决的问题

该项目提供了一个使用 PyTorch 从零开始构建的完整、端到端的大语言模型(LLM)实现。它消除了对 transformers、trl 或 peft 等高级库的依赖,使用户能够通过纯 PyTorch 代码理解并实现 LLM 生命周期的每个阶段——从原始文本处理到对齐且具备推理能力的模型。

工作原理

该项目遵循一个线性流程,将原始数据转化为一个功能完整的助手:

  1. 数据准备:原始文本使用 tiktoken 或自定义 BPE 令牌化器进行分词,并存储在 HDF5 文件中。支持预训练文本、SFT 指令数据、奖励模型的偏好对以及强化学习提示。
  2. 模型架构:实现了基于「Attention is All You Need」的经典 Transformer,以及包含 RoPE、RMSNorm、SwiGLU、分组查询注意力(GQA)、专家混合(MoE)和 KV 缓存的现代解码器专用架构。
  3. 预训练:基于下一个词预测损失训练模型,生成基础模型。
  4. 后训练:通过一系列监督微调(SFT)、奖励建模和强化学习技术(包括 PPO、DPO、ORPO、KTO 和 GRPO)对基础模型进行优化。
  5. 推理:实现 top-k、top-p、min-p 采样技术、推测解码和 int8 权重,以实现高效生成。

适用人群

  • 学生:希望借助通俗易懂的解释和逐步代码学习 LLM 内部机制的人。
  • 开发者:希望在从笔记本电脑 CPU 到 A100 GPU 的各种硬件上运行脚本,训练从 369K 到数十亿参数的模型的人。
  • 研究人员:对在单一 Transformer 架构上手写实现 GRPO 和 PPO 等后训练算法感兴趣的人。

亮点

  • 零依赖核心:所有算法均用 PyTorch 手写实现,不依赖 transformers 或 peft。
  • 硬件灵活性:包含「笔记本电脑模式」,可在 CPU 上几分钟内训练小型模型。
  • 现代特性:实现了 RoPE、MoE 和 Muon 优化器等高级架构组件。
  • 全面的强化学习套件:从零开始实现多种对齐算法(DPO、PPO、GRPO 等)。
  • 内置工具:提供 Streamlit 控制面板、文档网站和基准测试脚本。

相关

  • 项目
  • 项目
  • 项目
  • Dispatch
  • 项目