
一个仓库零框架依赖train-llm-from-scratch如何让训练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-scratchtrain-llm-from-scratch 是一个用纯 PyTorch 手写的 LLM 训练项目不依赖trl、peft、transformers等任何大模型框架从下载语料、训练基础模型一路做到 SFT、奖励模型、PPO、DPO、GRPO 对齐与推理对话全部算法逐行手写。哪怕你只有一张免费 Colab T4 显卡也能用它从零训出一个 13M 参数的小语言模型并完整走通对齐流程。️ 一个仓库覆盖完整 LLM 训练流水线这个仓库把训练 LLM拆成了一条可独立运行、又可一键串联的流水线原始文本 → 分词 → Transformer → 基础模型 基础模型 → SFT → 奖励模型 → {PPO, DPO} → GRPO → 评估 聊天每个阶段都对应 scripts/ 下一个独立脚本配置集中在 configs/ 的 JSON 文件里每个阶段一份支持命令行覆盖任意字段想快速验证还有 configs/smoke/ 下的小模型配置几秒就能跑完一个完整阶段。 为什么零框架依赖是它最大的卖点大多数 LLM 训练教程要么用现成框架黑盒式调用要么只讲预训练不碰对齐。这个项目两条路都不走核心依赖极简模型与数据路径只需要torch、numpy、tiktoken、h5py、tqdm等少数几个包见 pyproject.tomltrl/peft/transformers一概不用每个算法可读可改SFT 的 loss mask、Bradley-Terry 奖励、PPO 的 GAE 与 clip、GRPO 的组相对优势都是几十行内的独立函数全部位于 src/post_training/单卡可跑13M 模型在免费 GPU 上即可训练显存不够时预训练脚本支持--amp --grad-checkpointing --grad-accum省显存参数。对想真正搞懂 LLM 训练内部机制的人来说能读懂的每一行比能跑起来的黑盒值钱得多。 三步快速上手克隆、安装、开训第 1 步克隆仓库git clone https://gitcode.com/GitHub_Trending/tr/train-llm-from-scratch cd train-llm-from-scratch第 2 步安装可编辑模式省去手动设置 PYTHONPATHpip install -e .[train] # 训练 数据下载UI 用户装 .[ui]第 3 步先跑冒烟测试再正式训练python tests/test_post_training_smoke.py # CPU 上验证核心数学 python scripts/train_sft.py --config configs/smoke/sft.json # 迷你模型完整训练确认环境无误后用 config/config.py 里的 13M 小配置跑第一个预训练python scripts/train_transformer.py完整命令清单可参考 docs/howto/commands.md。 数据准备四条流水线并行就绪模型只认识整数所以第一步永远是文本 → token id → 落盘。这个项目一次性为四个阶段准备好数据预训练语料The Pile、SFT 指令数据Alpaca/Dolly/GSM8K、偏好对HH-RLHF/UltraFeedback、RL 数学题GSM8K。四条流水线各自独立、产物清晰分词采用 GPT-3 同款r50k_basetokenizerSFT 数据会额外生成 0/1 的loss mask只让模型学习助手回答部分而不复读提示词——这个细节在 src/post_training/chat_template.py 中实现。 预训练一条 loss 曲线讲完整个故事预训练是整条流水线中最耗时的一步随机取 token 窗口 → 预测下一个词 → 交叉熵算误差 → 反向传播更新。仓库提供两条路径教学版scripts/train_transformer.py单卡、最简代码适合理解原理实战版scripts/pretrain_base.pyDDP 多卡、bf16、梯度累积、余弦学习率调度、断点续训一个命令从 1 卡切到 N 卡。作者在 2×L40 上训练的 77M 模型loss 从 11.14接近均匀猜测的 ln(50304)≈10.83一路降到 3.7 左右这就是模型把语言模式压缩进权重的过程 模型本体用四个小零件拼出 TransformerTransformer 作为一坨代码看着吓人仓库把它拆成四块每块都是独立的nn.Modulesrc/models/mlp.py —— 单 token 的思考前馈网络src/models/attention.py —— 单头与多头注意力因果掩码让它成为语言模型src/models/transformer_block.py —— 注意力 MLP 残差连接src/models/transformer.py —— 嵌入、位置编码、堆叠的 Block 与 lm_head。整个后训练体系只在这个模型上加了一个forward_hidden方法奖励头、价值头全部外挂组合一行原始模型代码都不用改——这就是作者所说的wrap, dont rewrite设计哲学。 后训练五连招从续写文本到推理助手基础模型只会续写对齐才让它会答题。五个阶段共用同一个模型骨架只换数据和 loss阶段作用核心代码SFT学会指令格式与think/answer结构src/post_training/sft.py奖励模型学习人类偏好打分Bradley-Terrysrc/post_training/reward_model.pyDPO / ORPO / KTO免 RL 循环的偏好对齐src/post_training/dpo.pyPPO经典 RLHF 循环GAE clip KLsrc/post_training/ppo.pyGRPO / RLVRDeepSeek-R1 式可验证奖励推理src/post_training/grpo.pyPPO 一轮完整循环生成 rollout → 打分验证器或奖励模型→ 加 KL 惩罚 → GAE 估优势 → clip 更新GRPO 则干脆扔掉价值网络对同一道题采样一组答案用组内均值标准差当基线答对得分就强化——逻辑短到十几行训练完想一键串联全流程一条命令搞定 SFT → RM → DPO → PPO → GRPO → 评估表bash scripts/run_posttraining.sh 评估与聊天用同一个数字贯穿所有阶段项目用GSM8K 贪心准确率作为贯穿全阶段的唯一标尺出题 → 生成 → 从answer标签提取数字 → 对答案。同一条命令跑在任意 checkpoint 上Base、SFT、DPO、PPO、GRPO 的成绩一目了然想直接和模型说话scripts/chat.py 加载任意阶段的 checkpoint自动识别模型维度支持温度采样或贪心解码python scripts/chat.py --ckpt models/sft.pt --prompt What is 13 29? 配套文档与 Streamlit 控制面板仓库内置一套 MkDocs 文档站涵盖 Foundations分词、注意力、目标函数、优化、生成与每个阶段的理论 图解 源码对照本地mkdocs serve即可浏览源文件在 docs/不想敲命令启动 Streamlit 控制面板 ui/app.py九个页面分别对应 Data、Pretrain、SFT、Reward、DPO、PPO、GRPO、Evaluate、Chat填表即可一键启动并实时看 loss 曲线pip install -e .[ui] streamlit run ui/app.py 它适合谁学生从 13M 小模型起步每个代码块前面都有白话解释配合 docs/foundations/ 补课正好开发者所有命令、文件路径、真实运行输出都写在 README.md 和 POST_TRAINING.md 里可直接复制运行研究者后训练半程是重点——SFT、Bradley-Terry 奖励模型、PPOGAE、DPO/ORPO/KTO、GRPO 全部从零实现且训练在真实公开数据集上指标可复现。零框架、单 GPU、全链路可跑通——这就是 train-llm-from-scratch 把训练 LLM 很难变成训练 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),仅供参考