不用trl、peft、transformers:train-llm-from-scratch的从零实现哲学 不用trl、peft、transformerstrain-llm-from-scratch的从零实现哲学【免费下载链接】train-llm-from-scratchA straightforward method for training your LLM, from downloading data to generating text.项目地址: https://gitcode.com/GitHub_Trending/tr/train-llm-from-scratchtrain-llm-from-scratch是一个纯粹用 PyTorch 手写的 LLM 训练项目不依赖trl、peft、transformers任何第三方大模型库从下载数据、分词、训练 Transformer一路做到 SFT、奖励模型、PPO、DPO、GRPO 对齐再到评测与对话——让你完整看懂一个从零训练大模型的全部细节。为什么坚持三大库都不用现在训练大模型的常规姿势是transformers建模型、peft做微调、trl跑强化学习。省事但代价是注意力、PPO 的 clip、DPO 的损失公式全藏在依赖库的黑盒里 版本一升级行为可能悄悄变化出问题很难定位 想改算法比如换掉 GRPO 的优势估计必须穿透三层封装。而 train-llm-from-scratch 的哲学很直接把每个算法摊开成几十行纯 PyTorch。GPT 风格的注意力就是 src/models/attention.py 里的一个类DPO 损失就是 src/post_training/dpo.py 里的一个函数——每一个都能一屏读完。核心思路一句话文本变成数字预测下一个 token然后不断更换数据和损失函数直到模型做出我们想要的行为。一张图看懂完整训练流水线从原始文本到对齐后的推理模型项目把所有阶段串成一条流水线四类数据各自预处理一次数据类型来源用途预训练文本The Pile训练基座模型指令数据Alpaca / Dolly / GSM8KSFT 指令微调偏好对HH-RLHF / UltraFeedback奖励模型与 DPORL 提示词GSM8K 算术题PPO / GRPO模型从头到尾只有一个同一个 Transformer 主干每个阶段只换数据 损失。这就是整个仓库最省心的设计。模型搭建从最小积木到完整 TransformerTransformer 被拆成四块小积木逐层拼装全部在 src/models/ 下MLP把 token 向量放大 4 倍再压回做逐 token 的思考单头注意力Query/Key/Value 三视图 因果掩码保证第 t 个位置看不到未来多头注意力多个头并行各学一种关系比如代词指代Transformer Block注意力 MLP 残差连接 LayerNorm堆叠 N 层。完整模型定义在 src/models/transformer.py嵌入层 → 位置编码 → Block 堆叠 → lm_head 投影到词表。仓库提供三档尺寸13M一张消费级显卡就能训、77M 教程基座、400M 后训练默认配置。关键哲学Wrap, dont rewrite包裹不重写后训练奖励模型、PPO、GRPO通常需要额外的标量头来读隐藏状态。常规做法是魔改模型结构而这里只做了一件事给 Transformer 增加一个 forward_hidden 方法返回最后一层 LayerNorm 之后的隐藏状态。奖励头、价值头、所有 RL 的 log-prob 计算都组合在这个方法外面src/models/的教学代码一行未动。加功能靠包裹不改写已有代码——这也是它敢号称从零却仍然可维护的原因。预训练一条下降的损失曲线讲完全部故事预训练循环非常朴素随机取一段 token → 每个位置预测下一个 → 交叉熵算错多少 → 反向传播 → 重复几千次。真实训练日志损失从 11.14接近随机猜的 ln(50304)≈10.83降到约 3.7两张 L40 上跑到每秒 13 万 token。脚本 scripts/pretrain_base.py 还内置了 DDP 多卡、bf16、梯度累积、余弦学习率与断点续训。后训练五个算法全是手写几十行对齐阶段是这套哲学最精彩的部分五种主流算法全部实现阶段核心机制源码位置SFT只对 assistant token 算损失loss masksrc/post_training/sft.py奖励模型Bradley-Terry 成对损失读最后一个 tokensrc/post_training/reward_train.pyDPO / ORPO / KTO隐式奖励比较绕开 RL 循环src/post_training/dpo.pyPPOGAE clip 策略损失 KL 惩罚src/post_training/ppo.pyGRPO组内相对优势无价值网络src/post_training/grpo.py以 GRPO 为例整个组优势估计就是 这几行把同一道题的 G 个采样答案归组减均值除标准差——比组内其他答案好多少就是它的优势。再配上 token 级 clip 代理损失和 k3 KL 惩罚DeepSeek-R1 风格的 RLVR 就完整了。PPO 的裁剪策略损失、DPO 的隐式奖励、Bradley-Terry 损失每一处都短到可以手推公式。快速上手三步跑通全链路git clone https://gitcode.com/GitHub_Trending/tr/train-llm-from-scratch cd train-llm-from-scratch pip install -e . # 装好 config/src/data_loader/ui配置体系是每阶段一个 JSON 命令行可覆盖任意字段config/post_training_config.py。不想逐阶段手动跑一条命令走完后训练全链路bash scripts/run_posttraining.sh # 多卡 NPROC1 bash scripts/run_posttraining.sh # 单卡想先花几秒验证环境每个阶段都有 configs/smoke/ 微型配置CPU 上秒级跑完比如python scripts/train_sft.py --config configs/smoke/sft.json。最后用python scripts/chat.py --ckpt models/grpo.pt直接和你的模型对话。文档站与配套资料项目自带一套 MkDocs 文档站docs/每个阶段都有独立深入页面理论、图解、真实代码、指标含义一应俱全建议先读 LLM Foundations 再进各阶段推荐阅读路线docs/README.md 也列了同样的顺序数据管线docs/01_data_pipeline.md预训练docs/02_pretraining.mdSFT → 奖励模型 → DPO → PPO → GRPO03 ~ 07评测与推理docs/08_evaluation.md、docs/09_inference.md后训练总览与实验结果POST_TRAINING.md官方文档站的数据管线示意与上图同源分辨率更高结语train-llm-from-scratch 的价值不在于训出多强的模型而在于让从零训练大模型这件事第一次变得可以逐行读懂同一个手写 Transformer换数据和损失就能走完预训练、SFT、PPO、DPO、GRPO 的完整对齐链路。如果你想在单张显卡上真正搞懂 LLM 是怎么练成的这是一个值得逐行读完的起点。【免费下载链接】train-llm-from-scratchA straightforward method for training your LLM, from downloading data to generating text.项目地址: https://gitcode.com/GitHub_Trending/tr/train-llm-from-scratch创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考