ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

train-llm-from-scratch 图表体系:手绘风格 Mermaid 架构图的制作、配色与再生成全指南

train-llm-from-scratch 图表体系:手绘风格 Mermaid 架构图的制作、配色与再生成全指南 train-llm-from-scratch 图表体系手绘风格 Mermaid 架构图的制作、配色与再生成全指南【免费下载链接】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本指南以train-llm-from-scratch仓库的 docs/diagrams/README.md 为蓝本系统讲解这套覆盖「数据 → 预训练 → SFT → 奖励模型 → DPO/PPO/GRPO → 评估 → 推理」全流程的彩色编码、手绘风格 Mermaid 架构图体系为什么放弃 GitHub 的实时渲染而改用预渲染 PNG、源文件与产物如何组织、如何一键重新生成以及每张图背后的mmd源码与配色规范。读完你不仅能看懂这套图还能在自己修改文档后正确地重新渲染出同款风格的架构图。为什么是「手绘风格 预渲染 PNG」仓库的文档图表不是普通的 bash bash scripts/render_diagrams.sh该脚本会把**每一个** src/*.mmd 重新渲染为 docs/diagrams/name.png随后文档中嵌入的图片自动更新。 ### 运行前置条件 脚本依赖两样东西见 [scripts/render_diagrams.sh](https://link.gitcode.com/i/59b842da270b8b21ff8769d46b4b4b69) 顶部注释 - **Mermaid CLI**npm i -g mermaid-js/mermaid-cli即命令 mmdc需要 Node.js 18 - **一个 Chrome/Chromium** 用于无头渲染。脚本默认在 /usr/bin/google-chrome-stable 查找浏览器如果你的 Chrome 不在这个位置需要通过环境变量指定 bash CHROME/path/to/chrome bash scripts/render_diagrams.sh脚本内部实现解读从源码看render_diagrams.sh的实现非常精简关键逻辑如下SRCdocs/diagrams/src OUTdocs/diagrams CHROME${CHROME:-/usr/bin/google-chrome-stable}脚本会先用mktemp生成一个临时 Puppeteer 配置文件把executablePath指向检测到的 Chrome并追加无头渲染所需的参数{executablePath:CHROME,args:[--no-sandbox,--disable-gpu,--disable-dev-shm-usage]}然后对src/下每个.mmd调用mmdcmmdc -p $PP -i $m -o $OUT/$base.png -b white -s 2其中-b white指定白底、-s 2表示以2 倍分辨率2x输出 PNG。高分辨率输出正是为了让图在任何查看器GitHub、VS Code 预览中都清晰锐利这也是选择 PNG 而非 SVG 的另一层考量。与 README 图表的生成方式对照docs/diagrams/面向 MkDocs 文档站而顶层 README 使用的images/图表则由 images/make_diagrams.py 程序化生成。该脚本把每张图的 Mermaid 源码定义在 Python 字典DIAGRAMS中再统一追加一份共享调色板PALETTE渲染命令同样走npx mermaid-js/mermaid-clifor f in *.mmd; do npx -y mermaid-js/mermaid-cli -i $f -o ${f%.mmd}.png -c mmdc.json -p puppeteer.json -b white -s 3 done可以看到两条管线render_diagrams.sh与make_diagrams.py的思路完全一致源码与产物分离、共享调色板、CLI 批量渲染只是渲染倍率与目标目录不同。两份配套配置文件也直接躺在仓库里images/mmdc.json —— Mermaid CLI 的样式配置定义了look: handDrawn、theme: base以及Comic Sans MS, Comic Sans, Chalkboard SE, cursive字体族、primaryColor: #ffe8a3模型黄、primaryBorderColor: #e8730c等主题变量还有 flowchart 布局参数htmlLabels: true、curve: basis、nodeSpacing: 22、rankSpacing: 55images/puppeteer.json —— Puppeteer 的无头浏览器参数--no-sandbox --disable-setuid-sandbox。颜色图例一张图读懂训练管线这套图表最核心的设计是按语义统一着色。docs/diagrams/README.md给出的官方图例如下颜色语义 绿data / corpus原始语料 蓝preprocessing预处理步骤teal 青storage磁盘存储HDF5 / JSONL 黄model / training loop模型或训练循环 橙RL / reward强化学习与奖励 红loss / objective损失 / 目标函数 紫evaluation评估⬜ 灰checkpoint保存的检查点这一图例与顶层 README.md 中「Every diagram in this README is colored the same way」的说明完全呼应绿色是原始数据、teal 是磁盘上已分词的存储、蓝色是处理步骤、黄色是模型/训练、橙色是 RL 与奖励、红色是损失、灰色是检查点、紫色是最终输出或评估。图例并非口头约定而是通过 Mermaid 的classDef在每份.mmd源码中硬编码落地的。以总览图 docs/diagrams/src/00_overview.mmd 为例文件末尾统一声明每张图都通过:::data、:::model、:::rl、:::ckpt、:::eval这样的节点标记挂到对应类别上。make_diagrams.py中的共享PALETTE进一步扩展了这套体系store存储、proc处理、loss损失等类别也都有各自固定的填充色与描边色保证 README 图与文档站图风格统一、可跨文档对照阅读。十张图表源码速览从数据到推理的「图说」src/下的每份.mmd都把某一段训练流程压缩成一张可读的流程图与仓库代码一一对应00_overview.mmd端到端总览 ——The Pile (9.8B tokens) → Pretrain (~400M base) → base_pretrained.pt → SFT (Alpaca · Dolly · GSM8K) → sft.pt → {Reward Model (Bradley-Terry), DPO/ORPO/KTO, PPO (GAE clip KL), GRPO (group-relative)} → GSM8K eval chat这正是 README.md 中「raw text → tokens → Transformer → base → SFT → RM → {PPO, DPO} → GRPO → eval/chat」路径的图形化01_data_pipeline.mmd四条数据流并行 —— Pile 流式解压 tiktoken r50k_base编码为pile_train.h5扁平 token 数组Alpaca/Dolly/GSM8K 渲染聊天模板并掩码 prompt 后打包为sft_packed.h5HH-RLHF/UltraFeedback 拆分为preferences.jsonlGSM8K/arithmetic 抽取数值答案得到rl_prompts.jsonl02_pretraining.mmd预训练循环 ——get_batch_iterator随机窗口采样 → bf16 前向 → 交叉熵 → 反向乘 grad_accum→ 梯度裁剪 1.0 → AdamW 步进cosine LR warmup每 1000 步存base_pretrained.pt与 scripts/pretrain_base.py 的训练主循环一致03_sft.mmdSFT —— 从sft_packed.h5读 tokens loss_mask模型前向后做「shift 预测 t1」的逐 token 交叉熵loss_mask 1仅落在 assistant token 上最终只对掩码 token 求均值对应 src/post_training/sft.py 的sft_loss04_reward_model.mmd奖励模型 —— 偏好对经过 SFT 骨干的forward_hidden取最后一个真实 token过Linear→1奖励头得到r_chosen/r_rejected用-log σ(r_chosen − r_rejected)Bradley-Terry训练对应 src/post_training/reward_train.py05_dpo.mmdDPO —— 同一偏好对分别过可训练策略与冻结的 SFT 参考副本计算序列对数概率后套-log σ(β·Δlogratios)无需奖励模型与 RL 循环对应 src/post_training/dpo.py06_ppo.mmdPPO —— GSM8K prompt 生成 rollout含 log-probs用 verifier 或奖励模型打分叠加逐 token 的 KL-to-ref 惩罚经compute_gae得到优势与回报再做 K 个 epoch 的裁剪策略 价值更新价值头通过 src/post_training/value_head.py 挂载07_grpo.mmdGRPO —— 每个 prompt 采样一整组 G 条回答逐条过 verifier用组内(r − mean) / std作为组相对优势再套裁剪代理目标 k3 KL 惩罚更新策略丢弃价值网络对应 src/post_training/grpo.py08_evaluation.mmd评估 —— 任意阶段检查点做贪心批量生成extract_answer从answer标签或####、最后一个数字抽取数值与 gold 比对汇总 Base→SFT→DPO→PPO→GRPO 的 GSM8K 准确率对应 scripts/eval_post_training.py09_inference.mmd推理 —— 从检查点读取模型维度判断是 instruction 模型套聊天模板还是 base 模型原始续写再按 temperature / top-p / greedy 生成并解码为回复对应 src/post_training/inference.py 与 scripts/chat.py。实践要点与可复现性综合原文档与源码维护这套图表体系的实践要点可归纳为四条只改源码不手改图片。所有编辑都发生在docs/diagrams/src/*.mmd渲染图一律由脚本产出避免手工修图导致的「图源与图片不一致」统一在仓库根目录触发渲染。bash scripts/render_diagrams.sh内部会cd $(dirname $0)/..回到仓库根保证相对路径稳定环境只需配一次。Node.js ≥ 18 mermaid-js/mermaid-cli 一个 Chrome/ChromiumChrome 不在默认路径时用CHROME...覆盖Puppeteer 的沙箱参数--no-sandbox等已内置于脚本容器 / root 环境下也可直接运行颜色规范是硬约束。新增图表时节点必须通过:::data / :::proc / :::store / :::model / :::rl / :::loss / :::ckpt / :::eval挂到既有类别上保持全仓库README 与文档站视觉语义一致。这套「手绘 Mermaid 预渲染 PNG 一键脚本」的管线让 train-llm-from-scratch 从数据下载到文本生成的每一阶段都有一张与代码同步、可复现的架构图既是教学文档的组成部分也直接反映了 scripts/ 与 src/post_training/ 各训练脚本的真实调用链。【免费下载链接】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),仅供参考
返回列表