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 生命周期的每个阶段——从原始文本处理到对齐且具备推理能力的模型。
工作原理
该项目遵循一个线性流程,将原始数据转化为一个功能完整的助手:
- 数据准备:原始文本使用
tiktoken或自定义 BPE 令牌化器进行分词,并存储在 HDF5 文件中。支持预训练文本、SFT 指令数据、奖励模型的偏好对以及强化学习提示。 - 模型架构:实现了基于「Attention is All You Need」的经典 Transformer,以及包含 RoPE、RMSNorm、SwiGLU、分组查询注意力(GQA)、专家混合(MoE)和 KV 缓存的现代解码器专用架构。
- 预训练:基于下一个词预测损失训练模型,生成基础模型。
- 后训练:通过一系列监督微调(SFT)、奖励建模和强化学习技术(包括 PPO、DPO、ORPO、KTO 和 GRPO)对基础模型进行优化。
- 推理:实现 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
- 项目